這是我學習/理解安全(ish)發送發佈數據的冒險嘗試。建設性的批評歡迎。嘗試使用PHP安全發送發佈數據的缺陷
這只是理論,沒有太多的代碼。另外,我在示例中使用了PHP的SHA1(),只是因爲我已經花時間瞭解它的內部。我知道其他(更好?)算法(例如:MD5()),所以換掉你最喜歡的。
1)服務器生成一個隨機salt rand(min,max),根據請求將其與頁面一起發送,計算並將SHA1(un:pw:salt)與請求的服務器時間戳一起存儲到數據庫)
1)注意:鹽是sniffable,所以假設黑客知道鹽(可你非SHA1()的東西,拿到SHA1'd數據輸出)
2)用戶輸入用戶名和密碼,點擊?提交
3)提交一個JavaScript函數(打包模糊處理,是的,我知道,這不會增加真正的安全性)SHA1(un:pw:salt),然後只發布結果向服務器
3A)注意:加密憑證是sniffable所接收的憑證,因爲匹配它所存儲在數據庫中,和一個時間範圍內到達 (5分鐘左右)
4)服務器檢查初始請求。允許/拒絕決定。
還要求改變鹽,所以即使有人嗅到了加密的數據,這將是一個 )用戶進行新的頁面請求 B)的時間內到期
思考後沒用?
編輯:另外,假設所有的帶狀標籤/ SQL黑客/ <>等...注射處理適當。
只有真正的安全性是使用https,我認爲 – armonge 2011-01-26 22:40:00
是的,除了這個當然。好點子。 – jason 2011-01-26 22:52:01
你不能「解開」某些東西來獲取密碼。這是一個不可逆的哈希函數,所以你必須暴力破解哈希。 (哦,並且md5被認爲安全性較差)。 – staticsan 2011-01-26 23:04:22