login  Naam:   Wachtwoord: 
Registreer je!
 Forum

member systeem hulp

Offline kickasgamer - 22/10/2007 13:27
Avatar van kickasgamerPHP ver gevorderde Ik heb vroeger een ledensysteem gemaakt dat volledig werkte op sessies, maar nu wil ik in de nieuwe versie er voor zorgen de gebruiker ingelogt kan blijven. Maar ik heb ook gehoort dat het niet zo veilig is om login info op te slaan in en cookie.

hoe combineer ik dan sessies en cookies, zodat de gebruiker ingelogt kan blijven en alles toch veilig is ?

26 antwoorden

Gesponsorde links
Offline tomie94 - 22/10/2007 13:32
Avatar van tomie94 PHP interesse ik doe het altijd via IP-adres en SESSIES. maar ik wist niet dat het onveilig was met SESSIES en cookies?
Offline kickasgamer - 22/10/2007 13:56
Avatar van kickasgamer PHP ver gevorderde het is niet onveilig om ze samen te gebruiken maar het is wel onveilig (of dat heb ik gehoort) om login info direct in een cookie te zetten
Offline Grayen - 22/10/2007 14:07 (laatste wijziging 22/10/2007 14:09)
Avatar van Grayen PHP ver gevorderde Het is inderdaad onveilig om je login info direct in een cookie als je die cookie vervolgens gebruikt om je sessie mee te aan te maken.

Dus bijvoorbeeld:

  1.  
  2. if (isset($_COOKIE['login'])) {
  3. $_SESSION['login'] = $_COOKIE['login'];
  4. }


is erg onveilig. Want een mogelijke hacker zou dan simpel weg een cookie kunnen maken met de juiste inhoudt en voila ze zijn bijvoorbeeld een admin. Je kunt dan al nagaan wat er dan allemaal kan gaan gebeuren.

Je moet dus een soort beveiliging inbouwen om ervoor te zorgen dat ze niet door deze wijze kunnen inloggen op iemands anders account. Dit kun je bijvoorbeeld doen door encryptie (geen hash zoals md5, want die kun je niet meer terug draaien) op de waarde van de cookie uit te voeren. En dan de decryptie functie uitvoeren op de waarde zodra je hem wilt gebruiken.
Offline kickasgamer - 22/10/2007 14:09
Avatar van kickasgamer PHP ver gevorderde zou je misschien wat meer uitleg willen geven over dat laatste ?

Offline Grayen - 22/10/2007 14:12
Avatar van Grayen PHP ver gevorderde Hier zal je waarschijnlijk wel wat aan hebben:

http://www.phpf...mp;page=15
Offline Rens - 22/10/2007 14:15
Avatar van Rens Gouden medaille

Crew algemeen
Zet een userid in de cookie samen met een hash.
http://www.site...&id=85
Pagina: session.php

Kijk daar maar eens naar 
Offline kickasgamer - 22/10/2007 14:36 (laatste wijziging 22/10/2007 16:22)
Avatar van kickasgamer PHP ver gevorderde dushet is wel veilig bv
userid + md5 en sha1 gehashed wachtwoord in de cookies te zetten

en dan kan ik als de user een andere keer langs komt via een query de DB laten controleren op een ID samen met een wachtwoord hash en als die samen in een rij staan dan is de user terug in gelogt en maak ik een nieuwe sessie aan ?

of ebn ik fout aan het denken ?

EDIT: ben ik dan just bezig of een fout gedacht van mij ?
Offline Ibrahim - 23/10/2007 00:57
Avatar van Ibrahim PHP expert wrm zou je de wachtwoord in de cookie opslaan een userid is genoeg hoor 
Offline Stijn - 23/10/2007 01:10
Avatar van Stijn PHP expert da's makkelijk te hacken Psycho. Stel dat ik lid 23 ben en 1 is beheerder van de site. Dan zet ik me cookie waarde op 1 en het systeem zou me dan herkken als beheerder.

Een md5 versie van je wachtwoord opslaan in je cookie is al veiliger.
Offline Rens - 23/10/2007 08:14
Avatar van Rens Gouden medaille

