[php] users inloggen en ingelogt houden

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • GeleFles
  • Registratie: Augustus 2001
  • Niet online

GeleFles

What's in a bottle?

Topicstarter
ik ben bezig met een login gedeelte voor op mn site... nu zit ik te denken wat de beste manier van user authenticatie is, ik zat zelf te denken aan het volgende:

user maakt account (eenmalig uiteraard)
in de db word een extra veld gegenereerd voor de user, een cookiepass, deze pass laat ik random maken door de server, met een lengte van 20 chars oid, en user kan deze natuurlijk niet zien/wijzigen.
zodra een user dan inlogt, word alleen zijn username en cookiepass in een cookie gestopt, en bij het openen van elke pagina, word zijn cookie uitgelezen, en de db gecheckt of de user zijn rechten nog heeft etc.

is dit een handige manier om zoiets te maken, of moet ik het helemaal anders doen???

Acties:
  • 0 Henk 'm!

  • eXcyle
  • Registratie: Juni 2002
  • Laatst online: 30-08 23:45
1 woord, Sessions
Een sessie blijft actief zolang het browser venster open blijft en wordt server side opgeslagen voor de rest kan je er het zelfde mee als met een cookie.

ook kan ik je aanraden om het password MD5 encrypted in de database op te slaan en ook de MD5 hash in je cookie, en dan op elke page die 2 in combinatie met de username te controleren of die overeen komen

maar een un-encrypted password in een cookie opslaan in dus heeeeel erg fout


http://nl3.php.net/session
http://nl3.php.net/md5

[ Voor 15% gewijzigd door eXcyle op 30-11-2003 15:22 . Reden: Typo's ... Gotta love e'm ]


Acties:
  • 0 Henk 'm!

  • justmental
  • Registratie: April 2000
  • Niet online

justmental

my heart, the beat

eXcyle schreef op 30 november 2003 @ 15:20:
ook kan ik je aanraden om het password MD5 encrypted in de database op te slaan en ook de MD5 hash in je cookie, en dan op elke page die 2 in combinatie met de username te controleren of die overeen komen
Waarom zou je een md5 van het password in je cookie op willen slaan?
Wat is dan precies de toegevoegde waarde voor de security?

Who is John Galt?


Acties:
  • 0 Henk 'm!

  • GeleFles
  • Registratie: Augustus 2001
  • Niet online

GeleFles

What's in a bottle?

Topicstarter
hehe, ik ga ze ff lezen, sorry voor mijn 'noobness', mijn enige php/mysql ervaring, is door zelf aan te prutsen, en tutorials lezen op inet.. ;)

ik moet een session dus zien als een soort van user gebonden cookie, die op de server draait?

edit:

dus zodra een user inlogt, maak ik een session aan, waar zn username en pass in opgeslagen worden, aan het begin van elke pagina, laat ik de session uitlezen.

maar hoe doe ik dan dat een user automagisch inlogt? is dan mijn cookiepass idee wat?

[ Voor 38% gewijzigd door GeleFles op 30-11-2003 15:30 ]


Acties:
  • 0 Henk 'm!

  • eXcyle
  • Registratie: Juni 2002
  • Laatst online: 30-08 23:45
RonnieB82 schreef op 30 november 2003 @ 15:25:
ik moet een session dus zien als een soort van user gebonden cookie, die op de server draait?
zo iets, het is gewoon een bestand op de server dat aan die bepalde client extra data mee geeft
justmental schreef op 30 november 2003 @ 15:23:
[...]

Waarom zou je een md5 van het password in je cookie op willen slaan?
Wat is dan precies de toegevoegde waarde voor de security?
het is gewoon veiliger om in plaats van je pasword in plain text in een cookie /session op te slaan dit in MD5 te doen, hierdoor word er dus maar 1 keer je pasword verzonden en voor de rest de MD5 Hash er van, waardoor het dus moeilijker is om achter je password te komen

[ Voor 47% gewijzigd door eXcyle op 30-11-2003 15:29 ]


Acties:
  • 0 Henk 'm!

  • justmental
  • Registratie: April 2000
  • Niet online

justmental

my heart, the beat

eXcyle schreef op 30 november 2003 @ 15:27:
het is gewoon veiliger om in plaats van je pasword in plain text in een cookie /session op te slaan dit in MD5 te doen, hierdoor word er dus maar 1 keer je pasword verzonden en voor de rest de MD5 Hash er van, waardoor het dus moeilijker is om achter je password te komen
Dat een gehashed password veiliger is dan een plaintext is duidelijk, maar waarom zou je enige vorm van een password op willen nemen in je cookie?
Ik gebruik zelf altijd een grote random string.

Who is John Galt?


Acties:
  • 0 Henk 'm!

  • eXcyle
  • Registratie: Juni 2002
  • Laatst online: 30-08 23:45
