Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Webprogrammeren & scripting

[PHP] Veilige login

meneer de koekepeer
6 antwoorden
  • Hi,

    Ik heb een CMSje gebouwd waar mensen op kunnen inloggen.
    Nu moet de login natuurlijk veilig zijn, ik wil niet dat een of andere dokus zomaar in dat CMS kan gaan zitten vissen.

    Op iedere pagina worden de login naam en de md5 hash van het password gecontroleerd. Is dit nodig of kun je gewoon een keer inloggen en dan klaar.

    Veel sites maken ook gebruik van login sessies die om de zoveel tijd vernieuwd moeten worden, en foefjes met IP adressen. Hoe gaat dit in zijn werk en voegt dit uberhaupt veiligheid toe?
  • 1. login met user/pass
    2. login correct -> cookie plaatsen
    login fout -> terug naar 1. (eventueel tellen en na x fouten ip blokkeren)
    3. cookie (evt. ip) checken bij elke volgende pagina
    cookie fout -> 1.
    4. logout -> cookie wissen (leeg cookie, cookie met verlopen tijd)
    5. cookie laten verlopen met sessie en/of bepaalde tijd

    Niets is 100% veilig, maar dit werkt in mijn ervaring goed.
  • Om het nog veiliger te maken kun je de wachtwoorden ook door een Javascript MD5 functie (zoek op Google) gooien op de client. Dan wordt je wachtwoord niet leesbaar verstuurd. SSL (https) is natuurlijk nog beter, maar daarvoor moet je een certificaat aanschaffen…
  • [quote:74622b6695]Veel sites maken ook gebruik van login sessies die om de zoveel tijd vernieuwd moeten worden, en foefjes met IP adressen. Hoe gaat dit in zijn werk en voegt dit uberhaupt veiligheid toe?[/quote:74622b6695]

    sessions in een database gecombineerd met cookies zijn veiliger dan ALLEEN cookies vanwege een aantal redenen:

    - niet nodig gebruikersnaam/wachtwoord op te slaan in cookie
    - de cookie met session gegevens kun je alleen geldig laten zijn voor een IP/user agent/tijd combinatie oftwel voor maar 1 persoon.

    je kunt ook overgaan op session ID's in de URL als de gebruiker geen cookies accepteerd.

    php heeft ook een eigen session systeem.
  • OK,

    Als ik dit dus goed begrijp doe ik hetvolgende:

    1. Inloggen
    2. Username en wachtwoord bevestigen via MySQL
    3. Indien correct, unieke session_key genereren
    4. IP adres opsporen
    5. IP adres en session hash in DB opslaan.
    6. Cookie setten dat gebruiker is ingelogt
    7. Op ieder pagina geldigheid van de session verifieren

    Maar wat is dan het voordeel tegenover op ieder pagina gewoon username + login verifieren. Er is nog steeds DB contact met de session hashes!
  • ja, en nog steeds "onveilig" te noemen. maar t is niet anders, tenzij je SSL neemt
    op andere, belangrijkere punten veiliger aangezien je geen waardevolle gegevens op iemands computer in cookies achter laat.
    het gevaar van menselijke fouten (slordig omgaan met gegevens etc) is vele malen groter dan dat iemand je internet verkeer gaat aftappen…

    lees ook ns: http://nl.php.net/session#session.security

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.