Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

съхраняване на пароли в SQL Server

Обичайният начин за съхраняване на паролата е да се използва хеш функция за паролата, но да се сол то предварително. Важно е да "солите" паролата, за да се защитите срещу rainbow table атаки.

Така че вашата таблица трябва да изглежда нещо подобно

._______._________________.______________.
|user_id|hash             |salt          |
|-------|-----------------|--------------|
|12     |[email protected]|13%!#tQ!#3t...|
|       |...              |...           |

Когато проверявате дали дадена парола съвпада с потребител, трябва да свържете солта към дадената парола и да изчислите хеш функцията на резултантния низ. Ако изходът на хеш функцията съвпада с hash колона - това е правилната парола.

Важно е обаче да се разбере, че идеята за сол-хеш има конкретна причина - да попречи на всеки с достъп до базата данни да знае паролата на когото и да било (смята се за труден проблем да се обърне изход на хеш функция). Така например, DBA на банката няма да може да влезе в банковата ви сметка, дори ако има достъп до всички колони.

Трябва също така да обмислите използването му, ако смятате, че вашите потребители ще използват чувствителна парола (например паролата си за акаунта си в gmail) като парола за вашия уебсайт.

IMHO не винаги е необходима защитна функция. Така че трябва да помислите дали го искате или не.

Вижте тази статия за добро обобщение на този механизъм.

Актуализация: Струва си да се спомене, че за допълнителна сигурност срещу насочена атака за обръщане на хеша на индивидуалната парола, трябва да използване на bcrypt , което може да бъде произволно трудно за изчисляване. (Но освен ако наистина не се страхувате от мистериозен човек в черно, насочен към вашата конкретна база данни, мисля, че sha1 е достатъчно добър. Не бих въвел друга зависимост за моя проект за тази допълнителна сигурност. Въпреки това няма причина да не използвате sha1 100 пъти, което би дало подобен ефект).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Създаване на VIEW от множество таблици, всяка с различен брой колони

  2. Условен SQL ПОРЪЧАЙТЕ ПО ASC/DESC за алфа колони

  3. Използване на SELECT SCOPE_IDENTITY() в ADODB Recordset

  4. Многочастният идентификатор TextBox1.Text не може да бъде обвързан в C# ASP.NET?

  5. първичен ключ и външен ключ