2009-01-19 63 views
-2

我很難弄清楚Firefox和Chrome如何確定密碼的字段以及他們如何在其他表單上自動完成它們。奇怪的自動完成+密碼記住行爲

對於我的登錄表單,我有這樣的:

<p> 
    <label for="login_email">Email:</label><br /> 
    <input id="login_email" name="login[email]" size="30" type="text"> 
</p> 

<p> 
    <label for="login_password">Password:</label><br /> 
    <input id="login_password" name="login[password]" size="30" type="password"> 
    <input id="login_password_hash" name="login[password_hash]" type="hidden"> 
</p> 

<p> 
    <input id="login_submit" value="LOGIN" type="submit"> 
</p> 

login_password_hash字段是使用JavaScript在發送前散列客戶端上的密碼,具有禁用JavaScript不會改變結果。

和創建一個新用戶,我有這樣的形式:

<p> 
    <label for="user_email">Email:</label> 
    <input id="user_email" name="user[email]" size="30" type="text"> 
</p> 
<p> 
    <label for="user_first_name">First Name:</label> 
    <input id="user_first_name" name="user[first_name]" size="30" type="text"> 

</p> 
<p> 
    <label for="user_last_name">Last Name:</label> 
    <input id="user_last_name" name="user[last_name]" size="30" type="text"> 
</p> 
<p> 
    <label for="user_password">Password:</label> 
    <input id="user_password" name="user[password]" size="30" type="password"> 
    <input id="user_password_hash" name="user[password_hash]" type="hidden"> 
</p> 

<p><input id="user_submit" value="Create User" type="submit"></p> 

現在從登錄表單保存密碼,並參觀新用戶表單後,所保存的電子郵件被放在最後一個前場密碼字段並將密碼放在密碼字段中。

這發生在Firefox和Chrome上,但不在Internet Explorer中。有關Firefox和Chrome爲何如此行事的想法?這兩種形式沒有共同之處,名稱和ID都是不同的。

+0

爲什麼要散列密碼然後發送明文密碼? – 2009-01-19 19:44:31

+0

它不,密碼字段在發送之前清空。服務器檢查password_hash,如果它是空的,則會由於Javascript未啓用而對純文本進行散列處理。 – Samuel 2009-01-19 20:01:20

+0

但爲什麼有這個領域呢。通過允許客戶提交預先哈希版本,您可以降低安全性。如果有人拿到你的數據庫,他們可以簡單地提交他們從數據庫中獲得的已經散列的密碼。 – Kibbee 2009-01-19 20:19:07

回答

0

似乎更改名稱和ID屬性對Firefox和Chrome中的密碼管理器沒有任何影響,他們看到的只是一個password_field和它上面的字段,對於他們來說已經足夠了。

所以我只是在創建一個新的用戶作爲一個文本字段的密碼字段。

0

那麼所有的瀏覽器都將回暖最明顯的字段名稱:

  • 姓氏
  • 用戶名
  • 密碼

而那些明顯的交替(下劃線爲空格,一些簡寫如「user」和「pass」也許)。這將取決於瀏覽器本身,以及它支持哪些瘋狂替代品的版本。

2

如果你想在輸入禁用自動完成,請嘗試使用autocomplete屬性,例如:

<input type="text" name="email" autocomplete="off" /> 

這並不能保證在所有瀏覽器的工作,但是。