2010-08-27 31 views
0

我正在登錄對話框到我的網站。爲了讓用戶不必記住他們的登錄細節,我想與內置的瀏覽器密碼管理器合作。我已經設計出讓Firefox來玩球,我必須使用純粹的HTML表單。好吧,就這樣吧。但是,我不會傳輸未加密的密碼。所以我的表單內容如下所示:瀏覽器密碼管理器讓我難倒

input#1 type="text" name="login" 
input#2 type="password" 
input#3 type="hidden" name="passwd" 

然後我攔截提交併將#2的內容加密到#3中,並關閉表單。適用於IE和Firefox,在Opera和Chrome中不是這樣。剛剛繞過SO,發現問題是輸入#2,它沒有「名稱」屬性。一個快速測試表明,當我添加name =「ignore」時,確實在Chrome和Opera中起作用。唯一的麻煩是密碼現在通過網絡純文本發送,標籤爲「忽略」。謝謝一堆。省略「名稱」的全部意義在於從表格中省略該字段。

如果有一種方法可以抑制輸入#2被髮送,同時仍然給它一個「名稱」?還是有另一個我可以使用的技巧?

謝謝。

+0

錯誤,你如何轉移加密密碼?不要說JavaScript,因爲那不會是一個安全的加密。 – RoToRa 2010-08-27 14:42:41

+0

這不是一個真正的答案,所以發佈爲評論 - 但爲什麼你擔心發送密碼通過未加密。這就是HTTPS的用途(傳輸級別的加密)。話雖如此,我不確定有這樣一個可靠的跨瀏覽器的方式。你可以在使用JS發送之前重寫輸入#2的值嗎?這樣,它會被髮送(服務器可以忽略它),但它不會是你擔心的敏感值。 – 2010-08-27 14:45:13

+0

是的,我使用JS加密。其安全性可能是有爭議的,但它肯定是對純文本的改進。我最初的計劃是去SSL。經過深思熟慮之後,我不願意信任任何客戶 - SSL與否。鑑於SSL帶來的相當大的開銷(它加密的數量超過了必要/有用),我決定反對它。我可以重寫#2,我想,接受FOC並且當密碼被服務器拒絕(以允許用戶編輯)時,必須再次回覆#2。 – Ollie2893 2010-08-27 14:55:05

回答

1

最原始問題最狹義的答案是:是的,它可以通過Ajax。用兩個名爲INPUTs創建一個香草形式並提交按鈕。 (別忘了在FORM屬性中假裝一些動作。)現在它看起來像一個純文本的HTML事務。接下來在JS中,攔截來自FORM的onsubmit並向您的PHP腳本啓動一個Ajax請求,在登錄後以及散列密碼。從onsubmit返回FALSE以禁止FORM的操作。你完成了。沒有更多的明文密碼通過電線...