/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Loginsystem uden cookies
Fra : Dennis Andersen


Dato : 11-06-01 16:19

Hej allesammen,

Jeg er ved at lave en hjemmeside hvor det skal være muligt at
oprette sig som bruger for at få adgang til udvidede funktioner.

Før jeg går i gang med at lave loginsystemet skal jeg
selvfølgelig først finde ud af hvordan jeg vil lave det. Det er
her mit problem opstår...

Jeg vil gerne lave et loginsystem der ikke kræver cookies og jeg
vil også gerne undgå sessionid's i URL'erne.

Er der nogen der har et forslag til hvordan jeg laver dette?

Jeg har ikke adgang til .htaccess.

--
Med venlig hilsen
Dennis Andersen

 
 
Jakob Andersen (11-06-2001)
Kommentar
Fra : Jakob Andersen


Dato : 11-06-01 23:09

"Dennis Andersen" <deniande@12move.dk> wrote in message
news:9g3er8$2alt$1@news.cybercity.dk...
> Jeg vil gerne lave et loginsystem der ikke kræver cookies og jeg
> vil også gerne undgå sessionid's i URL'erne.
>
> Er der nogen der har et forslag til hvordan jeg laver dette?

IP adresser er vist den eneste løsning her.

Du slår brugernavn og password op når en bruger logger ind, hvis disse er
korrekte smides IPen i en tabel over brugere sådan her:

Insert into tblUsers(ip,tid) values([brugerens ip], [tiden nu])

efter x minutter slettes denne post så igen hvis brugen ikke har været på
en af side hvor du bruger en sætning som denne(Pesudo):

SELECT ip FROM tblUsers WHERE ip = [brugerens ip nummer.]

Og hvis brugeren eksisterer forlænger du så hans frist
UPDATE tblUsers SET tid = [tidspunktet nu]

Og så kører du enten vha. cron eller f.eks. hver gang en bruger går ind på
din forside en SQL sætning som denne:

DELETE FROM tblUsers WHERE tid < [tid - 15min]

Ovenstårnde er alt sammen Psudo kode, du skal jo også tænke lidt selv..

--
Jakob Andersen
FAQ for webdesign gruppen på
<http://www.usenet.dk/oss/dk.edb.internet.webdesign>
"Det er rart at være vigtig, men det er vigtigere at være rar "



Martin Højriis Krist~ (11-06-2001)
Kommentar
Fra : Martin Højriis Krist~


Dato : 11-06-01 23:19

"Jakob Andersen" <jakob@andersen.as> skrev i en meddelelse
news:9g3fqc$d0u$1@sunsite.dk...
> IP adresser er vist den eneste løsning her.

NAT vil være et stort problem her.
Hvis jeg logger ind kan alle fra fw1.inet.tele.dk komme ind

--
Med Venlig Hilsen

Martin Højriis Kristensen
Svar bedes baseret på RFC1855
Jeg repræsenterer med denne udtalelse mig selv og ikke TDC Internet


Nezar Nielsen (11-06-2001)
Kommentar
Fra : Nezar Nielsen


Dato : 11-06-01 23:32

"Martin Højriis Kristensen" <hoejriis@SLETDETTEiname.com> wrote in message
news:9g3g32$8j1$1@news.inet.tele.dk...
> > IP adresser er vist den eneste løsning her.
>
> NAT vil være et stort problem her.
> Hvis jeg logger ind kan alle fra fw1.inet.tele.dk komme ind
>

ja, hvis ikke der må overføres parametre i URL eller cookies, så kan det
ikke lade sig gøre at sikre det ordentligt, det nærmeste man kommer er nok
at lave en eller anden ting med noget MD5 af ip+useragent + evt. accept*,
men det er stadig noget snusk.

Hvorfor er det, at du ikke vil bruge cookies eller parametre i URLer?

--
Mvh. Nezar Nielsen
http://fez.dk/




Dennis Andersen (11-06-2001)
Kommentar
Fra : Dennis Andersen


Dato : 11-06-01 23:50

Nezar Nielsen skrev:

> ja, hvis ikke der må overføres parametre i URL eller cookies, så kan det
> ikke lade sig gøre at sikre det ordentligt, det nærmeste man kommer er nok
> at lave en eller anden ting med noget MD5 af ip+useragent + evt. accept*,
> men det er stadig noget snusk.

Ok. Jeg kan se at jeg nok bliver nødt til at bruge sessionid's
(gemt som cookies)...

