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

Cách tốt nhất để lưu trữ dữ liệu nhạy cảm trong MySQL là gì?

Nghiêm túc mà nói, KHÔNG SỬ DỤNG aes_encrypt () của MySQL Đây là phương pháp sử dụng mật mã khối không an toàn nhất. Nó đang sử dụng chế độ ECB và tôi có thể đưa ra một ví dụ minh họa đơn giản tại sao đây là một sai lầm nghiêm trọng.

Tin nhắn văn bản thuần túy:

Cùng một thông báo được mã hóa bằng chế độ ECB (không quan trọng bạn sử dụng mật mã nào):

Cùng một thông báo CHÍNH XÁC sử dụng chế độ CBC (một lần nữa, không quan trọng bạn sử dụng mật mã nào):

nhiều lý do hơn nữa không sử dụng aes_encrypt của mysql, đáng chú ý nhất là mọi truy vấn bạn gửi đi cũng sẽ có khóa aes mà bạn sử dụng. Nếu cơ sở dữ liệu bị xâm phạm, kẻ tấn công sẽ kích hoạt ghi nhật ký và chỉ cần lấy khóa aes của bạn và giải mã toàn bộ cơ sở dữ liệu .

Vì vậy, những gì nên bạn sử dụng? Tôi thích lớp này trong thời điểm hiện tại. Nó sử dụng chế độ CBC với chức năng String2Key và IV. Bạn có thể sử dụng khóa chính làm IV của mình, mỗi thư phải có một IV duy nhất. Sẽ ổn nếu kẻ tấn công biết IV và nếu chúng liên tục, miễn là việc triển khai mật mã khối được bảo mật. Việc sử dụng lại IV khiến WEP kém an toàn hơn nhiều .



  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 lưu trữ html trong cơ sở dữ liệu mysql

  2. Tìm người dùng trong Laravel theo tên người dùng

  3. Cách viết truy vấn MySQL trả về một cột tạm thời có chứa cờ cho biết mục liên quan đến hàng đó có tồn tại trong bảng khác hay không

  4. Thứ tự Zend_Db theo trường Giá trị

  5. Cách buộc PHP đọc các dòng mới và trả về dưới dạng