Salt & Pepper
Beste,
ik gebruikte vroeger altijd md5 en niets anders.
Naar aanrading heb ik het volgende:
Is dit veiliger?
Kan het nog veiliger? Hoe?
Alvast bedankt!
ik gebruikte vroeger altijd md5 en niets anders.
Naar aanrading heb ik het volgende:
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php
$invoer = sha1(mysql_real_escape_string($_POST['wachtwoord']));
$salt = "GjtehGRJ527sTG";
$pepper = "84JKDJGdjaHHda8";
$uitvoer = md5($pepper.$invoer.$salt);
echo $uitvoer;
?>
$invoer = sha1(mysql_real_escape_string($_POST['wachtwoord']));
$salt = "GjtehGRJ527sTG";
$pepper = "84JKDJGdjaHHda8";
$uitvoer = md5($pepper.$invoer.$salt);
echo $uitvoer;
?>
Is dit veiliger?
Kan het nog veiliger? Hoe?
Alvast bedankt!
ik gebruik dit en het is wel veilig
en hieronder voorbeeld hoe dit toe te passen
note*: ik gebruik de sha1 pas in de query.
volgens mij hoef je geen mysql_real_escape_string te doen als je al sha1 gebruikt maar daar moet iemand anders maar even antwoord opgeven die het zeker weet.
Code (php)
1
2
3
4
5
2
3
4
5
<?php
$salt = "#@#123456789876548946234986$$23#423#%FAW%#AWD1314";
$pass = "hierkomtwachtwoord".$salt;
?>
$salt = "#@#123456789876548946234986$$23#423#%FAW%#AWD1314";
$pass = "hierkomtwachtwoord".$salt;
?>
en hieronder voorbeeld hoe dit toe te passen
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
$sql = "INSERT INTO members(name, password)
VALUES('name', '".sha1($pass)."')";
$aanmaken = mysql_query($sql);
if ($aanmaken === false){
echo mysql_error();
}
else {
echo "gelukt!";
}
?>
$sql = "INSERT INTO members(name, password)
VALUES('name', '".sha1($pass)."')";
$aanmaken = mysql_query($sql);
if ($aanmaken === false){
echo mysql_error();
}
else {
echo "gelukt!";
}
?>
note*: ik gebruik de sha1 pas in de query.
volgens mij hoef je geen mysql_real_escape_string te doen als je al sha1 gebruikt maar daar moet iemand anders maar even antwoord opgeven die het zeker weet.
je hoeft inderdaad bij een encryptie geen mysql_real_escpape_string() te gebruiken.
ik doe altijd iets van
kan eigenlijk nouwelijks veiliger. kost je alleen een hoop geheugen door er extra encryptie overheen te gooien. voor een bruteforce attack maakt het niet uit, en uit de ecryptie de oorspronkelijke string terug te vinden is onmogelijk.
als je de salt/pepper ook nog eens dynamisch maakt, tada.
ik doe altijd iets van
kan eigenlijk nouwelijks veiliger. kost je alleen een hoop geheugen door er extra encryptie overheen te gooien. voor een bruteforce attack maakt het niet uit, en uit de ecryptie de oorspronkelijke string terug te vinden is onmogelijk.
als je de salt/pepper ook nog eens dynamisch maakt, tada.
Jeroen vd op 01/05/2012 14:35:35:
je hoeft inderdaad bij een encryptie geen mysql_real_escpape_string() te gebruiken.
Lol, zit ik mezelf daar altijd zo druk om te maken. Haha. Ik gebruik altijd sha1 :P.
Lees dit topic eens: http://www.phphulp.nl/php/forum/topic/hash/82588/
En inderdaad mysql_real_escape_string is onnodig als je een wachtwoord hashed, vreemde tekens worden er toch al uit gehashed.
Ik zou een hogere Sha de voorkeur geven, is altijd beter.
En inderdaad mysql_real_escape_string is onnodig als je een wachtwoord hashed, vreemde tekens worden er toch al uit gehashed.
Ik zou een hogere Sha de voorkeur geven, is altijd beter.
@jeroen vd:
Ik denk dat je sha256 of sha384 of sha512 bedoelt want sha245 bestaad niet naar mijn weten om. (kan er ook naast zitten)
Maar ik zou idd een random salt en pepper gebruiken en dan de random waarde samen in een appart veld zetten.
En aan de hand daarvan kan je checken of alles klopt.
ps. deze code kan je gebruiken om te kijken welke er allemaal zijn:
Ik denk dat je sha256 of sha384 of sha512 bedoelt want sha245 bestaad niet naar mijn weten om. (kan er ook naast zitten)
Maar ik zou idd een random salt en pepper gebruiken en dan de random waarde samen in een appart veld zetten.
En aan de hand daarvan kan je checken of alles klopt.
ps. deze code kan je gebruiken om te kijken welke er allemaal zijn:
Code (php)
Gewijzigd op 01/05/2012 16:42:24 door Marco PHPJunky
ik bedoel inderdaad sha256.
Beste,
Jullie hebben het over sha256, hoe zet ik dat in mijn code?
Sha256($password) doet niet wat sha1 wel doet..
Momenteel heb ik deze code:
Jullie hebben het over sha256, hoe zet ik dat in mijn code?
Sha256($password) doet niet wat sha1 wel doet..
Momenteel heb ik deze code:
bekijk de functie hash() eens. die heeft twee parameters: de encryptiemethode en het te encrypten string.
ahs256, sha1, sha512, kan allemaal als de eerste paramater. zie php.net
ahs256, sha1, sha512, kan allemaal als de eerste paramater. zie php.net
@cailin volgens mij is het niet de bedoeling dat je meerdere keren sha1 gebruikt.. eenmaal zou genoeg moeten zijn.
anders maak je het jezelf alleen maar lastiger
anders maak je het jezelf alleen maar lastiger
Gewijzigd op 01/05/2012 17:06:06 door Reshad F
Cailin, wat je nu doet is verkeerder dan verkeerd. Meerdere hash methodes over elkaar zorgt ervoor dat een string alleen maar minder uniek wordt en dus minder veilig.
Gewijzigd op 01/05/2012 17:08:54 door Wouter J
Ik heb het veranderd naar:
Is dit goed zo?
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
class pass_secur{
function pass(){
$pepper = uniqid();
$salt = 'abcdefghijklmnopqrstuvwxzyABCDEGHIJKLMNOPQRSTUVWXYZ1234567890';
$pass = $_POST['password'];
$password = hash('sha256', sha1(($salt.$password.$pepper)));
}
}
function pass(){
$pepper = uniqid();
$salt = 'abcdefghijklmnopqrstuvwxzyABCDEGHIJKLMNOPQRSTUVWXYZ1234567890';
$pass = $_POST['password'];
$password = hash('sha256', sha1(($salt.$password.$pepper)));
}
}
Is dit goed zo?
@Marco PHPJunky en andere hierboven
(...)
Als je persé gebruik wil maken van een dynamische salt/pepper voer dan een leuke berekening uit op bijvoorbeeld de registratiedatum: haal hier 1001 dagen van af en je hebt een leuke salt. Je salt letterlijk in een database zetten is een cadeautje voor een hacker, niet doen dus. Random getallen zijn leuk maar helpen geen bal.
(...)
Als je persé gebruik wil maken van een dynamische salt/pepper voer dan een leuke berekening uit op bijvoorbeeld de registratiedatum: haal hier 1001 dagen van af en je hebt een leuke salt. Je salt letterlijk in een database zetten is een cadeautje voor een hacker, niet doen dus. Random getallen zijn leuk maar helpen geen bal.
Gewijzigd op 01/05/2012 17:15:29 door Jens erd
En zeker niet als het zo simpel is als abc...890.
Pak dan gewoon 1 lange zin uit een boek oid.
Pak dan gewoon 1 lange zin uit een boek oid.
Beste,
eerst en vooral bedankt voor de goede reacties.
@ Marco,
ik heb je 'script' uitgeprobeerd.
Er komen een hele boel cijfers tevoorschijn.
Maar als ik refresh verandert alle codes, hoe kan ik het wachtwoord dan controleren?
@ Wouter J, ik heb dit topic eens doorgenomen en kwam op dit script.
in plaats van een uniqid bij pepper zou ik de registratiedatum - 1001 dagen doen.
Of is dit niet veilig genoeg?
eerst en vooral bedankt voor de goede reacties.
@ Marco,
ik heb je 'script' uitgeprobeerd.
Er komen een hele boel cijfers tevoorschijn.
Maar als ik refresh verandert alle codes, hoe kan ik het wachtwoord dan controleren?
@ Wouter J, ik heb dit topic eens doorgenomen en kwam op dit script.
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
$salt = 'hier komt een moeilijke zin!'; // een static salt
$pepper = uniqid(); // een dynamische pepper
$ww = sha256($_POST[''password]); // real_escape_string overbodig in combinatie met een decrypter
$ww = $salt.$ww.$pepper; // breng alles bij elkaar en serveer een heel mooi diner
?>
$pepper = uniqid(); // een dynamische pepper
$ww = sha256($_POST[''password]); // real_escape_string overbodig in combinatie met een decrypter
$ww = $salt.$ww.$pepper; // breng alles bij elkaar en serveer een heel mooi diner
?>
in plaats van een uniqid bij pepper zou ik de registratiedatum - 1001 dagen doen.
Of is dit niet veilig genoeg?
of iets met het mailadres. of iets met het user_id. in ieder geval iets wat in de database staat en niet veranders kan worden (in ieder geval niet voor jouw applicatie, email kan veranderen, maar misschien niet bij jouw)
Email adres kunnen ze veranderen.
Misschien iets met het id.
Misschien iets erbij tellen, en dan delen door een lastig getal met kommas?
Toevoeging op 01/05/2012 18:57:20:
Om die pepper te bepalen, moet ik dan eerst de gegevens vanuit de database uitroepen en in een row zetten?
Denk wel dat jullie het zo bedoelen.
Misschien iets met het id.
Misschien iets erbij tellen, en dan delen door een lastig getal met kommas?
Toevoeging op 01/05/2012 18:57:20:
Om die pepper te bepalen, moet ik dan eerst de gegevens vanuit de database uitroepen en in een row zetten?
Denk wel dat jullie het zo bedoelen.




