5

Dường như mọi ứng dụng tôi tạo cần có thể gửi email không thường xuyên. Ví dụ. email trạng thái. Đối với câu hỏi này, giả sử ứng dụng của tôi là một công cụ sao lưu, được cài đặt cục bộ trên nhiều máy khách, và mỗi lần cài đặt cần gửi thư trạng thái hàng ngày. Nó có thể được cài đặt trên máy chủ của tổ chức hoặc trên máy tính cá nhân.Ứng dụng của tôi cần gửi email, tôi nên lưu trữ mật khẩu SMTP ở đâu và như thế nào?

Tôi yêu cầu người dùng cung cấp thông tin xác thực cho tài khoản email mà anh sở hữu (máy chủ STMP, cổng, tên người dùng, mật khẩu, địa chỉ). Tôi đã sao chép phương pháp này từ các ứng dụng như Atlassian Jira/Confluence hoặc JFrog Artifactory. Họ đang lưu trữ mật khẩu SMTP ở đâu và như thế nào?

Sự hiểu biết hiện tại của tôi là: Phương pháp tiếp cận dừng/dừng không áp dụng ở đây vì tôi cần có thể truy xuất mật khẩu thô để thực sự gửi email. Tôi không muốn lưu trữ mật khẩu trong bản rõ, vì vậy nó phải là một loại phương pháp mã hóa/giải mã (phải không?).

Tôi có thể yêu cầu người dùng không sử dụng tài khoản email chính của mình, nhưng để sử dụng một số tài khoản phụ hoặc thậm chí tốt hơn, hãy thiết lập một tài khoản email đặc biệt để ứng dụng của tôi sử dụng. Nếu người dùng là quản trị viên của tổ chức, anh ấy có thể thiết lập tài khoản email trên máy chủ trao đổi của mình hoặc định cấu hình chuyển tiếp SMTP. Tuy nhiên, tôi biết tôi và tôi biết người dùng cá nhân của mình, một số người trong số họ sẽ chỉ sử dụng tài khoản email chính của họ, vì vậy tôi muốn làm mọi thứ có thể để giữ thông tin của họ an toàn nhất có thể (theo ý tôi là ").

Ưu tiên tôi muốn lưu trữ mật khẩu được mã hóa trong cơ sở dữ liệu của ứng dụng.

Tôi đã dành hàng giờ đọc qua các câu hỏi về lưu lượng truy cập, nhưng tôi không thể thấy sự đồng thuận (giống như thông tin đăng nhập tài khoản người dùng). Tôi thấy điều này đáng ngạc nhiên, như tôi mong đợi về cơ bản mọi nhà phát triển phải đối mặt với vấn đề này sớm hay muộn.

Phải có một số phương pháp hay nhất để làm theo, một số cách được thiết lập để giải quyết vấn đề này, nhưng tôi chưa tìm thấy.

Hãy chỉ cho tôi các tài nguyên trên SO/web giải thích cách giải quyết vấn đề này. Nếu có thể được viết bởi một số chuyên gia trong lĩnh vực này.

Một số câu hỏi SO Tôi đã xem xét:

Trả lời

1

Sẽ tốt hơn nếu bạn đã có thể cung cấp thêm chi tiết về hệ điều hành và các ngôn ngữ lập trình .. .

Tuy nhiên, đây là một số lời khuyên chung:

Điều quan trọng nhất bạn phải biết là: Nếu ứng dụng của bạn có thể giải mã được mà không có sự tương tác của người dùng (ví dụ: mật khẩu của người dùng hoặc mã thông báo phần cứng) bất kỳ kẻ tấn công nào cũng có thể thực hiện điều đó. Tất cả các biện pháp bạn thực hiện sẽ chỉ làm tăng sự phức tạp của việc đạt được mật khẩu này.

Tất nhiên bạn nên tăng thanh càng cao càng tốt. Đối với Windows, DPAPI sẽ là bạn của bạn. Bạn có thể tìm thấy một số thông tin về cách sử dụng nó ở đây: http://www.c-sharpcorner.com/UploadFile/mosessaur/dpapiprotecteddataclass01052006142332PM/dpapiprotecteddataclass.aspx với C# (Tôi không biết bạn sử dụng môi trường nào).

Bạn cũng có thể triển khai cấu hình của riêng mình và mã hóa cấu hình bằng cách sử dụng RSA có khóa được lưu trữ trong vùng chứa khóa cục bộ - xem http://msdn.microsoft.com/en-us/library/system.security.cryptography.rsacryptoserviceprovider%28v=vs.100%29.aspx.

Có thể một số người khác có thể giúp bạn với các hệ điều hành khác, nhưng khái niệm sẽ giống nhau.

Điều gì cũng có thể xảy ra là sử dụng một số loại xác thực SSO như Kerberos hoặc NTLM hoặc ..., nhưng điều này có nghĩa là sửa đổi trên máy chủ thư.

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