agh zo .. ja das ook een mogelijkheid ... gewoon bij het inloggen een random string in de d-base trappen en die gebruiken om te vergelijken met het cookie ...

das idd ook een optie

Acties:
  • 0 Henk 'm!

  • ixi
  • Registratie: December 2001
  • Laatst online: 27-08 23:59

ixi

Volgens mij is dit een hele veilige manier:

Sla wachtwoorden op als MD5 hash in de database.
Zodra iemand die inlog pagina bekijkt stuur je een random nummer mee, dit nummer sla je ook op in de session van die persoon.
Gebruik op het inlog scherm de javascript MD5 code, link staat onderaan. Bij het submitten haal je het ingetiepte wachtwoord door de md5, en dan nog door de md5 met het nummer eraanvastgeplakt ( --> md5(md5(paswoord) + randomnummer)
Bekijk dan in PHP hetzelfde ( --> md5(db-paswoord + randomnummer) ), indien dit hetzelfde is zet je in de session een boolean op true en zet je het IP nummer in de session.
Elke pagina even checken of deze boolean op true staat, en of het IP hetzelfde is.

Is een redelijk waterdichte methode volgens mij.

edit: Link vergeten: http://pajhome.org.uk/crypt/md5/

[ Voor 5% gewijzigd door ixi op 01-12-2003 02:17 ]


Acties:
  • 0 Henk 'm!

  • GeleFles
  • Registratie: Augustus 2001
  • Niet online

GeleFles

What's in a bottle?

Topicstarter
ok, ik heb het nu voor elkaar dat ie een sessie enzo aanmaakt, dus hij logt in, krijgt netjes een sessie-ID en maakt 2 vars aan dmv $_SESSION['blaat'] = 'toetoet'... (user en pass)

als ik op dezelfde pagina de sessie uitlees, werkt het wel, maar ga ik naar een andere pagina (op dezelfde site) dan kan hij hem niet uitlezen? (ik zie waarschijnlijk een functie/instelling over het hoofd?)

Acties:
  • 0 Henk 'm!

  • Koeniepoenie
  • Registratie: Oktober 2003
  • Laatst online: 15-09 21:46
Je moet boven iedere pagina dit zetten:
PHP:
1
session_start();


@ixi: Volgens mij is het een beetje onnodig om 2 keer md5() te doen, verder wel aardig idee..

grtz Koen

Parse error: syntax error, unexpected GOT_USER in https://gathering.tweakers.net on line 1337


Acties:
  • 0 Henk 'm!

  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 28-02 22:17
eXcyle schreef op 30 november 2003 @ 15:20:
1 woord, Sessions
Een sessie blijft actief zolang het browser venster open blijft en wordt server side opgeslagen voor de rest kan je er het zelfde mee als met een cookie.
Tis maar hoe je het instelt hoor. Ik misbruik mn sessies meestal voor meer permanente doeleinden :)

Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info


Acties:
  • 0 Henk 'm!

  • Spider.007
  • Registratie: December 2000
  • Niet online

Spider.007

* Tetragrammaton

KoenieMan schreef op 30 november 2003 @ 17:57:
Je moet boven iedere pagina dit zetten:
@ixi: Volgens mij is het een beetje onnodig om 2 keer md5() te doen, verder wel aardig idee..
ixi bedoeld waarschijnlijk een challenge response systeem; dit is inderdaad aardig veilig :)
grtz Koen
Wij tweakers doen elkaar permanent de groeten. Het is dus niet nodig om steeds ruimteverspillende "greetz $user" of iets dergelijks onder je posts te plakken. Als je per se zoiets wilt kun je daar je signature voor gebruiken.
:)

[ Voor 6% gewijzigd door Spider.007 op 30-11-2003 18:36 ]

---
Prozium - The great nepenthe. Opiate of our masses. Glue of our great society. Salve and salvation, it has delivered us from pathos, from sorrow, the deepest chasms of melancholy and hate


Acties:
  • 0 Henk 'm!

Verwijderd

ixi schreef op 30 november 2003 @ 15:56:

...

Gebruik op het inlog scherm de javascript MD5 code

...

edit: Link vergeten: http://pajhome.org.uk/crypt/md5/
En wat als de bezoeker javascript uitschakeld heeft staan in zijn browser? Dan werkt gelijk het hele systeem niet meer...

Acties:
  • 0 Henk 'm!

Verwijderd

Wat ik zelf doe is iets unieks van de gebruiker in het cookie zetten, meestal het ID van de persoon uit de database.
Daarna crypt ik iets, meestal zijn e-mailadres omdat deze uniek is, en plaats dit in het cookie.
Vervolgens heb ik een controle functie die ik bovenaan bijna alle pagina's include, die controleerd of het id en de crypt overeenkomen. Zo ja, update het cookie, zo nee delete het cookie en redirect naar de login pagina.
Pagina: 1