Crew algemeen
Sla een hash op in de database en in je cookie.
En die hash die laat je vervolgens om de 5 minuten of zo verversen voor een andere hash.
Dat is veel veiliger dan een wachtwoord...
Er zou in je site maar een ubb hack zitten, zodat je met javascript een pagina kunt aanroepen met als waarde pagina.php?cookie=<cookie_waarde>.
Dan kan Mr. H. Acker zo even achter de hash van je wachtwoord komen en dan haalt hij er even een simpele bruteforce overheen en hij heeft je wachtwoord...
Offline kickasgamer - 23/10/2007 16:43
Avatar van kickasgamer PHP ver gevorderde en hoe ververs ik dei hash dan iedere keer als een user een pagina van mijn ledensysteem bezoekt een neiuwe hash, en ook een nieuwe cookie aan maken ?
Offline Rens - 24/10/2007 09:27
Avatar van Rens Gouden medaille

Crew algemeen
Elke keer een functie aanroepen.
Zeker geen nieuwe cookie aanmaken.
Gewoon je oude cookie overschrijven...
Offline kickasgamer - 24/10/2007 13:33 (laatste wijziging 24/10/2007 13:35)
Avatar van kickasgamer PHP ver gevorderde ok bedankt ik ga dat dan eens proberen te verwerken in mijn code
ik zal wel iets laten weten als er problemen of vragen zijn

maar jullie zijn al allemaal bedankt 

EDIT: en met welke functie overschrijf ik een cookie want ik zie op php.net enkel setcookie() staan
Offline Wim - 24/10/2007 13:38 (laatste wijziging 24/10/2007 13:38)
Avatar van Wim Crew algemeen stel je werkt met 3 sessies: id, username, password (in md5 dan wel!), dan kan je het als volgt oplossen:
- maak een tabel aan: id, userid, username, password, key
- maak je sessies aan
- voeg de gegevens in de tabel, en genereer een RANDOM key en steek deze in je DB
- maak 2 koekjes aan: id en key; geef deze ook de correcte waarde
- volgende bezoek: controleer of er sessies zijn; zonee, dan haal je de info uit de db en je steekt deze in je sessions. Verander regelmatig de key!

Je kan koekjes trouwens gewoon overschijven met setcookie() hoor
Offline kickasgamer - 24/10/2007 13:43
Avatar van kickasgamer PHP ver gevorderde ik zal die werk wijze van jou in men achterhoofd houden, maar zeker bedankt ;)
Offline timmie_loots - 24/10/2007 15:05
Avatar van timmie_loots PHP gevorderde
Rens schreef:
Sla een hash op in de database en in je cookie.
En die hash die laat je vervolgens om de 5 minuten of zo verversen voor een andere hash.
Dat is veel veiliger dan een wachtwoord...
Er zou in je site maar een ubb hack zitten, zodat je met javascript een pagina kunt aanroepen met als waarde pagina.php?cookie=<cookie_waarde>.
Dan kan Mr. H. Acker zo even achter de hash van je wachtwoord komen en dan haalt hij er even een simpele bruteforce overheen en hij heeft je wachtwoord...


Een XSS hack bedoel je?

En je gaat een beetje uit van het slechtste, je scenario kan alleen bij iemand die sowieso al heel slecht bezig is, door slecht te scripten maar ook door een wachtwoord te gebruiken dat een ander niet mag weten.

Als je een XSS lek hebt, en je wachtwoord is je grote zorg, betekend dat je eerder al stom bezig was door één wachtwoord op meerdere plekken te gebruiken.
Offline Rens - 24/10/2007 18:28
Avatar van Rens Gouden medaille

Crew algemeen
@timmie_loots:
kickasgamer schreef:
dushet is wel veilig bv
userid + md5 en sha1 gehashed wachtwoord in de cookies te zetten


Dáárom juist gebruikte ik dat voorbeeld...
Offline timmie_loots - 24/10/2007 18:37 (laatste wijziging 24/10/2007 18:38)
Avatar van timmie_loots PHP gevorderde Mijn punt is juist dat daar an sich helemaal niets mis mee is, tenzij je last hebt van een XSS lek en ook nog eens het wachtwoord op meerdere plekken gebruikt dan die website.

