我非常有興趣瞭解如何確保php密碼安全。php post密碼例程?
主要問題是:如何從登錄表單中將密碼作爲安全字符串發佈?
我一直在檢查其他網站如何執行此操作,例如Facebook的。當我登錄Facebook時,根本沒有看到我的密碼,只是看起來像是一個很長的加密字符串。
如何在發佈之前將密碼字段轉換爲加密字符串?這是用ajax完成的嗎?
乾杯 柯
我非常有興趣瞭解如何確保php密碼安全。php post密碼例程?
主要問題是:如何從登錄表單中將密碼作爲安全字符串發佈?
我一直在檢查其他網站如何執行此操作,例如Facebook的。當我登錄Facebook時,根本沒有看到我的密碼,只是看起來像是一個很長的加密字符串。
如何在發佈之前將密碼字段轉換爲加密字符串?這是用ajax完成的嗎?
乾杯 柯
超文本傳輸協議安全(HTTPS)與所述SSL/TLS協議的超文本傳輸協議的組合,以提供加密和安全服務器的標識。 HTTPS連接通常用於萬維網上的支付交易以及公司信息系統中的敏感交易。 HTTPS不應與RFC 2660中指定的安全HTTP(S-HTTP)混淆。
如果您的網站無法啓用HTTPS並且不想發佈明文密碼(出於明顯的安全原因),請考慮使用Challenge-Response Authentication。
只需google for various PHP/Javascript implementations並選一個你喜歡的。
如果您不能使用安全連接,則可以在發送之前加密密碼。
JavaScript的僞代碼:
onSubmit:
PASSWORDFIELD.value = md5(PASSWORDFIELD.value)
你再對客戶端的MD5加密的口令,然後發送到你的服務器(沒有必要使用AJAX)。在服務器端,您會將其與存儲在數據庫中的加密密碼進行比較,以檢查用戶是否被授權。
根據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;
}
這不能保證安全。攻擊者只會捕獲md5散列(btw.md5具有已知的衝突)並將其發送到頁面以便登錄。頁面的有效密碼是md5散列。 – 2016-03-16 22:14:32
這是Facebook的使用 - Facebook的日誌您通過SSL,然後將您重定向回普通的舊HTTP,並使用會話保持您的登錄狀態。 – Josh 2010-02-17 13:29:31