Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Popraw haszowanie hasła za pomocą losowej soli

Atakujący jest „dozwolony” znać sól — Twoje bezpieczeństwo musi być zaprojektowane w taki sposób, aby nawet przy znajomości soli było nadal bezpieczne.

Co robi sól?

Sól pomaga w obronie przed atakami brute-force za pomocą wstępnie obliczonych „tabel tęczowych”.
Sól sprawia, że ​​atak brute-force jest znacznie droższy (pod względem czasu/pamięci) dla atakującego.
Obliczanie takiej tabeli jest kosztowny i zwykle wykonywany tylko wtedy, gdy można go użyć do więcej niż jednego ataku/hasła.
Jeśli użyjesz tej samej soli dla wszystkich haseł, osoba atakująca może wstępnie obliczyć taką tabelę, a następnie wymusić brutalne przekształcenie haseł w zwykły tekst ...
Dopóki wygenerujesz nową (najlepiej silną kryptograficznie) losową sól dla każdego hasła, którego hash chcesz przechowywać, nie ma problemu.

JEŚLI chcesz jeszcze bardziej wzmocnić bezpieczeństwo
Możesz policzyć hasz kilka razy (haszować hasz itp.) - nie kosztuje to dużo, ale sprawia, że ​​atak brute-force / obliczanie "tęczowych tabel" jest jeszcze droższe... proszę nie nie wymyślaj siebie - istnieją sprawdzone standardowe metody, aby to zrobić, zobacz na przykład http://en. wikipedia.org/wiki/PBKDF2 i http://www.itnewb.com/tutorial/Encrypting-Passwords-with-PHP-for-Storage-Using-the-RSA-PBKDF2-Standard

UWAGA:

Stosowanie takiego mechanizmu jest w dzisiejszych czasach obowiązkowe ponieważ „czas procesora” (nadający się do ataków takich jak tęczowe tablice/brute force itp.) staje się coraz szerzej dostępny (patrz na przykład fakt, że usługa Amazon w chmurze znajduje się wśród 50 najszybszych superkomputerów na świecie i może być używana przez każdego za stosunkowo niewielką kwotę)!



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak połączyć się z bazą danych MySQL

  2. INSERT INTO... SELECT bez wyszczególniania wszystkich kolumn

  3. Jak napisać zapytanie MySQL, które zwraca tymczasową kolumnę zawierającą flagi określające, czy element powiązany z tym wierszem istnieje w innej tabeli

  4. Połączenie wewnętrzne laravel 5.2

  5. Jak rozwiązać problem przepełnienia stosu wątków mysql?