背景
最近做一个项目发现了一个BUG,chrome 会自动填充用户名密码,明明表单不是填用户名密码的,倒给我填上了 。
其实这个也不算是chrome BUG, 但是这个功能有时候挺烦人。
新版本的chrome对一些方法无效了 谷歌对这个密码填充真是执着。 实测在chrome59下,仅第三种有效 。
解决办法
-
初始化的时候将内容填充成空“”
<input type="text" name="textfield" value="">
-
添加隐藏的input,让浏览器将表单填到这里,下面这段代码放倒Form里面,input之前。
<input style="display:none" type="text" name="fakeusernameremembered"/> <input style="display:none" type="password" name="fakepasswordremembered"/>
很多地方提到了用这种办法,但是我试过在新版chrome下没有成功,有兴趣的小伙伴可以测试一下各个版本的兼容性。
-
利用
autocomplete
设置成off
阻止填充<form autocomplete="off" ...></form>
-
利用
autocomplete
设置成"new-password"
阻止填充 (新版chrome (59) 有效)<input type="password" name="pwd" autocomplete="new-password">
autocomplete有各种选项,填new-password可以阻止填充, 其他选项的意义参考如下链接
https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#attr-autocomplete
翻文档看到自动填充能作为一种攻击手段. 所以能关闭密码填充尽量关闭密码填充. 鬼知道密码是通过什么途径透露出去的。
参考链接:
https://stackoverflow.com/questions/18531437/stop-google-chrome-auto-fill-the-input