2010-05-28 31 views
5

Câu hỏi perl cụ thể của nó Tôi đang tạo ứng dụng perl gui/wxperl kết nối với DB. Tôi muốn ứng dụng của mình được bảo vệ bằng mật khẩu, trước hết người dùng phải nhập người dùng và mật khẩu và sau đó sử dụng ứng dụng.xác thực trên ứng dụng gui được viết trên perl

phương pháp an toàn nhất để lưu trữ mật khẩu là ai có thể cung cấp ý tưởng phương pháp tốt nhất để tôi lưu trữ người dùng và mật khẩu là gì và tôi nên truy xuất chúng để xác thực như thế nào? nếu có thể ai đó có thể cung cấp một số mã perl làm thế nào để làm điều này?

Trả lời

9

Bạn chắc chắn không muốn lưu mật khẩu bằng văn bản thuần túy, có lẽ bạn nên xem xét sử dụng sha256. Bạn có thể sử dụng mod Perl Digest :: SHA (xem CPAN cho tài liệu).

use Digest::SHA qw(sha256); 
my $digest = sha256($input_password); 
my $saved_digest_password = get_saved_password_for_user($input_user); 
if ($digest eq $saved_digest_password){ 
    # they have the correct password 
} 

Đó chỉ là mã giả, nhưng nó sẽ giúp bạn bắt đầu. Tùy thuộc vào bạn để xác định "get_saved_password_for_user" tuy nhiên bạn muốn, cho dù được lưu trữ trong cơ sở dữ liệu ở đâu đó hoặc trên hệ thống tệp hoặc ở nơi khác. Chỉ cần chắc chắn rằng bạn không bao giờ lưu trữ hoặc đăng nhập $ input_password bất cứ nơi nào. Điều duy nhất bạn cần lưu trữ là mật khẩu $ digest.

Hy vọng điều đó sẽ hữu ích!

+1

+1 ngay cả dưới dạng mã psuedocode, nó phù hợp với các khái niệm cơ bản về khớp mật khẩu. – Axeman

+1

Bài đăng hay, nhưng vui lòng không sử dụng '&' sigil trong các cuộc gọi chương trình con của bạn. Nó không cần thiết ở đây, và có một ý nghĩa rất cụ thể. Có 'get_saved_password_for_user()' có một nguyên mẫu cần được ghi đè ở đây không? Xem http://www.perlfoundation.org/perl5/index.cgi?subroutines_called_with_the_ampersand để biết thêm thông tin. – daotoad

+0

Đây là một câu trả lời rất hay nhưng bạn biết perl là openource nếu ai đó thay đổi if ($ digest eq $ saved_digest_password) thành nếu ($ digest ne $ saved_digest_password) thì anh ta sẽ nhập vào mọi mật khẩu sai nếu ai đó có ý tưởng làm thế nào để giải quyết điều này một cách thanh lịch? – oren

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