|
| 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 |
| | |
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.
| |
|
|