2011-11-19 47 views
6

Tôi đang lưu trữ Paswords và dữ liệu cá nhân trong cơ sở dữ liệu. Phương pháp mạnh nhất để mã hóa các giá trị này để bảo vệ là gì.Phương pháp mã hóa tốt nhất + mạnh nhất cho cơ sở dữ liệu

Ngoài ra, phương pháp tốt nhất để mã hóa thông tin thẻ tín dụng trong cơ sở dữ liệu là gì? Hoặc tôi nên sử dụng cái gì khác để lưu trữ thông tin thẻ tín dụng, không phải là một cơ sở dữ liệu mysql ??

Cảm ơn.

+7

Không bao giờ lưu trữ thông tin thẻ tín dụng. –

+3

@ShaktiSingh vậy các công ty như Amazon và Like lưu trữ chúng như thế nào? –

+2

đọc: http://stackoverflow.com/questions/3002189/best-practices-to-store-creditcard-information-into-database –

Trả lời

11

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.

+1

+1 Câu trả lời hoàn toàn tuyệt vời –

+0

Nhận xét của [nope] (http://stackoverflow.com/users/1283048/nope): "Vì vậy, tránh xa mã hóa bất đối xứng - 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 đó. ' Tất nhiên điều đó không có ý nghĩa gì - tại sao ai đó mã hóa KEYS ngoại trừ TLS? Tất nhiên mã hóa không đối xứng có (nhiều) sử dụng - trên thực tế, ta nên tránh các phương thức mã hóa đối xứng vì chúng dễ bị tổn thương bởi thiết kế NẾU luồng truyền tải không được mã hóa ; biết khóa công khai với mã hóa bất đối xứng không cấp khả năng giải mã. " –

+0

@PeterO. Nó thực sự có ý nghĩa ... phương pháp mã hóa khóa công khai chậm, bất đối xứng được sử dụng để mã hóa trao đổi các khóa đối xứng. Mã hóa khóa nhanh, đối xứng được sử dụng để mã hóa luồng dữ liệu. – spamsink

1

Lưu ý rằng mã hóa không phải là điều duy nhất bạn cần phải lo lắng khi lưu trữ dữ liệu thẻ tín dụng. Ngoài ra còn có các yêu cầu kiểm toán nghiêm ngặt và một loạt các mối quan tâm khác (xem PCI website nếu bạn không quen thuộc).

Trong khi bạn có thể quản lý để tuân thủ PCI, hãy làm điều này nếu bạn không thực sự quen thuộc với các biện pháp bảo mật cần thiết có thể để bạn mở rộng với các khoản nợ lớn.Nếu hệ thống của bạn bị vi phạm hoặc bạn bị phát hiện là không tuân thủ, bạn sẽ bị phạt nặng.

Kiểm tra các nhà cung cấp thanh toán như Authorize.net để biết các giải pháp thay thế. Cụ thể, sản phẩm Customer Information Manager của họ đáng để xem xét vì chúng sẽ lưu trữ dữ liệu an toàn như thông tin thẻ tín dụng trên máy chủ của họ cho bạn.

Các vấn đề liên quan