Jump to content
Geplaatst:
comment_1503584

Hey,

ik ben nu een inlogsysteem aan het maken met php en mysql. Ik heb dus een paar vraagjes.

Als iemand nu inlogt word eerst zijn wachtwoord omgezet in MD5 en dan vergeleken met de tabel in mysql. Ik heb

nu dat de website ze onthoud door Session en dan met username. Is dit wel veilig?

$gebruiker = $_POST["taatunaam"]; 
$_SESSION['taatunaam'] = $gebruiker; 

(Taatunaam is dan de inlognaam)

Zal ik dit veiliger kunnen maken door:

$gebruiker = $_POST["taatunaam"]; 
$md5pass = md5($_POST['wachtwoord']);
$_SESSION['taatunaam'] = $gebruiker; 
$_SESSION['wachtwoord'] = $md5pass; 

of is het dan juist meer onvelig?

En, ik probeer een onthoud functie te maken met cookies (checkbox). ik wil dus als ze deze aanvinken dat als ze de volgende keer proberen in te loggen de naam al in het form "naam" staat maar hoe laat ik de cookie uitlezen en in het form zetten?

Featured Replies

Geplaatst:
comment_1503682

MD5 is wel degelijk te kraken, maar het is op z'n minst niet makkelijk.

Er zijn 2 manieren:

- alle mogelijke combinaties van letters en cijfer md5-en en daarmee inloggen (een paar triljard keer proberen in te loggen dus, of als je het md5-wachtwoord hebt daarmee vergelijken)

- een zogenaamde rainbow-table: een tabel met alle tekst - md5 combinaties. Er staan een paar redelijk complete rainbow-tables op het internet.

Dit is echter heel lastig om te doen, en ook is het veel werk om in de eerste plaats het md5-wachtwoord te krijgen. De meeste computers doen er dus zo'n 100 jaar of langer over voordat ze een wachtwoord hebben gekraakt. Als je de pech hebt dat je md5 in een rainbow-table staat, duurt het wat korter. Dit is echter alleen als je echt pech hebt :puh: .

Dit over md5, nu de session.

Sessions zijn over het algemeen niet te hacken of zo, maar ik heb eens *ergens* gelezen dat als er meerdere websites van 1 persoon op 1 computer staan, en er zit wat fout in de server, dan kan website 1 de sessies van website 2 uitlezen of zo. Het slimste is dus, om voor alle zekerheid niet het md5-wachtwoord in de sessie te zetten, en al helemaal niet het normale wachtwoord. Ook als je een keertje voor een test var_dump($_SESSION); doet of zo, vind je het misschien niet zo grappig als je wachtwoord op je scherm komt te staan ;) .

Als laatst over die auto-inlog-functie; is dat niet de taak van de browser? Volgens mij doen de meeste browsers dat al hoor; je naam in het veldje zetten. Je moet alleen op 'toevoegen' klikken als je voor de eerste keer inlogt op een site. Of in ieder geval firefox doet dit.

Maargoed, een cookie vraag je zo op:

$waarde = $_COOKIE['cookieNaam'];

Ik hoop dat het duidelijk is :) .

Bewerkt: door marcootje

Geplaatst:
  • Auteur
comment_1503711

Oki, dus er het MD5 wachtwoord bij in duwen zal het dus niet veiliger maken.

Bedankt voor het onthoud knopje, want die werkt nu en sessies ;)

en nog een Probleempje:

Er bestaat op het internet een:

realtimedata.csv

Dit is dus een exel bestand met bovenaan: Usersonline en daaronder het aantal online..

Zou php dit bestand uit kunnen lezen en de het aantal online kunnen laten echo en?

EDIT:

hoe zou ik trouwens kunnen zorgen dat als ze na 5 inlogpogingen een half uur niet in mogen loggen?

Bewerkt: door Maikle

Geplaatst:
comment_1503803

md5 helpt wel degelijk hoor, wat ik duidelijk wilde maken is dat in theorie alles (ja, alles) te hacken is.

maar je kunt je wel bedenken dat een md5-wachtwoord kraken lastiger is dan alleen een database of site hacken...

verder kan php volgens mij geen excel-bestanden lezen.

een onthoud-systeem gaat als volgt:

- elke keer dat je inlogt een rij aanmaken in een tabel bijv. 'logins' met de tijdstip (timestamp)

- bij elke inlog kijken of er niet meer rijen staan dan 5 in de vorige 30*60 = 1800 seconden

Bewerkt: door marcootje

Geplaatst:
  • Auteur
comment_1503825

ik weet wel dat md5 veiliger is hoor, alleen is het dus niet nodig om als sessie te zetten ;p

alles is ook al gecodeerd in de tabel gezet..

en over csv files lezen:

 <?php
  $fh = fopen("http://taatu_prod.s3.amazonaws.com/info/realtimedata.csv", "r");
  while (list($users) = fgetcsv($fh, 1024, ",")) {
     echo $users;
  }
?>

Het werkt wel maar het pakt rij 1 en 2, hoe kan ik zorgen dat hij alleen 2 pakt?

EDIT

naar heel veel gepruts is het me gelukt ;)

EDIT 2:

hoe zou ik kunnen zorgen dat php het email controleert

een iets @ iets . iets

dus met @ en .

bij de registratie..

Bewerkt: door Maikle

Geplaatst:
comment_1504225

Op deze website vind je een paar voorbeelden voor reguliere expressies voor email-adressen.

De simpelste in php uitgewerkt, met preg_match():

if(preg_match("/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i", $email_adres)) {
// het is een email-adres!
}

volgens mij moet dat werken

Bewerkt: door marcootje

Geplaatst:
comment_1509660

Dus je hebt een tekst en daar mogen maximaal 3 woorden in zitten?

Of anders beredeneerd: er mogen maar 2 spaties in zitten.

if(substr_count($tekst, ' ') > 2) {
// te veel spaties ofwel te veel woorden
}

Of heb je ook komma's, punten en bijv. een ; ?

Dan weer een reguliere expressie:

preg_match_all('%[a-zA-Z]%', $tekst, $matches);

if(count($matches[0]) > 3) {
// te veel woorden (hier wel woorden, geen spaties)
}

(beide niet getest)

Een reactie plaatsen

Je kan nu een reactie plaatsen en pas achteraf registreren. Als je al lid bent, log eerst in om met je eigen account een reactie te plaatsen.

Gast
Op dit onderwerp reageren...

Recent actief 0

  • Er zijn hier geen geregistreerde gebruikers aanwezig.