wachtwoord beveiligen!

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Hoi geen

hoi geen

07/03/2013 22:53:14
Quote Anchor link
Ik heb een vraag.

Ik ben bezig met een inlogsysteem.
Mijn vraag is:

Ik gebruik o.a md5 sha1 + salt en base64_encode om een wachtwoord te beveiligen.
Is dit veilig of kan het nog beter?

dit is mijn code:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
function md6($input)
{

    $salt = '1234567890-=qwertyuiop[]asdfghjkl;\zxcvbnm,./*+!@#$%^&*()_=`~QWERTYUIOP{}ASDFGHJKL:"|ZXCVBNM<>?|';
    $output = md5(sha1($input, base64_encode(md5(sha1($salt)))));
    return($output);
}

?>
Gewijzigd op 07/03/2013 22:54:01 door Hoi geen
 
PHP hulp

PHP hulp

01/03/2025 05:22:17
 
Php knipper

php knipper

07/03/2013 23:13:25
Quote Anchor link
bij mijn weten is het slecht, je gaat hierdoor meer mogelijkheden krijgen door het gecodeerde te coderen.

Meschien is het een idee om te tellen om hoeveel letters het gaat en daarop een aangepaste codeer techniek te pakken.

tussen 0 en 5 = md5
groter = sha1

en het wachtwoord sla je dan op als bevoordeeld $aantal.$gecodeertwachtwoord

voorbeeld ik

ik = 2 letters dus md5
wachtwoord in database = 2.D35YHFEF345T6GHRQZGZGERRH ( natuurlijk geen echt codering )
 
Hoi geen

hoi geen

07/03/2013 23:25:04
Quote Anchor link
oke,

Ik dacht eigenlijk zo.

Als ik de code gebruik die hier boven beschreven staat en ik voer in als wachtwoord: wachtwoord1990.

De uitkomst zoals het in de database komt is dan: 4f71fccac43c73545ddd9cd772f37598.

Als je niet wat ik heb gebruikt om van wachtwoord1990 4f71fccac43c73545ddd9cd772f37598 temaken.

Dan lijkt me dat veiliger als alleen md5. om dat je niet weet hoe ik aan de uit komst kom.

Of is dit een verkeerde beredeneerin?
 
Frank Nietbelangrijk

Frank Nietbelangrijk

07/03/2013 23:42:25
Quote Anchor link
md5 kun je er beter uitslopen. sha1 met je eigen salt is genoeg. Waarschijnlijk stel je jezelf de vraag hoe je beveiliging beter kan maar vergeet je de voordeur van een goed slot te voorzien. Wat ik bedoel te zeggen is dat de zwakste schakel de sterkte van de beveiliging bepaalt. Bijvoorbeeld: Als je jouw salt in een php bestand zet in een goed geconfigureerde webserver dan zal die vanuit de browser niet te achterhalen zijn. Echter wanneer je een zwak wachtwoord gebruikt voor jouw FTP server en een hacker kan daar op inbreken dan is jouw beveiliging - hoe goed je die ook gemaakt hebt - in één klap helemaal waardeloos. Immers kun je vanuit FTP de inhoud van jouw PHP bestanden gewoon downloaden en lezen. Hetzelfde geldt voor je login van je admin panel.
 
Hoi geen

hoi geen

07/03/2013 23:44:46
Quote Anchor link
Oké ik denk dat ik het snap.

Dus alleen de sha1 + salt ( is de salt die ik gebruik niet erg lang? of maakt dit niet uit en zijn bijvoorbeeld 7 leestekensen en letters voldoende.
In iedergeval bebankt voor de duidelijke uitleg!
 

08/03/2013 00:00:54
Quote Anchor link
Zelf doe ik het meestal op de volgende manier. De gebruiker heeft een id die ik in combinatie met een salt gebruik als key. Daarna haal ik het door hash_hmac en dan is het wachtwoord beveiligd.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php

# Gebruiker als voorbeeld in een array:
$user['id'] = 2;
$user['password'] = 'Kikker123';

# Nu de gegevens door hash hmac halen:
echo hash_hmac('sha512', $user['password'], '@SuperGeheimeCode@'.$user['id'], false);

?>

Ook verplicht ik op een zekere manier de gebruikers om een stevig wachtwoord te kiezen met minstens één cijfer en één hoofdletter.

- edit - Verplichtingen v/d gebruiker
Gewijzigd op 08/03/2013 00:11:07 door
 
Frank Nietbelangrijk

Frank Nietbelangrijk

08/03/2013 00:30:29
Quote Anchor link
Beter is het om een iets langere salt aan te maken die random gegenereerd zijn:

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
<?php

function getRandomString($length = 32) {
    $validCharacters = '0123456789abcdefghijklmnopqrstuxyvwzABCDEFGHIJKLMNOPQRSTUXYVWZ+-*#&@!?$%^&()_={}[]\|/<>';
    $validCharNumber = strlen($validCharacters);
 
    $result = "";
 
    for ($i = 0; $i < $length; $i++) {
        $index = mt_rand(0, $validCharNumber - 1);
        $result .= $validCharacters[$index];
    }

 
    return $result;
}

 
echo getRandomString();
?>
 
Ozzie PHP

Ozzie PHP

08/03/2013 08:01:02
Quote Anchor link
@Frank: hoe reproduceer je die salt dan weer op het moment dat je het wachtwoord gaat controleren?
 
Marvin H

Marvin H

08/03/2013 09:22:57
Quote Anchor link
@Ozzie, je kan de salt toch in de database opslaan en een extra hash gebruiken die altijd hetzelfde is? Maar goed, dat is een beetje overbodig...:)
 
Frank Nietbelangrijk

Frank Nietbelangrijk

08/03/2013 10:02:49
Quote Anchor link
@Ozzie: Ozzie dit is een generator voor een willekeurige string. Die string copy-paste je gewoon in je config.php file.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$salt
= 'Ht%79enzonogmeerrarekarakters';
?>


@Marvin: Ik zou de salt niet in de database opslaan. als een hacker in je database is binnengedrongen dan loopt ie tegen gecodeerde wachtwoorden aan en heeft ie gelijk wat ie nodig heeft om ze te decoderen. Gewoon in PHP laten staan.
 
Ozzie PHP

Ozzie PHP

08/03/2013 10:59:14
Quote Anchor link
@Frank:

Ik begrijp je niet helemaal. Je schrijft 1 code om een salt te maken, en die ene salt sla je op in je config file? Dan kun je die salt toch ook gewoon zelf verzinnen?
 
Hoi geen

hoi geen

08/03/2013 12:06:34
Quote Anchor link
dit snap ik inderdaad ook niet helemaal!
 

08/03/2013 12:11:04
Quote Anchor link
Een willekeurige salt ben ik ook wel voor. Maar liever gebruik ik dan de gebruiker id, een stuk van het email adres (eventueel geencrypteerd). Het wachtwoord moet dan ook wel opnieuw opgeslagen worden als de gebruiker zijn gegevens veranderd. Maar dan denk ik wel dat je meer controle hebt over de gegevens. Want als je de key in het config bestand niet goed bewaard dan ben je natuurlijk de pineut. Bij mij is dit ook zo. Daarom sla ik mijn key altijd meermaals beveiligd op.

Zelf gebruik ik hash_hmac met een key dat ik in een config bestand opsla. Meestal genereer ik mijn keys via Wordpress.
Gewijzigd op 08/03/2013 12:14:49 door
 



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.