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

Mã hóa mật khẩu trước khi lưu trữ trong cơ sở dữ liệu?

Mặc dù câu trả lời bên dưới về mặt kỹ thuật vẫn đúng, php có các đề xuất mới liên quan đến các thuật toán băm để sử dụng. Đề xuất của họ , kể từ php> =5.5.0, là sử dụng password_hash password_verify chức năng băm và xác minh mật khẩu đã băm. Như một lợi ích bổ sung, các chức năng này tự động bao gồm một muối được cá nhân hóa như một phần của hàm băm được trả về, vì vậy bạn không cần phải lo lắng về điều đó một cách rõ ràng.

Nếu bạn không quan tâm đến việc truy xuất giá trị thực của mật khẩu (từ giá trị được mã hóa của cơ sở dữ liệu), bạn có thể chạy thuật toán băm một chiều trên đó (chẳng hạn như sha1). Hàm này sẽ trả về một chuỗi có độ dài cụ thể (băm) mà không thể được sử dụng để tìm chuỗi ban đầu (về mặt lý thuyết). Có thể hai chuỗi khác nhau có thể tạo ra cùng một hàm băm (được gọi là xung đột) nhưng điều này không phải là vấn đề với mật khẩu.
Ví dụ: $pass = sha1($_REQUEST['pass']);

Một điều, để làm cho nó an toàn hơn một chút là thêm một muối vào hàm băm và chạy lại hàm băm. Điều này khiến việc tạo mã băm mật khẩu một cách độc hại trở nên khó khăn hơn vì giá trị muối chỉ được xử lý ở phía máy chủ.
Ví dụ: $pass = sha1(sha1($_REQUEST['pass']).sha1("[email protected]$#(%"));



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Truy vấn Ecto và hàm MySQL tùy chỉnh với độ hiếm thay đổi

  2. kết quả truy vấn mysql vào mảng php

  3. làm cách nào để chèn nhiều giá trị trong mysql và tránh trùng lặp

  4. Loại bỏ hoàn toàn MariaDB hoặc MySQL khỏi CentOS 7 hoặc RHEL 7

  5. Truy vấn từ hai bảng trong báo cáo