Præsentation er lastning. Vent venligst

Præsentation er lastning. Vent venligst

Password hashing Webintegrator HF1 PHP Object orienteret.

Lignende præsentationer


Præsentationer af emnet: "Password hashing Webintegrator HF1 PHP Object orienteret."— Præsentationens transcript:

1 Password hashing Webintegrator HF1 PHP Object orienteret

2 Hashing Denne præsentation gennemgår grund principperne i sikring af passwords, men da dette emne er under konstant udvikling er det ikke nødvendig vis nyeste metoder. Grund ideen i Hashing af password er at forhindre at hackere som får adgang til din database samtidig har adgang til dine brugeres password. Eller at gøre det vanskeligere. Problemet er især aktuelt fordi mange internetbrugere har samme password på flere sites. Ved Hashing ”kryptere” man passwordet inden det gemmes i databasen så det ikke umiddelbart kan læses. Det er dog ikke en rigtig kryptering da passwordet ikke kan dekrypteres igen. Ved Hashing af et password genereres en lang streng af tilsyneladende tilfældige karaktere. Længden af denne streng er med til at øge sikkerheden. Strengen er dog ikke mere tilfældig end at samme password altid vil give samme Hash, hvilket er det man benytter når man skal se om det indtastede password er korrekt. © Mercantec 2014

3 Hashing i PHP I eksemplet herunder bliver passsworded test1234 hashed. $pw = "test1234"; $pwhash = password_hash($pw,PASSWORD_DEFAULT); echo $pwhash; Resultatet af dette hashing bliver $2y$10$pIssCeqAqx6EiNaTOCEmDemBR9/GaHjNbXArLPInWLIgaMsma8rKK og det er denne værdi vi skal gemme i databasen. Når vi skal tjekke om et indtastet password er korrekt sker det ved at tjekke om det indtastede password giver samme Hash som det der er gemt i databasen. © Mercantec 2014

4 PHP eksempel Eksemplet her tjekker om det password der indtastes giver samme hash som der der er gemt i koden. <?php //Værdien herunder er for password test1234 $pwhash = "$2y$10$pIssCeqAqx6EiNaTOCEmDemBR9/GaHjNbXArLPInWLIgaMsma8rKK"; if (isset($_POST['pwd'])){ if (password_verify($_POST['pwd'], $pwhash)){ echo "Password er korrekt"; } else { echo "Password er forkert"; } die(); } ?> © Mercantec 2014

5 Salt Et af problemerne med sikkerhed er korte passwords og speciel hvis to brugere har samme password, da de derved også vil få samme hash hvilket giver hackerne lettere adgang til at gætte koden. Et andet problem er at det er forholdsvis simplet at sætte en computer til at afprøve alle muligheder indtil man finder et password med samme hash value. For at øge sikkerheden kan man salte sit password. I praksis er det blot at forlænge password ved at tilføje en tilfældig genereret streng til sit password. Resultatet af dette hashes og gemmes i databasen sammen med det benyttede salt. Her er et eksempel på en funktion som genererer tilfældige strenge function generateRandomString($length = 10) { $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; $charactersLength = strlen($characters); $randomString = ''; for ($i = 0; $i < $length; $i++) { $randomString.= $characters[rand(0, $charactersLength - 1)]; } return $randomString; } © Mercantec 2014

6 JavaScript hashing For at øge sikkerheden yderligere vælger nogle at hashe password inden det sendes til serveren. Det er dog en omdiskuteret metode og mange mener at det giver falsk tryghed. Problemet er at hackeren har samme muligheder for at opsnappe dit hash som dit password, og kan dermed alligevel opnå adgang til serveren. Samtidig vil enhver med adgang til dit website også have adgang til dit JavaScript og kan derfor nemt se hvordan du har lavet koden. © Mercantec 2014

7


Download ppt "Password hashing Webintegrator HF1 PHP Object orienteret."

Lignende præsentationer


Annoncer fra Google