2012-01-27 65 views
2

我在用戶登錄表單上使用加密技術來避免以純文本傳遞密碼。我在PHP會話中存儲一個唯一的挑戰值,在HTML表單隱藏字段中包含相同的值,然後在提交密碼之前使用基於JavaScript的SHA1-1腳本來散列密碼。 (然後使用存儲在會話變量中的挑戰與服務器端的相同比較)。IE 9表單提交崩潰

我對上述本身沒有任何問題,但我認爲最好解釋爲什麼我需要這樣做。

我提交表單是這樣的:

var password = sha1(document.forms['loginform'].password.value); 
password = sha1(document.forms['loginform'].challenge.value + password); 
document.forms['loginform'].challenge.value = ''; 
document.forms['loginform'].password.value = password; 
document.forms['loginform'].style.display = 'none'; 
document.forms['loginform'].submit(); 

的問題是5日線出現。我想從視圖中隱藏加密的密碼值,因爲如果我不這樣做,我會有人說'那不是我的密碼','我不喜歡那樣'等等。

的事情是,設置顯示爲「無」來提交之前,似乎崩潰Internet Explorer 9中,像這樣的消息:

Problem Event Name: APPCRASH 
Application Name: iexplore.exe 
Application Version: 9.0.8112.16421 
Fault Module Name: MSHTML.dll 

所以,我想知道是否有人有一個更好的方式去關於這樣做。也就是說,在提交之前隱藏JavaScript更新表單值是否有一種很好或「正常」的方式?

感謝

編輯: 現在我設置密碼字段文本的顏色相匹配的背景。這有點破解。我不想將下面的答案標記爲答案 - 我不完全同意,這有點像我自己的問題。 (我會,而不是永遠保持開放狀態)。這不是什麼大問題。我會留下一點。

回答

1

這種「加密技術」沒有任何幫助。您仍然以純文本形式傳遞密碼。成像某人使用嗅探器並獲得密碼散列(和會話cookie ..),他可以輕鬆登錄系統。

如果您需要安全性,請使用https

+0

感謝您的回答。不,我沒有以純文本格式傳遞密碼,我將它們與唯一代碼結合在一起並進行哈希處理,這必須是通過HTTP標頭中的'apple'傳遞出來的一步。數據保護是我關心的問題,同樣可以防止這個特定網站的安全漏洞。 – stackuser10210 2012-01-27 08:38:32

+0

@ stackuser10210我的意思是如果你不使用https,沒有什麼可以是安全的。你的http請求可以偷走它的內容。 – xdazz 2012-01-27 08:41:47

+0

這是一個額外的措施,在網吧等時代相當值得。這不是我的發明。雅虎一直在使用類似的電子郵件登錄一段時間(我認爲每個登錄都有HTTPS)。我認爲他們可能使用異步帖子(不確定)。我不想訴諸於此。 – stackuser10210 2012-01-27 08:49:05

0

我剛剛遇到類似問題(see here)。微軟的IE開發團隊已經確認這是一個渲染問題。如果這是相同的事情,它似乎與表單提交無關,而是在設置輸入字段的值並在分配了某些樣式時立即隱藏字段的父級(see above link)時發生。微軟的建議是強制IE使用IE8渲染引擎,但是我發現將輸入封裝到另一個沒有樣式的元素(例如SPAN或DIV)似乎有訣竅。

讓我知道這種解決方法是否適合您。