2011-02-07 37 views
6

Chúng tôi có một trang web, nơi người dùng sẽ lưu dữ liệu cực kỳ cá nhân và nhạy cảm trong cơ sở dữ liệu của chúng tôi.Mã hóa dữ liệu để lưu trữ trong cơ sở dữ liệu

Tất nhiên, chúng tôi cần phải mã hóa dữ liệu này trước khi dữ liệu được lưu trữ trong cơ sở dữ liệu và sử dụng SSL. Nó là một ứng dụng MVC sẽ sử dụng xác thực mẫu. cách tốt nhất để đảm bảo rằng dữ liệu này được mã hóa từ thời điểm chúng tôi lưu nó cho đến khi nó được giải mã để hiển thị trên trang cá nhân của họ là gì.

Chúng tôi cũng cần đảm bảo rằng nó sẽ an toàn ngay cả với các nhà phát triển và dba của chúng tôi đang làm việc trên ứng dụng.

Cách tốt nhất để xử lý tình huống này là gì?

+0

Bạn đang cố gắng bảo vệ dữ liệu từ ai? –

+0

Bất cứ ai có thể muốn lấy nó. Về cơ bản, chúng tôi chỉ cần có thể đảm bảo người dùng rằng họ sẽ là người duy nhất xem dữ liệu. (mặc dù tôi biết nó là không thể đảm bảo nó 100%, chúng ta cần phải nhận được càng gần với nó càng tốt) – twal

+3

Sau đó, về cơ bản bạn cần phải mã hóa với một khóa được cung cấp bởi người sử dụng tại thời gian chạy. Tất nhiên, nếu người dùng mất khóa đó (hãy nhớ, đó là người dùng mà chúng ta đang nói đến), hãy nói lời tạm biệt với dữ liệu. –

Trả lời

1

Không có cách nào để giữ một DBA ra khỏi dữ liệu trừ khi bạn sử dụng mã hóa khóa công cộng và người dùng cuối sẽ phải kiểm soát điều này. Nếu người dùng cuối bị mất khóa, họ sẽ mất tất cả dữ liệu của họ.

Bạn có thể có cơ sở dữ liệu riêng biệt nơi bạn lưu trữ khóa và DBA của bạn sẽ không có quyền truy cập vào DB này.

Bạn sẽ phải có hai DBA, một cho dữ liệu và một cho các khóa.

Điều này giả định bạn không tin tưởng DBA của mình, nhưng sau đó bạn không nên thuê chúng.

Nếu bạn tin tưởng DBA, bạn cho phép họ có quyền truy cập vào cả hai DB, nhưng yêu cầu họ phải có tài khoản riêng biệt để nếu một tài khoản bị xâm nhập, họ (tin tặc) sẽ không có quyền truy cập vào mọi thứ.

Thông thường, trong một hệ thống được thiết kế tốt, quản trị viên/quản trị viên có tài khoản riêng cho công việc cá nhân của họ và tài khoản nâng cao để thực hiện công việc.

Tôi giả định rằng các lập trình viên chỉ có quyền truy cập vào môi trường thử nghiệm. Nếu họ có quyền truy cập vào môi trường sản xuất, thì họ sẽ có quyền truy cập vào cả khóa và dữ liệu.

+0

Chúng tôi tin tưởng chúng, như đã đề cập, chúng tôi đang cố gắng đảm bảo sự riêng tư càng nhiều càng tốt cho khách hàng, tôi hiểu tình hình tôi mô tả là lý tưởng. Tất nhiên chúng tôi hiểu cuối cùng một số người trong nội bộ sẽ có quyền truy cập vào dữ liệu nếu họ thực sự muốn/cần để có được nó. Chúng tôi chỉ cố gắng để đạt được gần với kịch bản lý tưởng nhất có thể. Những nhận xét này đang giúp ích rất nhiều. Cảm ơn bạn – twal

0

Mỗi Encryption có một chìa khóa và chìa khóa là (để có được/không để có được) mà quan trọng :) Cách tốt nhất là để thiết lập các phím trên web.config mà bạn có thể làm mà không có bất kỳ nền tảng lập trình


Và tôi đã thấy AES Encryption Algorithm implementation at StackOverflow đẹp. Tôi sẽ đề nghị bạn sử dụng nó.

+0

Đặt khóa trong web.config sẽ cho phép các nhà phát triển truy cập dữ liệu, trừ khi tôi bỏ sót điều gì đó. – mxmissile

+0

@mxmissile: Tạo web.config ≠ Phát triển web.config. Ngoài ra, db db phát triển sản xuất. – rsenna

+0

@mxmissile: cho phép nhà phát triển phát triển bằng khóa họ biết. chúng tôi có thể thay đổi nó sau khi triển khai. – naveen

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