> Hvorfor er det, at du ikke vil bruge cookies eller parametre i URLer?

Grunden til at jeg ikke ville bruge cookies er fordi at ikke alle
har slået dem til, og sessionid's er faktisk bare fordi det ikke
ser så godt ud med de lange "id's" i hver url. Så hvis der var en
anden måde at gøre det ville det jo være bedre.

Tak for alle svarene.

--
Med venlig hilsen
Dennis Andersen

Martin Højriis Krist~ (12-06-2001)
Kommentar
Fra : Martin Højriis Krist~


Dato : 12-06-01 08:41

"Nezar Nielsen" <tumpen@fez.dk> skrev i en meddelelse
news:NGbV6.4370$rs4.907930@news010.worldonline.dk...
> > > IP adresser er vist den eneste løsning her.
> > NAT vil være et stort problem her.
> ja, hvis ikke der må overføres parametre i URL eller cookies, så kan det
> ikke lade sig gøre at sikre det ordentligt, det nærmeste man kommer er nok
> at lave en eller anden ting med noget MD5 af ip+useragent + evt. accept*,

Man kunne benytte sig af:
http://www.comon.dk/20/view.asp?ID=8585

--
Med Venlig Hilsen

Martin Højriis Kristensen
Svar bedes baseret på RFC1855
Jeg repræsenterer med denne udtalelse mig selv og ikke TDC Internet


Jakob Andersen (11-06-2001)
Kommentar
Fra : Jakob Andersen


Dato : 11-06-01 23:25

"Martin Højriis Kristensen" <hoejriis@SLETDETTEiname.com> wrote in message
news:9g3g32$8j1$1@news.inet.tele.dk...
> NAT vil være et stort problem her.

Jeg sagde jo heller ikke det ville være en god løsning

--
Jakob Andersen
FAQ for webdesign gruppen på
<http://www.usenet.dk/oss/dk.edb.internet.webdesign>
"Det er rart at være vigtig, men det er vigtigere at være rar "



Jakob Færch (11-06-2001)
Kommentar
Fra : Jakob Færch


Dato : 11-06-01 23:38

In article <9g3g32$8j1$1@news.inet.tele.dk>,
"Martin Højriis Kristensen" <hoejriis@SLETDETTEiname.com> wrote:

> "Jakob Andersen" <jakob@andersen.as> skrev i en meddelelse
> news:9g3fqc$d0u$1@sunsite.dk...
> > IP adresser er vist den eneste løsning her.
>
> NAT vil være et stort problem her.
> Hvis jeg logger ind kan alle fra fw1.inet.tele.dk komme ind

- og hvis du ønsker bare antydningen af reel sikkerhed duer det heller
ikke at bruge IP-adresser: Det er alt, alt for let at forfalske sin IP.

/Jakob

Anders Johannsen (12-06-2001)
Kommentar
Fra : Anders Johannsen


Dato : 12-06-01 00:54

In article <9g3fqc$d0u$1@sunsite.dk>, "Jakob Andersen" <jakob@andersen.as>
wrote:

>> Er der nogen der har et forslag til hvordan jeg laver dette?
>
> IP adresser er vist den eneste løsning her.

Ikke den eneste, hvis man er lidt kreativ (og har kontrol over sin
server)

Sæt stjernealias på dns'en til din webserver

   *.johannsen.com    IN   A   194.239.148.42

Konfigurer din yndlingswebserver til at svare på eks. *.johannsen.com

Generer et unikt sessionid når sessionen starter (f.eks.
"4ddd9a08956dbb0ae7e503c35b4e3ba3") . Videresend derefter brugeren til

   http://4ddd9a08956dbb0ae7e503c35b4e3ba3.johannsen.com

Hvis du udelukkende bruger relative urls i din kan sessionid således
aflæses som

   list($sessid) = split($SERVER_NAME)

/A

Anders Johannsen (12-06-2001)
Kommentar
Fra : Anders Johannsen


Dato : 12-06-01 01:07

In article <20010612.015416.1760281936.610@uranos.pil.dk>, "Anders
Johannsen" <anders@ignition.dk> wrote:

>    list($sessid) = split($SERVER_NAME)

Korrektion:
   list($sessid) = explode('.', $SERVER_NAME)

/A

Jakob Færch (12-06-2001)
Kommentar
Fra : Jakob Færch


Dato : 12-06-01 08:10

