2010-02-17 46 views
4

我非常有興趣瞭解如何確保php密碼安全。php post密碼例程?

主要問題是:如何從登錄表單中將密碼作爲安全字符串發佈?

我一直在檢查其他網站如何執行此操作,例如Facebook的。當我登錄Facebook時,根本沒有看到我的密碼,只是看起來像是一個很長的加密字符串。

如何在發佈之前將密碼字段轉換爲加密字符串?這是用ajax完成的嗎?

乾杯 柯

回答

4

檢查HTTPS protocol

超文本傳輸​​協議安全HTTPS)與所述SSL/TLS協議的超文本傳輸​​協議的組合,以提供加密和安全服務器的標識。 HTTPS連接通常用於萬維網上的支付交易以及公司信息系統中的敏感交易。 HTTPS不應與RFC 2660中指定的安全HTTP(S-HTTP)混淆。

如果您的網站無法啓用HTTPS並且不想發佈明文密碼(出於明顯的安全原因),請考慮使用Challenge-Response Authentication

只需google for various PHP/Javascript implementations並選一個你喜歡的。

+0

這是Facebook的使用 - Facebook的日誌您通過SSL,然後將您重定向回普通的舊HTTP,並使用會話保持您的登錄狀態。 – Josh 2010-02-17 13:29:31

2

如果您不能使用安全連接,則可以在發送之前加密密碼。

JavaScript的僞代碼:

onSubmit: 
    PASSWORDFIELD.value = md5(PASSWORDFIELD.value) 

你再對客戶端的MD5加密的口令,然後發送到你的服務器(沒有必要使用AJAX)。在服務器端,您會將其與存儲在數據庫中的加密密碼進行比較,以檢查用戶是否被授權。

0

根據Select0r我做了這個不submiting後更改* -s的計數:

onSubmit='encrypt_pass(this)' 

function encrypt_pass(form){ 
    form.pass_md5.value = md5(form.pass.value); //needs a hidden pass_md5 field 
    var stars = ""; 
    for(i=0;i<form.pass.value.length;i++) 
     stars = stars+"*"; 
    form.pass.value = stars; 
} 
+0

這不能保證安全。攻擊者只會捕獲md5散列(btw.md5具有已知的衝突)並將其發送到頁面以便登錄。頁面的有效密碼是md5散列。 – 2016-03-16 22:14:32