Uiteindelijk is de kans groter dat iemand een XSS lek misbruikt om toegang tot de website te krijgen op admin-niveau, dan dat iemand het gebruikt om het wachtwoord te verkrijgen, en dat kan net zo goed met jouw manier.

Zeker gezien je met een simpele padding (of bij wijze van spreken een aantal keer het wachtwoord aan elkaar geplakt) een lange string kunt maken die uiteindelijk gehasht wordt. Op die manier is de kans namelijk ongelooflijk klein dat, zelfs met bruteforcen, het uiteindelijke wachtwoord te achterhalen is.

Jouw manier heeft gewoon een onnodige overhead en is imho daarom niet een handige oplossing.

Offline Rens - 24/10/2007 18:42
Avatar van Rens Gouden medaille

Crew algemeen
Hoezo overhead?
Elke keer dezelfde cookie en rij in je SQL tabel overschrijven.
Dan krijg je geen overhead?
Offline timmie_loots - 24/10/2007 19:12
Avatar van timmie_loots PHP gevorderde Dat is ook overhead, performance overhead om precies te zijn ;)
Offline kickasgamer - 24/10/2007 20:09
Avatar van kickasgamer PHP ver gevorderde want voor een oplossing raad jij dan aan timmie_loots
Offline Flex1986 - 24/10/2007 20:50
Avatar van Flex1986 Gouden medaille

Senior Member
Ik zelf heb een kleine functie gemaakt voor me password protectie.

Wat die doet is simpel weg. md5 daarna sha1 dan hou ik een string van 40 tekens over die scramble ik een beetje met substring hierdoor hou ik een string van 60 tekens over. Deze is na mijn idee nooit meer terug te krijgen. Deze wordt opgeslagen in een cookie. Samen met een unieke 15 delige code.

Op mijn websites lees ik cookie uit en controleer ik unieke code samen met het ip wat opgeslagen staat. Dit is in mijn ogen veilig genoeg de enigste manier om deze methode te omzeilen is cookie importeren naar een andere computer in hetzelfde netwerk. En aangezien ik gebruikers waarschuw om hun cookies niet opteslaan op openbare plekken dan is dat hun zorg als ze gebanned worden door gedrag van een ander.

Hoofdadmin gedeeltes op mijn sites die krijgen trouwens nooit de optie om ingelogd te blijven. Omdat ik dit voor een overbodige kans op hacken is voor zoiets stoms.
Offline kickasgamer - 24/10/2007 21:07
Avatar van kickasgamer PHP ver gevorderde zou je me die functie eens willen toe sturen via PM, dat ik deze eens kan bestuderen

ik ben nu alle oplosisngen eens op een rijtje aan het zetten en welke mij dna het beste lijkt ga ik proberen 
Offline Flex1986 - 24/10/2007 22:11
Avatar van Flex1986 Gouden medaille

Senior Member
Zal kijken of ik een aangepaste versie op kan sturen naar. Ben nu nog bezig met een project voor school. Zodra ik die klaar heb pas ik me script misschien even aan. Ligt echt aan de tijd. En wat ik nu gebruik dat stuur ik niet  
Offline timmie_loots - 24/10/2007 22:55
Avatar van timmie_loots PHP gevorderde
Flex1986 schreef:
Hoofdadmin gedeeltes op mijn sites die krijgen trouwens nooit de optie om ingelogd te blijven. Omdat ik dit voor een overbodige kans op hacken is voor zoiets stoms.


Als we even doorgaan op XSS hacks (overname door niet uitloggen is in dit geval inderdaad niet mogelijk), ook die kunnen overgenomen worden gezien er voor een session ook een cookie aan wordt gemaakt.
Offline kickasgamer - 25/10/2007 16:08
Avatar van kickasgamer PHP ver gevorderde
Flex1986 schreef:
Zal kijken of ik een aangepaste versie op kan sturen naar. Ben nu nog bezig met een project voor school. Zodra ik die klaar heb pas ik me script misschien even aan. Ligt echt aan de tijd. En wat ik nu gebruik dat stuur ik niet  


nee nee dat begrijp ik, maar as je me iets wilt sturen dat er op lijkt, zodat ik het principe begrijp 
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.2s