Controleer of password klopt

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Danny von Gaal

Danny von Gaal

18/04/2012 17:08:01
Quote Anchor link
Hallo,

Ik gebruik momenteel onderstaande regel in mijn inlogformulier om te controleren of de goede gegevens zijn ingevuld:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php  if(mysql_num_rows(mysql_query("SELECT id,klantnr,hash FROM klanten WHERE klantnr='" . $_POST["klantnummer"] ."' AND wachtwoord='" . $_POST["wachtwoord"] ."' AND domein='" . $_POST["domein"] ."'"))==1){ ?>


Ik geef alle klanten een sterk wachtwoord bestaand uit kleine letters, hoofdletters en cijfers. Alleen helaas controleert hij alleen de letters en cijfers en niet of het ook daadwerkelijk om hoofd en kleine letters gaat. Bijvoorbeeld als iemand zijn password DfjgfK19 is en hij voert in dfjgfk19 dan werkt dat ook.

Wie weet hoe ik dit kan controleren?
 
PHP hulp

PHP hulp

27/04/2024 04:33:36
 
Php knipper

php knipper

18/04/2012 17:11:45
Quote Anchor link
opgelet:
-mysql injectie mogelijk
-foutafhandeling ontbreekt

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php
$sql
= "SELECT id, klantnr, hash FROM klanten
        WHERE
              klantnr='"
.mysql_real_escape_string($_POST["klantnummer"])."'
                 AND
              wachtwoord='"
.mysql_real_escape_string($_POST["wachtwoord"])."'
                 AND
              domein='"
.mysql_real_escape_string($_POST["domein"])."'
"
;

if(!$res = mysql_query($sql))
{

##een error
    trigger_error(mysql_error().'<br />In query: '.$sql);
}

elseif(mysql_num_rows($res) == 0)
{

    echo 'Geen resultaten gevonden';
}

else
{
##er zijn er meer dan 1 gegevens omzetten
$row = mysql_fetch_assoc($res);
###gegevens ophalen hier
}
?>
Gewijzigd op 18/04/2012 17:16:43 door php knipper
 
Jens erd

Jens erd

18/04/2012 17:15:54
Quote Anchor link
Wachtwoorden hoor je met een encryptie en salt/pepper op te slaan. In dit geval is zelfs SQL injectie mogelijk, wat het sterkste wachtwoord gewoon vrijgeeft.

Encryptie maakt wél verschil tussen hoofd- en kleine letters;
Phphulp - 80bb3265ff1b003463602fb45d9c78a8
phphulp - a389f787e36c6d61b9c518953a150fa2

alleen de eerste letter is anders en de hash (md5 in dit geval) is compleet anders.
 
Php knipper

php knipper

18/04/2012 17:18:17
Quote Anchor link
in de plaats van mysql_real_escape_string te tipen bij wachtwoord moet je md5 tippen

vergeet niet dat in de database ook al md5 staat ( je kan het wachtwoord van je gebruikers niet meer zien )
 
Erwin H

Erwin H

18/04/2012 17:19:00
Quote Anchor link
NOOIT, NOOIT, NOOIT wachtwoorden zonder encryptie opslaan. Veel mensen gebruiken hetzelfde wachtwoord voor verschillende sites. Als jouw site nu eens gehackt wordt (wat zo te zien niet al te lastig zal zijn gezien de opmerking van php knipper) dan liggen al die wachtwoorden direct op straat.

Dus, zoek een encryptie methode om je wachtwoorden in de database te beveiligen, dit lost ook direct het probleem van de hoofd en kleine letters op.

Startpunt voor je zoektocht: http://dev.mysql.com/doc/refman//5.5/en/encryption-functions.html
 
Php knipper

php knipper

18/04/2012 17:23:41
Quote Anchor link
het deel code dat ik van dat van u gemaakt heb is niet moeilijk en kan zo opnieuw worden gebruikt. pas altijd op als je werkt met een database voor pottenkijkers ;)
 
Mebus  Hackintosh

Mebus Hackintosh

18/04/2012 17:26:49
Quote Anchor link
@php knipper, Zorg er dan ook voor dat als er een SQL error is je niet de hele query output en ook niet de error. En dit dus alleen te doen bij het debuggen van je website. Anders weten de 'pottenkijkers' sneller hoe je database eruit ziet.
 
Php knipper

php knipper

18/04/2012 17:31:45
Quote Anchor link
je moet de functie wel zelf vullen trigger_error() dan kan je dat aan en uit zetten
 
Danny von Gaal

Danny von Gaal

18/04/2012 20:22:14
Quote Anchor link
Iedereen bedankt voor de moeite en ik zal zeker de encryptie gaan gebruiken. Dit wilde ik al meteen alleen ik gebruik certificaten en dacht ik kan het wel encrypt in de database plaatsen maar als er een ww in het formulier wordt ingevuld wordt dit alsnog als plain text naar de server verstuurd en kan het alsnog worden onderschept.

Maar ik ben er mee bezig en heb alleen nog een vraag over de code van php knipper die ik uiteraard wil gaan gebruiken. Je gebruikt de variabele $res alleen waar wordt deze ingevuld? Zoals ik het zie is er nergens een waarde ingevoerd.
Wat betekent dan die $res?
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.