2011-11-07 8 views
7

Tôi đang viết một ứng dụng web ở Django đang giao tiếp với API Danh sách Đọc sau (http://readitlaterlist.com/api/docs/). Tuy nhiên, tất cả các cuộc gọi API đều yêu cầu gửi tên người dùng và mật khẩu theo từng yêu cầu. Để làm điều này, có vẻ như tôi cần lưu trữ mật khẩu của người dùng bằng văn bản thuần trong cơ sở dữ liệu của tôi. Tôi có thiếu một cái gì đó hoặc là cách tiếp cận duy nhất có thể trong trường hợp này? Có cách nào để lưu trữ mật khẩu được mã hóa trong cơ sở dữ liệu của tôi không, nhưng vẫn có thể gửi phiên bản được giải mã của nó khi thực hiện cuộc gọi API? Nếu không, thì có bất kỳ phương pháp hay nhất nào mà tôi nên tuân theo để bảo vệ an toàn mật khẩu của người dùng không?Cách tốt nhất để lưu trữ mật khẩu trong cơ sở dữ liệu khi cuộc gọi API yêu cầu gửi mật khẩu bằng văn bản thuần túy là gì?

Tôi khá chắc chắn rằng đây không phải là dịch vụ duy nhất yêu cầu gửi mật khẩu bằng văn bản thuần túy. Tôi quan tâm đến việc biết cách các nhà phát triển giải quyết các loại dịch vụ này nói chung. Tôi mới phát triển web, vì vậy bất kỳ trợ giúp hoặc con trỏ nào được đánh giá cao.

+0

Tôi đã hỏi một câu hỏi tương tự: http://stackoverflow.com/questions/5791083/django-facebook-security-design-for-a-facebook-webapp-that-performs-a-third –

Trả lời

4

Không bao giờ lưu mật khẩu bằng văn bản thuần túy. Bạn có thể mã hóa và giải mã mật khẩu nhưng vấn đề là khóa mà bạn sử dụng để thực hiện mã hóa và giải mã nói chung sẽ có thể truy cập được với bất kỳ ai đã truy cập vào máy chủ của bạn để nó không an toàn.

Cách khác là yêu cầu họ nhập mật khẩu của họ và lưu mật khẩu đó vào cookie được mã hóa hoặc biến phiên hoặc thứ khác sẽ hết hạn khi họ đăng xuất khỏi ứng dụng của bạn. Điều này có nhược điểm của họ là phải nhập mật khẩu của họ mỗi khi họ sử dụng ứng dụng của bạn.

+0

Biến phiên/cookie được mã hóa âm thanh đầy hứa hẹn. Tôi sẽ xem xét những thứ đó. Cảm ơn. – Alinium

7

người dùng của bạn có phải đăng nhập vào trang web của bạn để sử dụng không? nếu bạn cũng đang sử dụng lược đồ xác thực mật khẩu, bạn có thể chú ý đến điều đó. Sử dụng mật khẩu đăng nhập cho trang web của bạn như một mật mã trong mật mã khóa đối xứng để mã hóa mật khẩu api. sau đó bạn chỉ cần lưu trữ một băm mật khẩu người dùng (vào trang web của riêng bạn) và mật khẩu được mã hóa cho api từ xa.

+0

Ý tưởng hay là –

+0

Điều đó nghe có vẻ giống như một ý tưởng thực sự hay. Tôi không sử dụng mật khẩu đăng nhập cho trang web của mình ngay bây giờ, nhưng nếu tôi làm sau, thì tôi chắc chắn sẽ xem xét cách tiếp cận này. – Alinium