Salt & Pepper

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

 - Diov  -

- Diov -

01/05/2012 14:09:54
Quote Anchor link
Beste,
ik gebruikte vroeger altijd md5 en niets anders.
Naar aanrading heb ik het volgende:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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;
?>


Is dit veiliger?
Kan het nog veiliger? Hoe?
Alvast bedankt!
 
PHP hulp

PHP hulp

25/04/2024 10:53:19
 
Reshad F

Reshad F

01/05/2012 14:29:42
Quote Anchor link
ik gebruik dit en het is wel veilig

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
        $salt
= "#@#123456789876548946234986$$23#423#%FAW%#AWD1314";    
        $pass = "hierkomtwachtwoord".$salt;

?>


en hieronder voorbeeld hoe dit toe te passen

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
<?php
$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.
 
Jeroen VD

Jeroen VD

01/05/2012 14:35:35
Quote Anchor link
je hoeft inderdaad bij een encryptie geen mysql_real_escpape_string() te gebruiken.

ik doe altijd iets van
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
    $pass
= hash('sha245' , $salt . $password . $pepper);
?>

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.
 
M grootveld

M grootveld

01/05/2012 14:48:17
Quote Anchor link
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.
 
Wouter J

Wouter J

01/05/2012 16:06:46
Quote Anchor link
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.
 
Marco PHPJunky

Marco PHPJunky

01/05/2012 16:30:16
Quote Anchor link
@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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php
$salt
= rand(100, 9999);
$pepper = rand(100, 9999);
$password = 'welkom';

foreach (hash_algos() as $v) {
        $r = hash($v, $salt . $password . $pepper, false);
        printf("%-12s %3d %s <br />", $v. '&nbsp;&nbsp;', strlen($r), '&nbsp;&nbsp;'.$r);
}


?>
Gewijzigd op 01/05/2012 16:42:24 door Marco PHPJunky
 
Jeroen VD

Jeroen VD

01/05/2012 16:54:32
Quote Anchor link
ik bedoel inderdaad sha256.
 

01/05/2012 17:03:05
Quote Anchor link
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:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
class pass_secur{
    function pass(){
            $pepper        =    uniqid();
            $salt         =     sha1(md5('abcdefghijklmnopqrstuvwxzyABCDEGHIJKLMNOPQRSTUVWXYZ1234567890'));    
            $pass        =     "La";    
            $pass        =     $_POST['password'];    
            $password    =  sha1((md5($salt.$password.$pepper)));
            
    }
}
 
Jeroen VD

Jeroen VD

01/05/2012 17:04:29
Quote Anchor link
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
 
Reshad F

Reshad F

01/05/2012 17:04:58
Quote Anchor link
@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
Gewijzigd op 01/05/2012 17:06:06 door Reshad F
 
Wouter J

Wouter J

01/05/2012 17:08:46
Quote Anchor link
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
 

01/05/2012 17:13:03
Quote Anchor link
Ik heb het veranderd naar:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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)));
            
    }
}


Is dit goed zo?
Gewijzigd op 01/05/2012 17:14:07 door
 
Jens erd

Jens erd

01/05/2012 17:13:27
Quote Anchor link
@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.
Gewijzigd op 01/05/2012 17:15:29 door Jens erd
 
Eddy E

Eddy E

01/05/2012 18:13:28
Quote Anchor link
En zeker niet als het zo simpel is als abc...890.
Pak dan gewoon 1 lange zin uit een boek oid.
 
 - Diov  -

- Diov -

01/05/2012 18:30:30
Quote Anchor link
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.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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

?>



in plaats van een uniqid bij pepper zou ik de registratiedatum - 1001 dagen doen.
Of is dit niet veilig genoeg?
 
Jeroen VD

Jeroen VD

01/05/2012 18:35:41
Quote Anchor link
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)
 
 - Diov  -

- Diov -

01/05/2012 18:41:14
Quote Anchor link
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.
 



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.