• Početna
  • O nama
  • LimundoGrad
  • Limundo
  • Kupindo
  • Sigurnost
  • IT
  • Zabava i učenje
  • Plaćanje
  • API
LimundoGrad blog
  • Početna
  • O nama
  • LimundoGrad
  • Limundo
  • Kupindo
  • Sigurnost
  • IT
  • Zabava i učenje
  • Plaćanje
  • API
Home  /  IT  /  PHP preporuke petkom – čuvanje lozinki u bazi na siguran način

PHP preporuke petkom – čuvanje lozinki u bazi na siguran način

Autor:Miodrag Stefanović
29. марта 2013. IT Comments are off
Sigurnost lozinke
Preuzeto sa xkcd.com

Svaka iole komplikovanija PHP aplikacija zahteva čuvanje username/password parova u bazi podataka, radi omogućavanja korisnicima da se prijave na nju koristeći svoju lozinku. Korisnička lozinka je vrlo osetljiv podatak i njeno čuvanje u bazi podataka u kriptovanom obliku je obavezno.

Ovakav način čuvanja će onemogućiti eventualnog napadača, koji je došao do neovlašćenog pristupa podacima iz baze, da sazna lozinke svih korisnika vaše aplikacije. S obzirom na to da korisnici često koriste iste lozinke za razne servise (webmail, facebook, ebanking i sl.), napadač bi mogao da iskoristi kompromitovane lozinke da pristupi čitavom nizu servisa koje koristi kompromitovani korisnik.

Najbolji način za zaštitu korisičkih lozinki je korišćenje hashing algoritma za kriptovanje lozinki. Hash algoritmi su ireverzibilni, što znači da ne postoji analitički algoritam za dekriptovanje jednom hashovane lozinke, to jest ni programer koji je razvio aplikaciju ne može da sazna lozinke svojih korisnika iako ima pun pristup bazi. Provera da li je korisnik uneo ispravnu username/password kombinaciju se u tom slučaju vrši poređenjem hashovanih vrednosti, a ne originalnih unosa.

<?php

//Snimanje lozinke u bazu
$LozinkaHash=crypt($LozinkaOriginal,’neki salt string’);
$Upit=”UPDATE KorisniciSpisak SET LozinkaKorisnicka=’$LozinkaHash’ WHERE UsernameKorisnicki=’$KorisnickoIme'”;
mysql_query($Upit);

//Provera unete lozinke
$LozinkaUnetaHash=crypt($LozinkaUneta,’neki salt string’);
$Upit=”SELECT * FROM KorisniciSpisak WHERE LozinkaKorisnicka=’$LozinkaUnetaHash’ AND UsernameKorisnicki=’$KorisnickoIme'”;

//Polja LozinkaKorisnicka i UsernameKorisnicki bi trebalo indeksirati radi ubrzanja  izvrsavanja upita

?>
Naravno uvek je potrebno izvršiti pravilnu sanitizaciju prosleđenih stringova, o čemu možete više da pročitate u članku o sanitizaciji u PHP-u.

Za samo hashovanje ne bi trebalo koristiti zastarele MD5 ili SHA algoritme. Oni su razvijeni relativno davno sa ciljem da budu brzi. Međutim, sa modernom opremom je moguće jako brzo razbiti lozinke hashovane ovim algoritmima primenom grube sile (brute force).
Najprostija zamena je crypt() PHP funkcija koja u osnovnoj varijanti koristi algoritam zasnovan na DES enkripciji.

Takođe je preporuka da se prilikom hashovanja koristi takozvani ‘salt’. Salt je string koji se dodaje prilikom hashovanja sa ciljem dobijanja drugačijeg rezultata od onog koji bi se dobio primenom standardnog algoritma bez salta. Ovakve hash rezultate nije moguće prosto dekriptovati koristeći javne lookup tabele sa unapred ubačenim parovima originalni string -> hashovani string (takozvane rainbow tables), što dodaje sigurnost enkripciji lozinki.

Na kraju uvek važi napomena koja nije direktno vezana za samu temu ovog teksta, ali je jako važna – Pažljivo birajte lozinke koje koristite i uvek imajte u vidu da moderni kompjuteri vrlo jeftino mogu da urade ogromnu količinu proračuna i grubom silom razbiju lozinke koje su pre samo 10 godina bile ‘neprobojne’. Preporuke o biranju najsigurnije lozinke možete pročitati u članku Kako odabrati sigurnu lozinku.

Kao i uvek možete nam postaviti pitanja direktno na blogu ili preko našeg twitter naloga @Limundogradnja

Podeli tekst
Share on Facebook
Share on Twitter
Share on Whatsapp
 Prethodni post Auto tuning i veliki Kupindo giveaway
Sledeći post   [NOVO] Limundo 3D konfiguracija

Povezani postovi

  • Pogled ka Tajvanu

    16. септембра 2016.
  • Srećan SysAdmin day!

    29. јула 2016.
  • Kako kreirati sigurnu lozinku

    17. маја 2016.
Advertisement

Popularno na Kupindu

U potrazi ste za udžbenicima za osnovnu ili srednju školu? Pogledajte na Kupindu:

➡️ Udžbenici za osnovnu školu
➡️ Udžbenici za srednju školu

Ovde ćete pronaći udžbenike za svaki razred i izdanja gotovo svih izdavača koje današnje škole traže. Uštedite na kupovini udžbenika.

  • Najpopularnije
  • Poslednji postovi
  • Za sledećih 15 Vladimir Nikolić 22. маја 2021. Limundo 607
  • Hoću da znam šta je neko kupio i prodao Vladan Jović 16. децембра 2013. LimundoGrad 355
  • Kako da ocenim prodavca (a da to bude ispravno)? Ana Mladenović 12. марта 2013. LimundoGrad 248
  • Veštačko nuđenje – istine i laži Vladan Jović 11. јуна 2013. Limundo 234
  • Cenovnik + opcije + brzina Aleksandra Vuković 15. марта 2012. Blog 211
  • Dani ploča na Kupindu: Vinil ne izlazi iz mode! Dunja Stojković 13. марта 2025. Kupindo
  • Top 10 predmeta sa Limunda i Kupinda u 2024. godini! Dunja Stojković 31. децембра 2024. LimundoGrad
  • Digital Awards 2024: Limundo osvojio nagradu za najbolju radijsku kampanju! Dunja Stojković 30. септембра 2024. LimundoGrad
  • Polovna odeća kao znak stila: 10 vrhunskih modnih brendova koje nećete naći u tržnom centru Ivana Lučić 26. августа 2024. LimundoGrad
  • Uživanje u letnjem danu – detalji koji čine baštu posebnom Dunja Stojković 1. августа 2024. Zabava i učenje

Skorašnji komentari

  • Jovana Milenković Arizanović на Tri najjeftinija načina za slanje paketa u LimundoGradu
  • Marija Protic на Tri najjeftinija načina za slanje paketa u LimundoGradu
  • Jovana Milenković Arizanović на Tri najjeftinija načina za slanje paketa u LimundoGradu
  • janoš на Tri najjeftinija načina za slanje paketa u LimundoGradu
  • janoš на Tri najjeftinija načina za slanje paketa u LimundoGradu

Vremeplov

© 2008. LimundoGrad d.o.o. Creative Commons License Ovo delo je licencirano pod uslovima licence Creative Commons Autorstvo-Nekomercijalno-Bez prerada 4.0 Međunarodna licenca
LimundoGrad koristi kolačiće u statističke i marketinške svrhe. Nastavkom korišćenja sajta smatramo da ste pristali na upotrebu kolačića.OKViše informacija