Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

lưu trữ mật khẩu trong SQL Server

Cách thông thường để lưu trữ mật khẩu là sử dụng hàm băm trên mật khẩu nhưng muối nó trước. Điều quan trọng là phải "muối" mật khẩu, để tự bảo vệ mình trước bảng cầu vồng các cuộc tấn công.

Vì vậy, bảng của bạn sẽ trông giống như vậy

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

Khi kiểm tra xem một mật khẩu nhất định có khớp với người dùng hay không, bạn nên nối muối với mật khẩu đã cho và tính hàm băm của chuỗi kết quả. Nếu đầu ra của hàm băm khớp với hash cột - đó là mật khẩu chính xác.

Tuy nhiên, điều quan trọng là phải hiểu rằng ý tưởng muối băm có một lý do cụ thể - để ngăn bất kỳ ai có quyền truy cập vào cơ sở dữ liệu biết mật khẩu của bất kỳ ai (được coi là vấn đề khó khăn để đảo ngược đầu ra của hàm băm). Vì vậy, ví dụ:DBA của ngân hàng, sẽ không thể đăng nhập vào tài khoản ngân hàng của bạn, ngay cả khi anh ta có quyền truy cập vào tất cả các cột.

Bạn cũng nên cân nhắc sử dụng nó nếu bạn cho rằng người dùng của mình sẽ sử dụng mật khẩu nhạy cảm (ví dụ:mật khẩu cho tài khoản gmail của họ) làm mật khẩu cho trang web của bạn.

IMHO không phải lúc nào cũng cần có một tính năng bảo mật. Vì vậy, bạn nên suy nghĩ xem bạn có muốn nó hay không.

Xem bài viết này để có một bản tóm tắt tốt về cơ chế này.

Cập nhật: Điều đáng nói là để tăng cường bảo mật chống lại cuộc tấn công có chủ đích nhằm đảo ngược hàm băm của mật khẩu cá nhân, bạn nên sử dụng bcrypt , có thể khó tính toán một cách tùy ý. (Nhưng trừ khi bạn thực sự sợ hãi từ người đàn ông mặc đồ đen bí ẩn nhắm mục tiêu vào cơ sở dữ liệu cụ thể của bạn, tôi nghĩ sha1 là đủ tốt. Tôi sẽ không giới thiệu phụ thuộc khác cho dự án của mình để bảo mật bổ sung này. Điều đó nói rằng, không có lý do gì để không sử dụng sha1 100 lần, điều này sẽ cho hiệu ứng tương tự).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. cách hiển thị giá trị cột chỉ một lần nếu nó được lặp lại và để trống cho đến khi giá trị khác xuất hiện trong sql

  2. Sử dụng Cảnh báo và Toán tử trong SQL Server

  3. Làm cách nào để thực hiện nhiều điều kiện CASE WHEN bằng SQL Server 2008?

  4. PHP Lỗi nghiêm trọng:Gọi đến hàm không xác định mssql_connect ()

  5. Sử dụng APP_NAME () để lấy tên ứng dụng của phiên hiện tại trong SQL Server