意外的Chrome自动填充行为 [禁用Chrome自动填充]

7

像之前的其他人一样,我正在尝试禁用Chrome自动填充。

这解释了为什么自动完成关闭无效

用户代理可以允许用户覆盖元素的自动填充字段名称,例如将其从“off”更改为“on”,以允许记住和预填值,尽管页面作者反对,或者始终“关闭”,永远不记住值。但是,用户代理不应该允许用户轻易地将自动填充字段名称从“off”更改为“on”或其他值,因为如果始终记住所有值,则对用户存在重大安全影响,而不考虑站点的偏好。

这应该是解决方案

在某些情况下,即使将自动完成属性设置为关闭,浏览器仍会继续建议自动完成值。这种意外行为对开发人员来说可能非常令人困惑。真正强制禁止自动完成的诀窍是将一个随机字符串分配给该属性。
默认行为是预期的。

default autocomplete

自动完成关闭
这也是预期的。

autocomplete off

自动完成为随机字符串

虽然我已禁用扩展,但自动完成仍不同,它来自Chrome浏览器。只有在Chrome设置中关闭自动填充才能防止自动完成出现。

请问有人能解释发生了什么,并且如何最终摆脱它?

编辑:

在同一表单中的另一个输入框中,autocomplete="off"可以起作用,但autocomplete="radnomString!23123adf"无法起作用。将autocomplete属性设置为form元素也没有帮助。autocomplete="new-password"也没有帮助。

autocomplete as random string

4个回答

5
最近的Chrome浏览器(至少在版本70后)尊重autocomplete =“off”属性,只要您的输入框不像用户配置文件、地址或信用卡信息等。另一方面,诸如disablednope或随机字符串的值似乎被忽略了。由于输入名称为individualName,因此Chrome浏览器可能会忽略自动填充元素。Google完成自动填充逻辑的是服务器端,因此涉及到许多启发式算法。

抱歉,我的Chrome版本是70.0.3538.110,但autocomplete="off"无法正常工作,而"nope"却可以。很奇怪。我也在Chrome 69上进行了测试。 - barbara.post
@barbara.post,请确保每个输入框都有唯一的“name”属性。 - Alex Gurskiy
另外,我需要强调的是,Chrome实际上会调用Google服务器来询问是否应该自动填充。因此,逻辑随时可能会发生变化! - rjh
autocomplete=off 只解决了自动完成的问题。在 Chrome 71 上仍然会出现自动填充建议。 - Kirk

3
为了补充rjh的回答,Chrome不仅仅查看您要禁用自动填充的字段的名称/ID。它还会查看文本框附近的文本。因此,如果您有“名称:[txtRandomStringTextBox]”,它将假定[txtRandomStringTextBox]实际上是一个名称,并且将继续建议自动填充。目前还没有解决此问题的方法。尽管他们在Chrome 70.0.3538.102中的当前实现较少让人感到烦恼,但如果完全解决这个问题会更好。

0

我在Windows Chrome上遇到了同样的问题。
Chrome忽略了我的自动填充设置并做出了一些奇怪的行为。

在我的电脑上,Chrome版本70+可以很好地使用新保存的密码,但在之前创建密码的电脑上,Chrome版本70不按预期工作。
经过多次尝试新建和删除密码以及其他各种设置,我的朋友清除了AppData中的Chrome缓存。现在它像第一个电脑一样按预期工作。

这似乎是Chrome 70的新功能 respect autocomplete=off 的更改没有刷新旧存储密码的缓存。(感谢@rjh提供的信息)

解决方案是从以下位置删除Chrome缓存:

C:\Users\<yourUser>\AppData\Local\Google\Chrome

希望有所帮助。

6
解决方案是从Chrome缓存中删除。我认为这对于使用我的网站的人不起作用。 - Michal
@Michal 我明白。我的网站产品给我的客户带来了很大的麻烦。虽然我不是说这是好事,但这是Chrome更新的一个bug,经过三天的寻找解决方案,这个方法解决了我的问题。我希望它能帮助到其他人。 - daremachine
2
这里是 版本号76.0.3809.87,该解决方案不起作用。在删除我的用户数据、重启Chrome并再次保存我的凭据之后,我仍然发现它们填充在随机的字段中。 - van_folmert

-1
为了防止自动填充(而不是自动完成),我使用了以下技巧:
<form>
  <input
    name="username"
    type="text"
    style="opacity: 0; position: fixed; width: 0; height: 0"
  />
  <input
    type="password"
    style="opacity: 0; position: fixed; width: 0; height: 0"
  />

  <input name="username" type="text" />
  <input type="password" />
</form>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接