In article <20010612.015416.1760281936.610@uranos.pil.dk>,
"Anders Johannsen" <anders@ignition.dk> wrote:

> In article <9g3fqc$d0u$1@sunsite.dk>, "Jakob Andersen" <jakob@andersen.as>
> wrote:
>
> >> Er der nogen der har et forslag til hvordan jeg laver dette?
> >
> > IP adresser er vist den eneste løsning her.
>
> Ikke den eneste, hvis man er lidt kreativ (og har kontrol over sin
> server)
>
> Sæt stjernealias på dns'en til din webserver
>
>    *.johannsen.com    IN   A   194.239.148.42
>
> Konfigurer din yndlingswebserver til at svare på eks. *.johannsen.com
>
> Generer et unikt sessionid når sessionen starter (f.eks.
> "4ddd9a08956dbb0ae7e503c35b4e3ba3") . Videresend derefter brugeren til
>
>    http://4ddd9a08956dbb0ae7e503c35b4e3ba3.johannsen.com

Det er overordentlig fikst fikst - men det oprindelige problem var netop
at _undgå_ sessions-id'er i URL'erne.
Om sessionsid'en indgår i hostname eller eller i query-string'en er vel
i den forbindelse lidt ligegyldigt

Jonas Delfs (12-06-2001)
Kommentar
Fra : Jonas Delfs


Dato : 12-06-01 16:27

"Anders Johannsen" <anders@ignition.dk> skrev i en meddelelse
news:20010612.015416.1760281936.610@uranos.pil.dk...

> hvis man er lidt kreativ (og har kontrol over sin
> server)
>
> Sæt stjernealias på dns'en til din webserver
>
> *.johannsen.com IN A 194.239.148.42
>
> Konfigurer din yndlingswebserver til at svare på eks. *.johannsen.com
>
> Generer et unikt sessionid når sessionen starter (f.eks.
> "4ddd9a08956dbb0ae7e503c35b4e3ba3") . Videresend derefter brugeren til
>
> http://4ddd9a08956dbb0ae7e503c35b4e3ba3.johannsen.com
>
> Hvis du udelukkende bruger relative urls i din kan sessionid således
> aflæses som
>
> list($sessid) = split($SERVER_NAME)

Rigtig fiks løsning.
Jeg vil tillade mig at brygge lidt videre på den:
Man vælger Apache som webserver, og smider dette i sin .htaccess:

php_value session.use_cookies 0
php_value auto_prepend_file prepend.inc.php

Så smider man dette i prepend.inc.php:

<?php
if (!eregi("^[a-z0-9]{10,}\.mit-domaene\.dk$", $SERVER_NAME)) {
header("Location: http://".session_id().".mit-domaene.dk");
exit;
}
list($PHPSESSID) = explode(".", $SERVER_NAME);
?>

På den måde skal man ikke bekymre sig om session-id, og det kræver kun at
man kører på en Apache-server, og har stjerne-alias.
Godt tænkt Anders! :)

--
Mvh. Jonas Delfs, http://delfs.dk

"Rigtige mænd scorer på ICQ" - Christian Jørgensen



Christian Iversen (13-06-2001)
Kommentar
Fra : Christian Iversen


Dato : 13-06-01 00:42

[......]
> På den måde skal man ikke bekymre sig om session-id, og det kræver kun at
> man kører på en Apache-server, og har stjerne-alias.
> Godt tænkt Anders! :)


Ja, bestemt!

Desværre kommer man jo *stadig* ikke uden om at have SessionID i URLen. Øvøv


En anden mulighed er jo at sætte Apache op til hvad-hed-det-nu-lige,
"url-preprocessing"?

Altså den feature hvor man kan skrive

www.mydomain.dk/this_is_a_server_var/index.html

Det er da muligt at det ville se kønnere ud.

Ellers kan man jo lave sin unique-id-funktion.

Pseudokode:

mysql_query("UPDATE table SET count = count+1");
$result = mysql_fetch_object(mysql_query("SELECT table FROM mytable"));
$ID = $result->count;

Så ville den bare tælle op, og hvis man brugte den rigtige datatype, ville
den lave overflow ved $FFFF. Det ville se pænt og nydeligt ud...

Det er så nu jeg husker på at man havde brug for et login-system... *jeg
sætter handfladen mod panden*... "DOH"... *klask*


men ELLERS kunne det være meget smart

