Tôi nghĩ việc lưu trữ bất kỳ thứ gì trong SQL là tốt, chỉ cần mã hóa nó trước tiên. Nếu bạn cần xác định dữ liệu theo một cách nào đó (chẳng hạn như với khóa duy nhất cho mục nhập DB), hãy tạo chuỗi ngẫu nhiên hoặc băm bảo mật và lưu trữ dữ liệu được mã hóa của bạn.
Tốt nhất là nên gắn bó với thứ gì đó đã được thử và thử nghiệm. Vì nó là một DB (có lẽ là cho một hệ thống thanh toán) nó sẽ là tốt để có thu hồi nhanh. Vì vậy, tránh xa mã hóa bất đối xứng - mà bạn chỉ nên sử dụng để mã hóa các khóa đối xứng nếu bạn cần chia sẻ chúng với ai đó.
Một số cường độ cụ thể (nói 256 bit) của AES sẽ ổn. Tôi rất vui khi biết chi tiết cá nhân của mình mà chúng tôi đã bảo đảm theo cách này.
Về lưu trữ mật khẩu người dùng, thực tế phổ biến là tạo một muối (chuỗi ngẫu nhiên) và sau đó băm mật khẩu người dùng kết hợp với muối này bằng thuật toán băm bảo mật (RIPEMD, SHA1, MD5).
Điều này ngăn chặn một bộ từ điển được tính trước từ khôi phục mật mã vì nó cũng cần xử lý tất cả các muối ngẫu nhiên.
Không mã hóa mật khẩu, chỉ băm chúng. Không cần phải khôi phục mật khẩu trong văn bản rõ ràng, nó chỉ làm cho hệ thống của bạn bị tổn thương thông qua khóa chính này. Không mã hóa dữ liệu người dùng bằng các khóa mà người dùng có thể chọn, nó sẽ làm cho dữ liệu không thể khôi phục trong trường hợp mất chìa khóa. Cung cấp các cách phổ biến để người dùng khôi phục quyền truy cập vào tài khoản của họ trong trường hợp họ mất mật khẩu.
Nếu bạn thực sự cần ẩn tên người dùng, có lẽ bạn nên tự hỏi về kiến trúc dữ liệu bạn đang sử dụng. Nói chung, dữ liệu cá nhân và đặc biệt là dữ liệu thanh toán không nên được lưu trữ ở chế độ đơn giản, nó chỉ có thể được truy cập bởi các bên đáng tin cậy. Các bên đáng tin cậy này sẽ cần phải xem nội dung của tên người dùng và thông tin, do đó mã hóa có thể là không cần thiết.
Nếu bạn đang truyền thông tin người dùng trên Internet mở, hãy mã hóa thông tin đó.
Nếu bạn quan ngại về bảo mật thông tin người dùng trên máy chủ DB, có thể xem xét làm việc với một nhà cung cấp dịch vụ lưu trữ đám mây hoặc dữ liệu có thể cung cấp cho bạn một số bảo mật vật lý bổ sung cho máy chủ của bạn.
Mã hóa chỉ là một phần của chính sách bảo mật mạnh mẽ. Tập trung đặc biệt vào yếu tố con người của việc thiết lập một môi trường an toàn để thực hiện biz của bạn. Trao quyền truy cập vào các tài nguyên nhạy cảm cần biết cơ sở. Hãy chắc chắn rằng bạn sắp xếp để sao lưu hoặc một số phương tiện phục hồi dữ liệu nên tất cả các phím bị mất.
Không bao giờ lưu trữ thông tin thẻ tín dụng. –
@ShaktiSingh vậy các công ty như Amazon và Like lưu trữ chúng như thế nào? –
đọc: http://stackoverflow.com/questions/3002189/best-practices-to-store-creditcard-information-into-database –