web安全:防止瀏覽器記住或自動填寫使用者名稱和密碼(表單)的終極解決方案
最近專案上要求做到這一點,在網上搜了一圈,發現都是不完美的,不相容全部的瀏覽器,於是只能自己摸索了,最終得出了終極解決方案:
涉及:
disabled 或 readonly
display:none; 隱藏用,隱藏後不佔位置
visibility:hidden; 隱藏用,隱藏後佔原來的位置
position:absolute;z-index:-1; 隱藏用,隱藏與否取決於z-index相對的值,這裡的-1是我自己用的
autocomplete:"off";
網上說,這個屬性有時失效,有個解決辦法是將off改為new-password。
還有個說法(來自MDN),之所以new-password能夠解決off失效的原因是autocomplete屬性的有效值只有on和off,預設值是on,
如果autocomplete的屬性是除on和off外的值,那麼就是個無效值,那麼瀏覽器就會放棄對該屬性的執行。
換句話說,除on和off外的任一值,可以隨便編都行。
在這裡,我用off就夠了,測試過程中沒遇到失效的情況,所以暫時用off。
程式碼如下:
(最簡潔)
<input type="text" name="name" value="admin" style="position: absolute;z-index: -1;" disabled autocomplete = "off"/><!-- 這個username會被瀏覽器記住,我隨便用個admin--> <input type="password" name="pwd" value=" " style="position: absolute;z-index: -1;" disabled autocomplete = "off"/><!-- 這前面兩個name屬性要不要和真正的一樣,具體自己除錯下 --> <p><input type="text" maxlength="20" placeholder="使用者名稱" id="name" name="name" autocomplete = "off"/></p> <p><input type="password" maxlength="20" placeholder="密碼" id="pwd" name="pwd" autocomplete = "off"/></p> <p><input type="text" maxlength="4" placeholder="驗證碼" id="vcode" name="vcode" autocomplete = "off"/><img id="vcode" title="點選更換驗證碼" /></p> <p><input type="button" value="登入" id="login"/></p> <p style="visibility: hidden;"><input type="password" name="pwd" value=" " style="position: absolute;z-index: -1;" disabled autocomplete = "off"/></p><!-- 這個password的值會被瀏覽器記住,我隨便用個空格 -->
或
測試的瀏覽器:<input type="text" value="admin" style="position: absolute;z-index: -1;" disabled autocomplete = "off"/><!-- 這個username會被瀏覽器記住,我隨便用個admin--> <input type="password" value=" " style="position: absolute;z-index: -1;" disabled autocomplete = "off"/> <input type="text" name="name" style="display: none;" disabled autocomplete = "off"/><!-- 這裡的autocomplete可以不要 --> <input type="password" name="pwd" style="display: none;" disabled autocomplete = "off"/><!-- 這裡的autocomplete可以不要 --> <p><input type="text" maxlength="20" placeholder="使用者名稱" id="name" name="name" autocomplete = "off"/></p> <p><input type="password" maxlength="20" placeholder="密碼" id="pwd" name="pwd" autocomplete = "off"/></p> <p><input type="text" maxlength="4" placeholder="驗證碼" id="vcode" name="vcode" autocomplete = "off"/><img id="vcode" title="點選更換驗證碼" /></p> <p><input type="button" value="登入" id="login"/></p> <p style="visibility: hidden;"><input type="password" value=" " style="position: absolute;z-index: -1;" disabled autocomplete = "off"/></p><!-- 這個password的值會被瀏覽器記住,我隨便用個空格 -->
ie瀏覽器(7~11,edge),360安全瀏覽器(全部模式),360極速瀏覽器(全部模式),谷歌瀏覽器,火狐瀏覽器,獵豹瀏覽器
分析以上程式碼的原因:
有的瀏覽器會自動記錄登入的賬號,並且會記錄第一個使用者名稱和最後一個密碼input。
對360安全瀏覽器,單數個的話360安全瀏覽器不會出現提示是否要儲存密碼。
disabled:和360瀏覽器、頁面第一個聚焦點有關。
改進過程:
一開始是在真正要用到的使用者名稱密碼input前面加兩個對應name的隱藏使用者名稱密碼input,用於對付瀏覽器的自動填充表單。
但是,這個方案有個缺點:瀏覽器會記住登入的賬號(有的瀏覽器會提示是否要記住),每當填寫密碼時(不用tab切換到,直接用滑鼠獲得焦點),
會提示是否使用以下密碼。這樣別人不僅僅能夠登入,並且還可以知道密碼的明文(瀏覽器審查元素改密碼input的type為text或在瀏覽器設定上檢視儲存的使用者名稱密碼)
經過N次的測試,發現= =瀏覽器只會記住第一個使用者名稱input的值和最後一個密碼input 的值,並且這些input不能用display:none。
於是在上面的基礎上,在前和後增加另一種隱藏方式的一組使用者名稱密碼input:用position:absolute;z-index:-1; 來隱藏
問題解決了,但是出現了一個小問題:360安全瀏覽器會提示是否記住密碼,並且,最重要的是,是輸入密碼的時候,還會提示是否使用以下項的密碼。
又經過N次的測試,發現,單數的input時,360安全瀏覽器不會再彈出是否記住密碼的提示。
最後發現,把最開始加的兩個display:none去掉也行,並且也是單數的input。
ok,完美。
結論:
<input type="text" value="admin" style="position: absolute;z-index: -1;" disabled autocomplete = "off"/><!-- 這個username會被瀏覽器記住,我隨便用個admin-->
<input type="password" value=" " style="position: absolute;z-index: -1;" disabled autocomplete = "off"/>
<p><input type="text" maxlength="20" placeholder="使用者名稱" id="name" name="name" autocomplete = "off"/></p>
<p><input type="password" maxlength="20" placeholder="密碼" id="pwd" name="pwd" autocomplete = "off"/></p>
<p><input type="text" maxlength="4" placeholder="驗證碼" id="vcode" name="vcode" autocomplete = "off"/><img id="vcode" title="點選更換驗證碼" /></p>
<p><input type="button" value="登入" id="login"/></p>
<p style="visibility: hidden;"><input type="password" value=" " style="position: absolute;z-index: -1;" disabled autocomplete = "off"/></p><!-- 這個password的值會被瀏覽器記住,我隨便用個空格 -->
PS:z-index的值和autocomplete的值根據實際情況來調整。
對於具體的情況,每個人會有不同的表單,可能會出現佈局啊什麼的不完美,
可以根據新增一組或多組display:none 的使用者名稱密碼input和在input的外層加個<p style="visibility: hidden;"></p> 來調整顯示!
如果是表單,一樣的道理,這裡不多說了。(注意要在表單裡面加input)
如果不是登入頁面,而是其他的頁面,如修改密碼的頁面,可以用小招:在舊密碼input前面加個隱藏的密碼input
<input type="password" style="display: none;" disabled autocomplete = "off"/>
如果其他的頁面,不只有密碼,還有使用者名稱input,那麼與修改密碼頁面一樣,在前面加多個使用者名稱密碼input組合即可
<input type="text" style="display: none;" disabled autocomplete = "off"/> <input type="password" style="display: none;" disabled autocomplete = "off"/>
或者(推薦)
<input type="text" name="username" style="display: none;" disabled autocomplete = "off"/> <input type="password" name="password" style="display: none;" disabled autocomplete = "off"/>
又或者(推薦)
<input type="text" id="username" style="display: none;" disabled autocomplete = "off"/> <input type="password" id="password" style="display: none;" disabled autocomplete = "off"/>
這裡臨時的text和password要和真實的text、password的name或id值要一樣!!!
如:臨時text的id值和真實的text的name值一樣,或臨時text的name值和真實的name值一樣等等!!!
最後小tip:
每次登陸時(按回車或者點選登入),都將真正的使用者名稱密碼input置空比較好,處於安全考慮
相關推薦
web安全:防止瀏覽器記住或自動填寫使用者名稱和密碼(表單)的終極解決方案
最近專案上要求做到這一點,在網上搜了一圈,發現都是不完美的,不相容全部的瀏覽器,於是只能自己摸索了,最終得出了終極解決方案: 涉及: disabled 或 readonly display:none; 隱藏用,隱藏後不佔位置 visibility:hidden;
禁止chrome瀏覽器自動填充表單的解決方案
經過測試,對chrome42,重寫input: auto-fill樣式不起作用,加上autocomplete="off"也不起作用。 因此使用了兩個隱藏的輸入框: <input type="text" style="display:none"/> <inp
真的炸了:讓人頭痛的小程式之『圖片懶載入』終極解決方案
轉載:請寫明原文連結及作者名 ‘小小小’ 小程式真的會取代一切?QQ群:139128168 ← 點選加群 微信小程式中,懶載入特效讓人頭疼不已,因為小程式完全沒法操作dom,所以位置的操作在小程式中,變得極其的難~~ 先看特效: 我們將其拆分為如
防止瀏覽器記住密碼後,自動填充表單
自動填寫表單這個功能在登入的時候能實現就可以了。但是在內容頁面裡面的表單也被瀏覽器預設填充上了記住的資料,這就很噁心了。在網上百度了一下後發現,autocomplete="off" 方法對於搜狗、火狐這些瀏覽器來說並不管用。 再嘗試了一下各種姿勢後,得到解決方
web安全:通俗易懂,以實例講述破解網站的原理及如何進行防護!如何讓網站變得更安全。收藏
調用 密碼破解 選項卡 講解 交互 不為 的人 文本 行修改 博主總結的還不錯 轉載收藏於 http://www.cnblogs.com/1996V/p/7458377.html 本篇以我自己的網站為例來通俗易懂的講述網站的常見漏洞,如何防止網站被入侵,如何讓網站
web安全/滲透測試--30--連結或框架注入
1、漏洞描述: 一個框架注入攻擊是一個所有基於GUI的瀏覽器攻擊,它包括任何程式碼如JavaScript、VBScript(ActivX)、Flash、AJAX(html+js+py)。程式碼被注入是由於指令碼沒有對它們正確驗證,攻擊者有可能注入含有惡意內容的
katalon系列十五:給瀏覽器新增cookie自動登陸
import org.openqa.selenium.Cookieimport org.openqa.selenium.WebDriverimport com.kms.katalon.core.webui.driver.DriverFactory WebUI.openBrowser('')
web安全手工測試---瀏覽器使用(實驗原理及思路更重要)
1、火狐瀏覽器禁用JS:開啟火狐--->about:config--->javascript.enabled--->切換成false; 2、兩個例子 3、黑掉網站思路:發現漏洞、驗證漏洞、利用漏洞、獲取許可權 保護網站:發現漏洞、
python Web安全之防止SQL注入
伴隨著Web2.0、社交網路、微博等一系列新型網際網路產品的興起,基於Web環境的網際網路應用越來越廣泛,Web攻擊的手段也越來越多樣,Web安全史上的一個重要里程碑是大約1999年發現的SQL注入攻擊,之後的XSS,CSRF等攻擊手段愈發強大,Web攻擊的思路也從服務端轉向了客戶端,轉向了瀏覽器和
Web安全:實驗4-FTP協議分析實驗
警示:實驗報告如有雷同,雷同各方當次實驗成績均以0分計;在規定時間內未上交實驗報告的,不得以其他方式補交,當次成績按0分計;實驗報告檔案以PDF格式提交。 院系 資料科學與計算機學院 班級 15級4班 學號 15331145 姓名 李果
web安全:QQ號快速登入漏洞及被盜原理
為什麼你什麼都沒幹,但QQ空間中卻發了很多小廣告?也許你的QQ賬號已經被盜。本文將講解一個QQ的快速登入的漏洞。 我前陣子在論壇上看到一個QQ的快速登入的漏洞,覺得非常不錯,所以把部分原文給轉到園子來。 而利用這個漏洞最終可以實現,只要你點選一個頁面或執行過一個程式,
在java的WEB專案如何防止瀏覽器直接開啟下載的檔案
java的web專案防止瀏覽器直接開啟下載的檔案,在web.xml檔案中配置mime下載檔案型別就可以了,配置的示例: <mime-mapping> <extension>doc</extension> <mime-type&
web安全:防範點選劫持的兩種方式
防範點選劫持的兩種方式 什麼點選劫持?最常見的是惡意網站使用 <iframe> 標籤把我方的一些含有重要資訊類如交易的網頁嵌入進去,然後把 iframe 設定透明,用定位的手段的把一些引誘使用者在惡意網頁上點選。這樣使用者不知不覺中就進行了某些不安全的操作。 有兩
Web安全:實驗1-網路掃描實驗
警示:實驗報告如有雷同,雷同各方當次實驗成績均以0分計;在規定時間內未上交實驗報告的,不得以其他方式補交,當次成績按0分計;實驗報告檔案以PDF格式提交。 院系 資料科學與計算機學院 班級 15級4班 學號 15331145 姓名 李果
防止瀏覽器記住用戶名及密碼的簡單實用方法
inpu 事件 http asc col type 屬性 ash 解決 很多瀏覽器都有自動填寫功能,我在input上使用了autocomplete="off",但在有的瀏覽器上還是被記住了用戶名跟密碼,請問有沒有更有效及簡便的方法來防止瀏覽器記住用戶名及密碼。 如何設置能
Linux常用操作命令(7):date命令顯示或設置系統日期和時間
Linux 日期 date 8.7 《Linux學習並不難》Linux常用操作命令(7):date命令顯示或設置系統日期和時間 使用date命令可以顯示和設置計算機系統的日期和時間。只有超級用戶才有權限使用date命令設置 日期和時間,而一般用戶只能使用date命令顯示日期和時間。
專案總結3:ionic3開發的App在啟動過程中部分手機出現白屏或黑屏問題之終極解決方案
問題場景:採用ionic3開發的App,當專案比較大的時候,會出現部分真機裝置在啟動的過程中有白屏或黑屏的情況。 原因預測:個別手機,尤其是安卓手機的效能比較差,App在啟動後進入首頁或登入頁前的初始化工作還沒有完成。 方案總結:在網上查過很多資料發現大部分的解決辦法都是
react中解決火狐瀏覽器,360瀏覽器記住密碼,首次input密碼框不能置為空的bug的終極解決方案
密碼 操作 方案 tdi ted 原理 idm bubuko inpu 先直接上核心代碼如下: 在火狐瀏覽器,360瀏覽器,初次加載,bug長這樣: 如果你想通過生命周期componentDidMounted等生命周期進行置空操作都是不行的,這可能是瀏覽
webpack漸入佳境系列一:webpack環境配置與打包基礎【附帶各種 "坑" 與解決方案!持續更新中...】
utf 環境配置 lan 配置 要求 完全 需要 構建 樣式 首先介紹傳統模塊化開發的主流方案: 1.基與CMD的sea.js,玉伯提出的解決方案,據說原來京東團隊在使用。用時才定義,就近加載。最近在瀏覽seajs官方文檔時發現seajs的域名已經在轉賣,驚恐萬分之余又想
node js實戰:帶數據庫,加密的註冊登錄表單
settings else input 是否 rip dig code setting 個人 demo 註冊效果: 登陸效果: 數據庫截圖: 數據庫操作 db.js //這個模塊裏面封裝了所有對數據庫的常用操作 var MongoClient =