--
Regards, Christian Iversen [FIDUSO]
Flawless.Dk: [http://domains.flawless.dk]
Do you have a (broken?) IBM75GXP Drive?
Please go to [http://ibm.flawless.dk]



Jakob Færch (17-06-2001)
Kommentar
Fra : Jakob Færch


Dato : 17-06-01 14:04

In article <9g699s$7v4$1@news.cybercity.dk>,
"Christian Iversen" <iversen@it.dk> wrote:

> Ellers kan man jo lave sin unique-id-funktion.
>
> Pseudokode:
>
> mysql_query("UPDATE table SET count = count+1");
> $result = mysql_fetch_object(mysql_query("SELECT table FROM mytable"));
> $ID = $result->count;
>
> Så ville den bare tælle op, og hvis man brugte den rigtige datatype, ville
> den lave overflow ved $FFFF. Det ville se pænt og nydeligt ud...

- og det ville være hammernemt at kidnappe en session.

Eksempel:
* E lytter på linien til din webserver og ser følgende sessionsid:
- 12345
* E lytter videre på linien og observerer fx URL'er, indtil han kan
se, at en ny bruger er logget ind
* E sætter en sessionsid-cookie på sin egen maskine med værdi 12346
* Dit system tror nu (sandsynligvis) at E er den sidst indloggede bruger

.... har jeg ret?

/Jakob

Christian Iversen (17-06-2001)
Kommentar
Fra : Christian Iversen


Dato : 17-06-01 14:13

> > Ellers kan man jo lave sin unique-id-funktion.
> >
> > Pseudokode:
> >
> > mysql_query("UPDATE table SET count = count+1");
> > $result = mysql_fetch_object(mysql_query("SELECT table FROM mytable"));
> > $ID = $result->count;
> >
> > Så ville den bare tælle op, og hvis man brugte den rigtige datatype,
ville
> > den lave overflow ved $FFFF. Det ville se pænt og nydeligt ud...
>
> - og det ville være hammernemt at kidnappe en session.
>
> Eksempel:
> * E lytter på linien til din webserver og ser følgende sessionsid:
> - 12345
> * E lytter videre på linien og observerer fx URL'er, indtil han kan
> se, at en ny bruger er logget ind
> * E sætter en sessionsid-cookie på sin egen maskine med værdi 12346
> * Dit system tror nu (sandsynligvis) at E er den sidst indloggede bruger
>
> ... har jeg ret?

Ja, men prøv at læse det sidste af min post!

"
Det er så nu jeg husker på at man havde brug for et login-system... *jeg
sætter handfladen mod panden*... "DOH"... *klask*

men ELLERS kunne det være meget smart
"

I øvrigt kan din metode lige så let bruges til at kidnappe "rigtige"
session-ids!!

--
Regards, Christian Iversen [FIDUSO]
Flawless.Dk: [http://domains.flawless.dk]
Do you have a (broken?) IBM75GXP Drive?
Please go to [http://ibm.flawless.dk]



Jakob Færch (17-06-2001)
Kommentar
Fra : Jakob Færch


Dato : 17-06-01 14:45

In article <9giaau$tb1$1@news.cybercity.dk>,
"Christian Iversen" <iversen@it.dk> wrote:

> > > Ellers kan man jo lave sin unique-id-funktion.
> > > [...]
> >
> > - og det ville være hammernemt at kidnappe en session.
> >
> > Eksempel:
> > [...]
> > ... har jeg ret?
>
> Ja, men prøv at læse det sidste af min post!
>
> "
> Det er så nu jeg husker på at man havde brug for et login-system... *jeg
> sætter handfladen mod panden*... "DOH"... *klask*
>
> men ELLERS kunne det være meget smart
> "

Ups; du har ret. Jeg burde vist selv klaske håndflader og læse lidt
grundigere næste gang.


> I øvrigt kan din metode lige så let bruges til at kidnappe "rigtige"
> session-ids!!

.... ved nærmere eftertanke: Du har ret. Med adgang til ledningen er der
faktisk ingen forskel.

/Jakob

Søren Boll Overgaard (17-06-2001)
Kommentar
Fra : Søren Boll Overgaard


Dato : 17-06-01 16:54

On Sun, 17 Jun 2001 15:04:16 +0200, Jakob Færch wrote:

> * E lytter på linien til din webserver og ser følgende sessionsid:
> - 12345
> * E lytter videre på linien og observerer fx URL'er, indtil han kan
> se, at en ny bruger er logget ind
> * E sætter en sessionsid-cookie på sin egen maskine med værdi 12346
> * Dit system tror nu (sandsynligvis) at E er den sidst indloggede bruger

Det skulle helst ikke være helt lige til at komme til at lytte med på linien
til webserveren. Det skulle faktisk helst være temmelig svært.

--
Søren O.

Too bad stupidity isn't painful

Christian Joergensen (17-06-2001)
Kommentar
Fra : Christian Joergensen


Dato : 17-06-01 11:03

Anders Johannsen <anders@ignition.dk> wrote:

> http://4ddd9a08956dbb0ae7e503c35b4e3ba3.johannsen.com

IMHO syns jeg det er lidt misbrug af DNS at gøre det på den måde :)

Well, jeg mener at der på et tidspunkt var noget debat om at den løsning
var patenteret... eller noget ?

--
Christian Jørgensen | "Ford, you're turning into a penguin"
http://www.razor.dk | "Stop it"

Anders Johannsen (17-06-2001)
Kommentar
Fra : Anders Johannsen


Dato : 17-06-01 19:38

>> http://4ddd9a08956dbb0ae7e503c35b4e3ba3.johannsen.com
>
> IMHO syns jeg det er lidt misbrug af DNS at gøre det på den måde :)

Misbrug af DNS? Du er meget velkommen til at uddybe?

/A

Thor Dreier (12-06-2001)
Kommentar
Fra : Thor Dreier


Dato : 12-06-01 00:44

"Dennis Andersen" <deniande@12move.dk> skrev i en meddelelse
news:9g3er8$2alt$1@news.cybercity.dk...
> Hej allesammen,
Jamen goddag

> Jeg vil gerne lave et loginsystem der ikke kræver cookies og jeg
> vil også gerne undgå sessionid's i URL'erne.
> Er der nogen der har et forslag til hvordan jeg laver dette?
> Jeg har ikke adgang til .htaccess.

Selvom du ikke har adgang til .htaccess kan du vel godt benytte dig af
401 headeren:
Header("WWW-Authenticate: Basic realm=\"Et eller andet\"");
Header("HTTP/1.0 401 Unauthorized");
..
..
og i scriptet skal du checke $PHP_AUTH_USER og $PHP_AUTH_PW.

Se mere på http://php.net/manual/en/function.header.php




Sune Jensen (12-06-2001)
Kommentar
Fra : Sune Jensen


Dato : 12-06-01 14:52

Kan man ikke bare lave det med sessionvariabler..?
Men i mener måske at en sessionvariabel er en cookie

Dennis Andersen <deniande@12move.dk> skrev i en
nyhedsmeddelelse:9g3er8$2alt$1@news.cybercity.dk...
> Hej allesammen,
>
> Jeg er ved at lave en hjemmeside hvor det skal være muligt at
> oprette sig som bruger for at få adgang til udvidede funktioner.
>
> Før jeg går i gang med at lave loginsystemet skal jeg
> selvfølgelig først finde ud af hvordan jeg vil lave det. Det er
> her mit problem opstår...
>
> Jeg vil gerne lave et loginsystem der ikke kræver cookies og jeg
> vil også gerne undgå sessionid's i URL'erne.
>
> Er der nogen der har et forslag til hvordan jeg laver dette?
>
> Jeg har ikke adgang til .htaccess.
>
> --
> Med venlig hilsen
> Dennis Andersen





Anders Johannsen (12-06-2001)
Kommentar
Fra : Anders Johannsen


Dato : 12-06-01 15:27

In article <9g56nv$mnl$2@news.inet.tele.dk>, "Sune Jensen" <sj@mailme.dk>
wrote:

> Kan man ikke bare lave det med sessionvariabler..? Men i mener måske at
> en sessionvariabel er en cookie

Det er een mulighed.

/A

Jakob Færch (12-06-2001)
Kommentar
Fra : Jakob Færch


Dato : 12-06-01 15:55

In article <9g56nv$mnl$2@news.inet.tele.dk>,
"Sune Jensen" <sj@mailme.dk> wrote:

> Kan man ikke bare lave det med sessionvariabler..?
> Men i mener måske at en sessionvariabel er en cookie

Ja, en sessionsvariabel er en cookie.

Eller rettere sagt: Som standard bliver der sat en cookie, når man
starten en session - fx ved at registrere en sessionsvariabel.

Søg
Reklame
Statistik
Spørgsmål : 177557
Tips : 31968
Nyheder : 719565
Indlæg : 6408868
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste