瀏覽器記住密碼的機制 首先理解瀏覽器保存密碼和自動填充是兩個機制,記住密碼機制需要遵循同源策略 測試瀏覽器(mac) 瀏覽器 版本 google 56.0.2924.87 (64-bit) firefox 51.0.1 (64 位) safari 10.0 (12602.1.50.0.10) ie( ...
瀏覽器記住密碼的機制
首先理解瀏覽器保存密碼和自動填充是兩個機制,記住密碼機制需要遵循同源策略
測試瀏覽器(mac)
瀏覽器 | 版本 |
---|---|
56.0.2924.87 (64-bit) | |
firefox | 51.0.1 (64 位) |
safari | 10.0 (12602.1.50.0.10) |
ie(win) | 7-8 |
首先要分析瀏覽器是如何記住這個表單的,和唯一性?
經過查資料實驗得到的幾個關鍵值
1. 為了遵循同源策略,需要功能變數名稱:lichenglong.pw
2. 需要一個<form>標簽
3. 需要id或name為username的用戶名<input>表單項
4. 需要id或name為password的密碼<input>表單項
例如:
<form id="register5">
<div class="form-group">
<label>user name</label>
<input type="text" name="username" class="form-control" placeholder="Enter text">
<div class="tipinfo"></div>
</div>
<div class="form-group">
<label>password</label>
<input type="password" name="password" class="form-control" placeholder="Enter text">
<div class="tipinfo"></div>
</div>
<button type="submit" class="btn btn-default">Submit Button</button>
</form>
各個瀏覽器提示保存密碼截圖
1.google
2.firefox
3.safari
4.ie
各瀏覽器的差異
- Safari瀏覽器
只有Safari預設是關閉這個機制的。如果開啟後,效果和chrome一樣,非常好用!Safari不能自動填充表單 - Opera瀏覽器
Opera好像很安全,記住密碼後,瀏覽器並不會自動填充密碼,而是要用戶自己點擊地址欄左邊的鑰匙圖標,才會開始填充並登錄。 - IE8/9瀏覽器
IE8/9及部分這個內核的瀏覽器(比如遨游的IE模式)很聰明,將每個登錄表單綁定到所在的頁面上(下麵簡稱這個頁面為綁定頁面),由於綁定頁面地址是唯一的,同域內其他頁面就無法通過生成一個一模一樣的表單來獲取密碼了。
如果就這樣還是不安全:P,因為XSS(獲取瀏覽器記住的明文密碼)可以動態iframe進這個綁定頁面,然後註入JS進行任意DOM操作,同樣非常容易獲取到密碼表單項的值,IE估計是考慮到了這個,通過iframe調用綁定頁面也無效。而且IE的機制還遠沒這樣簡單,即使在綁定頁面內我也沒成功得到密碼,因為IE預設並不填充密碼,只有輸入正確用戶名後,並觸發類似onblur事件,這個密碼表單項才會填充進對應用戶名的密碼。這個過程我本想通過DOM來模擬進行的,但是沒有成功。感興趣的同學可以試試。 - 其他瀏覽器
其他瀏覽器(除了搜狗瀏覽器)都和Chrome差不多了,大多是因為webkit內核。 - IE8/IE9無法自動完成表單及記住密碼的解決方法
ie瀏覽器比較特殊點,有時候我們使用某些優化軟體對系統進行優化以後,可能會出IE瀏覽器即便開啟了自動完成功能也無法記住賬號和密碼的問題您也可以先檢查IE瀏覽器的 Internet 選項裡面是否啟用了該功能,依次打開Internet 選項 —— 切換至“內容”選項卡 —— 自動完成設置,看是否勾選了“表單上的用戶名和密碼”。 出現這種情況是因為IE瀏覽器的相應配置被禁用了,我們只要執行下麵操作即可恢復。
1、按下 Win + R 鍵打開運行,在輸入框中輸入 gpedit.msc,單擊確認打開本地組策略編輯器
2、依次展開用戶配置 → 管理模板 → Windows 組件 → Internet Explorer
3、在右側列表中找到“禁用表單的自動完成功能”選項,雙擊對該選項進行編輯,設置為已禁用,在單擊確認
4、再找到“表單上的用戶名和密碼啟用自動完成”選項,雙擊對該選項進行編輯,設置為已啟用,在單擊確認
設置完成以後,可以關閉本地組策略編輯器,然後再重啟IE即可。