如何禁用Web表单字段/输入标签上的浏览器自动完成功能?

html HTML

Harry泡芙

2020-03-13

如何autocomplete在主要浏览器中针对特定input(或form field禁用

第1426篇《如何禁用Web表单字段/输入标签上的浏览器自动完成功能?》来自Winter(https://github.com/aiyld/aiyld.github.io)的站点

21个回答
JinJin西门 2020.03.13

此处提到的所有技巧都无法在Chrome中为我工作。此处对此问题进行了讨论:https : //code.google.com/p/chromium/issues/detail?id=468153#c41

将此添加到<form>作品中(至少现在):

<div style="display: none;">
    <input type="text" id="PreventChromeAutocomplete" name="PreventChromeAutocomplete" autocomplete="address-level4" />
</div>
逆天神奇 2020.03.13

您可以在输入中使用。

例如;

<input type=text name="test" autocomplete="off" />
LEYTom 2020.03.13

如果autocomplete="off"无法使用,也可以尝试以下方法

autocorrect="off" autocapitalize="off" autocomplete="off"
L西里 2020.03.13

我很难相信这已经被报道了这么久了。上面的解决方案对我不起作用,因为safari似乎知道何时不显示元素或不在屏幕外,但是以下内容对我有用:

<div style="height:0px; overflow:hidden; ">
  Username <input type="text" name="fake_safari_username" >
  Password <input type="password" name="fake_safari_password">
</div>

希望对某人有用!

老丝猪猪小卤蛋 2020.03.13

在字段中使用非标准名称和ID,因此“名称”不是“名称”。这样浏览器就不会将其视为名称字段。最好的部分是您可以对部分但不是全部字段执行此操作,它将自动完成部分但不是全部字段。

JinJin神奇宝儿 2020.03.13

添加autocomplete="off"不会削减它。

将输入类型属性更改为type="search"
Google不会将自动填充应用于具有搜索类型的输入。

米亚伽罗L 2020.03.13

添加

autocomplete="off"

标记到表单标签将禁用该input特定表单内所有字段的浏览器自动完成功能(以前在该字段中键入的内容)

经过测试:

  • Firefox 3.5、4个测试版
  • Internet Explorer 8
蛋蛋古一Eva 2020.03.13

这对我有用。

<input name="pass" type="password" autocomplete="new-password" />

我们还可以在其他控件(例如文本,选择等)中使用此策略

达蒙阳光乐 2020.03.13

游戏有点晚了...但是我只是遇到了这个问题,并尝试了几次失败,但这在MDN上对我有用

在某些情况下,即使将autocomplete属性设置为off,浏览器也会继续建议自动补全值。对于开发人员而言,这种意外行为可能会令人困惑。真正强制不完成的技巧是为属性分配一个随机字符串,如下所示:

autocomplete="nope"
老丝Stafan 2020.03.13

最佳解决方案:

防止自动填充用户名(或电子邮件)和密码:

<input type="email" name="email"><!-- Can be type="text" -->
<input type="password" name="password" autocomplete="new-password">

防止自动填写字段:

<input type="text" name="field" autocomplete="nope">

说明:在中 autocomplete继续工作<input>autocomplete="off"不起作用,但是您可以更改off为随机字符串,例如nope

适用于:

  • 铬:49、50、51、52、53、54、55、56、57、58、59、60、61、62、63和64

  • Firefox:44、45、46、47、48、49、50、51、52、53、54、55、56、57和58

卡卡西理查德 2020.03.13

刚设定autocomplete="off"这样做有一个很好的理由:您想提供自己的自动完成功能!

Near逆天 2020.03.13

我认为autocomplete=offHTML 5支持该功能。

问问自己自己为什么要这样做-在某些情况下这可能是有道理的,但不要仅仅为了这样做而这样做。

这对于用户来说不太方便,甚至在OS X中也没有安全问题(下面由Soren提到)。如果您担心别人的密码被远程窃取,即使您的应用程序使用了击键记录器,仍然可以这样做autcomplete=off

作为选择使用浏览器的用户,我记得(大部分)信息,如果您的网站不记得我的信息,我会觉得很烦。

null 2020.03.13

我一直在尝试无休止的解决方案,然后发现了这一点:

而不是autocomplete="off"简单地使用autocomplete="false"

就这么简单,它在Google Chrome浏览器中也很吸引人!

西里伽罗 2020.03.13

实际上,我们确实在一个站点上使用了sasb的想法。这是一个运行医生办公室的医疗软件网络应用程序。但是,我们的许多客户都是外科医生,他们使用许多不同的工作站,包括半公共终端。因此,他们希望确保不了解自动保存的密码含义或不注意的医生不会意外地使他们的登录信息易于访问。当然,这是在IE8,FF3.1等中开始采用私有浏览的想法之前。即使如此,许多医生也被迫在医院使用老式IT不变的旧浏览器。

因此,我们让登录页面生成了仅适用于该帖子的随机字段名称。是的,它不太方便,但是它只是在不将登录信息存储在公共终端上的情况下打动了用户。

GilGilPro 2020.03.13

我已经通过使用随机字符解决了与Google Chrome浏览器的无休止的战斗。当您始终使用随机字符串呈现自动完成功能时,它将永远不会记住任何内容。

<input name="name" type="text" autocomplete="rutjfkde">

希望对其他人有帮助。

Mandy番长 2020.03.13

正如其他人所说,答案是 autocomplete="off"

但是,我认为有必要说明为什么在某些情况下使用它是一个好主意,因为对此的一些答案和重复的问题表明最好不要将其关闭。

停止将存储信用卡号的浏览器留给用户。太多的用户甚至没有意识到这是一个问题。

禁用信用卡安全代码字段中的这一点尤其重要。该页面所述:

“永远不要存储安全代码。它的价值取决于提供该安全代码的唯一方法是从实体信用卡中读取该安全代码,从而证明提供该安全代码的人实际上持有该卡。”

问题是,如果这是一台公用计算机(网络咖啡馆,图书馆等),那么其他用户很容易窃取您的卡详细信息,即使是在您自己的计算机上,恶意网站也可能窃取了自动填充数据

Tom阿飞 2020.03.13

为了避免禁用自动完成功能,我不得不与这些答案有所不同。

首先要提到的是,未在登录表单字段上明确禁用自动完成功能是PCI-DSS失败。此外,如果用户的本地计算机受到威胁,则由于攻击者可以将其自动存储在明文中,因此它们可以轻易获取任何自动完成的数据。

当然,可用性是有争议的,但是在哪些表单字段应禁用自动完成功能以及哪些不应该禁用自动完成功能方面,这是一个很好的平衡。

null 2020.03.13

除了之外autocomplete=off,您还可以通过生成页面的代码将表单字段名称随机化,也许可以通过在名称末尾添加一些特定于会话的字符串来实现。

提交表单后,您可以先剥离该部分,然后再在服务器端对其进行处理。这将阻止Web浏览器查找您的字段的上下文,也可能有助于防止XSRF攻击,因为攻击者将无法猜测表单提交的字段名称。

樱理查德 2020.03.13

Firefox 30会忽略autocomplete="off"密码,而是选择提示用户是否将密码存储在客户端上。请注意以下2014年5月5日的评论

  • The password manager always prompts if it wants to save a password. Passwords are not saved without permission from the user.
  • We are the third browser to implement this change, after IE and Chrome.

According to the Mozilla Developer Network documentation, the Boolean form element attribute autocomplete prevents form data from being cached in older browsers.

<input type="text" name="foo" autocomplete="off" />
Itachi理查德 2020.03.13

Chrome的解决方案是autocomplete="new-password"在输入类型密码中添加密码。请检查以下示例。

例:

<form name="myForm"" method="post">
   <input name="user" type="text" />
   <input name="pass" type="password" autocomplete="new-password" />
   <input type="submit">
</form>

如果Chrome找到一个密码类型的框,它总是自动完成数据,足以指示该框autocomplete = "new-password"

这对我来说很好。

注意:请确保F12您的更改生效,许多浏览器将页面保存在缓存中,这给我留下了不好的印象,即该页面不起作用,但浏览器实际上并未带来更改。

Itachi梅 2020.03.13
<form name="form1" id="form1" method="post" 
      autocomplete="off" action="http://www.example.com/form.cgi">

这将在Internet Explorer和Mozilla FireFox中运行,缺点是它不是XHTML标准。

问题类别

JavaScript Ckeditor Python Webpack TypeScript Vue.js React.js ExpressJS KoaJS CSS Node.js HTML Django 单元测试 PHP Asp.net jQuery Bootstrap IOS Android