2012-01-08 31 views
5

tôi đã tìm kiếm về băm đơn giản với mật khẩu trong biểu mẫu đăng nhập. tôi đã xem qua số http://tinsology.net/2009/06/creating-a-secure-login-system-the-right-way/ này. ở đây ông băm mật khẩu, tạo ra một muối, và sau đó một lần nữa băm mật khẩu & muối. Tôi đang xây dựng một đăng nhập thành bản thân mình, đây là abc.phpMật khẩu có được gửi dưới dạng văn bản sau khi gửi PHP không?

<form name="register" action="register.php" method="post"> 
Username: <input type="text" name="username" maxlength="30" /> 
Password: <input type="password" name="pass1" /> 
Password Again: <input type="password" name="pass2" /> 
<input type="submit" value="Register" /> 
</form> 

sau khi nộp đi, register.php, nó có

$u=$_REQUEST['username']; 
$p=$_REQUEST['pass1']; 
//salt create function 
//hashing code 
//final hash password 

và sau đó gửi $ u & 'mật khẩu thức' trong kho dữ liệu.

Hỏi: câu hỏi của tôi là khi gửi biểu mẫu từ abc.php, mật khẩu có phải là văn bản không?

và nếu có, thì có khả năng ai đó đọc nó, và sau đó cần mật khẩu băm là gì, vì ngay cả khi tôi đăng nhập, tôi sẽ gửi trang và truy xuất thẻ và tên người dùng từ $ _REQUEST trên có thể một trang khác, nơi nó sẽ được kiểm tra, nó sẽ được chuyển thành văn bản, và do đó có thể được đọc bởi ai đó.

+0

Có hai vấn đề với mật khẩu: lưu trữ và truyền tải. Lưu trữ là quan trọng nhất, bạn * phải * băm được lưu trữ mật khẩu. Bảo vệ nó trong quá trình truyền cũng là một ý tưởng hay, nhưng không quan trọng. Nó dễ dàng hơn rất nhiều để hack một máy chủ và đọc toàn bộ cơ sở dữ liệu, hơn là chèn cho mình một nơi nào đó ở giữa mọi yêu cầu HTTP đến/từ máy chủ để đăng nhập mật khẩu. Vì vậy, băm (như được mô tả trong bài viết này) là một điều cần thiết.Nhưng nếu bạn có phương tiện, thì bạn nên đặt toàn bộ khu vực đăng nhập của bạn dưới SSL/https. Mẫu mã ở đây sẽ hoàn toàn an toàn nếu SSL đang hoạt động. –

+0

@AbhiBeckert cảm ơn. – Nikhar

Trả lời

6

Mật khẩu hiện được gửi bằng văn bản rõ ràng. Có một giải pháp thay thế mà không cần sử dụng HTTPS. Bạn có thể băm mật khẩu trước khi nó được gửi qua ổ cắm HTTP với javascript. Có một số hướng dẫn trên mạng. Điều này không tốt bằng cách sử dụng https nhưng vẫn tốt hơn là không có gì.

2

Phần "an toàn" của bài viết đó liên quan rõ ràng đến việc lưu trữ mật khẩu. Ai đó có thể chặn mật khẩu nếu mạng trên máy khách hoặc phía máy chủ không an toàn (ví dụ: ai đó có gói sniffer trên mạng).

Nếu đây là một mối quan ngại, bạn có thể giảm thiểu rủi ro đó bằng cách sử dụng SSL, sẽ mã hóa cuộc hội thoại giữa máy khách và máy chủ.

2

Nếu người dùng gửi biểu mẫu của bạn, trình duyệt sẽ gửi mật khẩu như một phần của yêu cầu đăng bài.

Nếu bạn đang sử dụng SSL (https), giao tiếp hoàn chỉnh giữa trình duyệt và máy chủ web của bạn được mã hóa (vì vậy dữ liệu không thể đọc được bởi bên thứ ba), nhưng nếu bạn đang sử dụng http bất kỳ ai có thể xem lưu lượng truy cập, có thể xem mật khẩu

+0

+1 vì không cho rằng anh ấy không sử dụng SSL –

6

Mật khẩu của bạn được gửi qua HTTP Post hoặc HTTP Get, tùy thuộc vào phương thức trong biểu mẫu của bạn. HTTP Post hoặc HTTP Get được gửi qua luồng ổ cắm và ai đó có thể đánh cắp dữ liệu của bạn, quản trị mạng, nhà cung cấp ISP của bạn, v.v.

Nếu bạn muốn tạo đăng nhập an toàn, máy chủ của bạn phải hỗ trợ HTTPS. Nếu bạn gửi qua HTTPS, không ai có thể đọc dữ liệu của bạn.

2

Mã bạn đang đề cập đến chỉ là về lưu trữ mật khẩu, vì vậy có, mật khẩu sẽ đi qua Internet trong văn bản rõ ràng và có, ai đó có thể chặn nó tại ví dụ như điểm phát sóng WiFi.

Giải pháp tốt nhất, được chứng minh nhất của bạn là sử dụng SSL để liên lạc đăng nhập.

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