2012-06-27 42 views
8

Tôi không đề cập đến mật khẩu mà không cần phải được sử dụng (chẳng hạn như mật khẩu cho người dùng khác để trang web của tôi - trong trường hợp này tôi thực sự không phải lưu trữ chúng Xem https://stackoverflow.com/a/1054069/939213..) vì vậy chỉ cần lưu trữ băm không phải là một lựa chọn.Cách tốt nhất để lưu trữ mật khẩu hoặc khóa riêng tư trên máy chủ lưu trữ web là gì?

Tôi đang đề cập đến lưu trữ mật khẩu vào cơ sở dữ liệu SQL và khóa riêng tư mà phần mềm trên máy chủ dùng chung phải sử dụng.

Tôi giả sử không có thực sự là cách bảo mật để thực hiện điều đó. Tôi chỉ muốn biết những gì là tốt nhất trong tình huống này .

Tôi đang cố giữ an toàn cho chúng khỏi tin tặc (trên cùng một máy chủ web). Không phải từ những người khác có quyền xem tệp.

Đó là codebehind ASP.Net sẽ sử dụng chúng.

+0

Sử dụng đúng cách nào khác cho mật khẩu ngoài xác minh? Một mật khẩu khác được sử dụng để làm gì? –

+0

Cách tốt nhất? Là để ** không ** lưu trữ thông tin đó ở tất cả .... không lưu trữ mật khẩu mỗi se - lưu trữ một băm muối của nó. –

+0

bạn đang cố gắng bảo mật thông tin này từ đâu? khoá trong web.config của bạn sẽ được * an toàn * từ công chúng, nhưng không phải là những người có quyền truy cập vào tệp và/hoặc cơ sở dữ liệu. trong khả năng tất cả, bạn sẽ cần phải xác định mức độ truy cập vào thông tin này là thích hợp – Didaxis

Trả lời

1

Windows cung cấp các API Data Protection (DPAPI) đặc biệt cho mục đích này. Nhìn vào lớp ProtectedData để tiêu thụ nó từ .NET.

Ưu điểm của DPAPI là dữ liệu nhạy cảm của bạn được mã hóa dựa trên thông tin đăng nhập của người dùng Windows, có nghĩa là nó an toàn trừ khi tài khoản Windows của bạn bị xâm nhập.

3

Cách tốt nhất để lưu trữ mật khẩu là không lưu trữ mật khẩu. Sử dụng xác thực tích hợp (Windows) để kết nối với SQL Server. Điều này liên quan đến việc chạy hồ bơi ứng dụng IIS của bạn dưới dạng người dùng (Windows) cụ thể và granting that user access để đăng nhập vào cơ sở dữ liệu và chạy các truy vấn cần thiết.

Xem thêm SQL Server Integrated Authentication Mode

Ngoài việc bảo mật hơn, nó hoạt động tốt hơn. Sử dụng chuỗi kết nối cho mỗi người dùng sẽ đánh bại kết nối tổng hợp.

EDIT:

Nếu bắt buộc phải lưu trữ mật khẩu, sau đó sử dụng Encrypted Connection Strings trong ASP.NET là con đường để đi. Điều này đảm bảo việc sử dụng DPAPI để lưu trữ chuỗi kết nối và khóa máy một cách chính xác, làm giảm cơ hội bạn vặn nó lên và nghĩ rằng bạn đã bảo đảm nó khi bạn chưa có.

Ngoài ra: Encrypting Connection String in web.config

+0

-1. Không thực sự là một câu trả lời theo ý kiến ​​của tôi. OP đặc biệt yêu cầu một cách để _store_ mật khẩu. –

+0

Trong bối cảnh an ninh, vâng.Nếu bạn hỏi tôi cách tốt nhất để tránh chết trong một vụ tai nạn máy bay, câu trả lời "không bay bất cứ nơi nào" có vẻ hợp lý. Câu trả lời * đúng * là câu trả lời tôi đã cung cấp - bạn nên sử dụng xác thực tích hợp bất cứ khi nào có thể. OP không nói rằng Tích hợp không phải là một lựa chọn. –

+0

Nhưng nếu bạn cần bay - bạn sẽ chọn cách an toàn nhất. Phần mềm trên trang web phải sử dụng những thứ đó. – ispiro

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