禁用 Safari 自动填充用户名和密码

2023-12-13

您可能已经知道,Safari 有一个令人讨厌的自动填充错误,无论您是否设置,它都会填充电子邮件、用户名和密码字段autocomplete="off" or not.

这是一个基本形式:

<form action="/" method="post">
    <p>
        <label>E-mail</label>
        <input type="text" name="email" value="" />
    </p>
    <p>
        <label>Password</label>
        <input type="password" name="password" value="" />
    </p>
</form>

...Safari 在页面加载时自动填充这些字段,干得好!

如果你把autocomplete="off"对于字段和/或表单元素,Safari 仍然会自动填充这些字段:

<form action="/" method="post" autocomplete="off">
    <p>
        <label>E-mail</label>
        <input type="text" name="email" value="" autocomplete="off" />
    </p>
    <p>
        <label>Password</label>
        <input type="password" name="password" value="" autocomplete="off" />
    </p>
</form>

即使这样也行不通:

<form action="/" method="post" autocomplete="off">
    <p>
        <label>E-mail</label>
        <input type="text" name="secretfield1" value="" autocomplete="off"/>
    </p>
    <p>
        <label>Password</label>
        <input type="password" name="secretfield2" value="" autocomplete="off" />
    </p>
</form>

...因为 Safari 会查找这些<label>元素,如果它们包含单词“电子邮件”,“密码”等,并继续自动填充。

啊啊啊啊!,我想,并尝试了这个:

<form action="/" method="post" autocomplete="off">
    <p>
        <label>%REPLACE_EMAIL_TITLE%</label>
        <input type="text" name="%REPLACE_EMAIL_NAME%" value="" autocomplete="off"/>
    </p>
    <p>
        <label>%REPLACE_PASSWORD_TITLE%</label>
        <input type="password" name="%REPLACE_PASSWORD_NAME%" value="" autocomplete="off" />
    </p>
</form>

...并使用 JavaScript 将 %TAGS% 替换为真实姓名。 Safari 自动填充启动。无论您是否在替换时设置 10 秒超时。

那么,这真的是唯一的选择吗?

<form action="/" method="post" autocomplete="off">
    <p>
        <label>That electronic postal address we all use, but can't write the title here because Safari fills this with YOUR information if you have autofill turned on</label>
        <input type="text" name="someelectronicpostaladdress" value="" autocomplete="off"/>
    </p>
    <p>
        <label>A set of characters, letters, numbers and special characters that is so secret that only you or the user you are changing it for knows, but can't write the title here because Safari sucks</label>
        <input type="password" name="setofseeecretcharacters" value="" autocomplete="off" />
    </p>
</form>

我希望不是?

UPDATE: @skithund 在 Twitter 中指出, that Safari 即将更新 4.0.3,其中提到“登录自动填充”。有谁知道该更新是否会解决此问题?


浏览器忽略的原因autocomplete=off是因为有些网站试图禁用密码自动完成功能。

那是错的。

2014 年 7 月,Firefox 成为最后一个最终实施这一更改的主要浏览器,该更改将忽略任何试图关闭密码自动完成功能的网站。

  • 2009 年 6 月:IEInternals 博客,他们讨论如何让用户保持控制 (archive)
  • 2014 年 2 月:Chrome 的公告,当时他们开始忽视autocomplete=off (archive)
  • 2014 年 1 月:Bugzilla Bug 956906 - 通过密码管理器提供保存密码时忽略 autocomplete="off" (archive)
  • Reddit 讨论 (archive)

关于我们的 HTML 表单自动完成功能的最多用户投诉之一是“这不起作用——我没有看到我之前输入的任何文字。”在调试此类情况时,我们通常会发现该网站已使用提供的属性显式禁用了该功能,但用户当然不知道该网站已这样做,只是假设 IE 有错误。根据我的经验,当功能被隐藏或替换时,用户通常会责怪浏览器,而不是网站。

任何网站规避浏览器偏好的任何尝试都是错误的,这就是浏览器忽略它的原因。没有任何已知的理由说明网站应该尝试禁用密码保存。

  • Chrome 会忽略它
  • Safari 会忽略它
  • IE 会忽略它
  • 火狐浏览器会忽略它

此时,网络开发人员通常会抗议“但我不会在任何地方都这样做——只会在一些有意义的地方这样做!”不幸的是,即使这是真的,这也是浏览器实际上无法区分的另一种情况。请记住,弹出窗口曾经是网络浏览体验中令人愉快、有用的一部分,直到广告商的滥用使它们成为各地用户的祸根。不可避免的是,所有浏览器都开始阻止弹出窗口,甚至破坏了那些以良好品味和谨慎态度使用弹出窗口的“好”网站。

如果我是一个特别的人怎么办雪花?

有人提出了一个很好的用例:

我有一台共享的公共区域、信息亭式计算机。我们不希望有人(无意或有意)保存他们的密码,以便下一个用户可以使用它。

这并不违反以下声明:

任何网站规避浏览器偏好的任何尝试都是错误的

这是因为在共享信息亭的情况下:

  • 它不是网络服务器有奇怪的政策
  • 这是客户用户代理有奇怪的政策

The browser(共享计算机)是具有以下要求的计算机:it不要尝试保存密码。

正确的预防方法是browser从保存密码
是配置browser不保存密码。

由于您已锁定并控制这台自助服务终端计算机:您可以控制设置。这包括保存密码的选项。

在 Chrome 和 Internet Explorer 中,您可以使用组策略(例如注册表项)配置这些选项。

来自Chrome 政策列表:

自动填充启用

启用自动填充

数据类型:布尔值 (REG_DWORD)

Windows 注册表位置:软件\策略\Chromium\AutoFillEnabled

描述:启用 Chromium 的自动填写功能,并允许用户使用先前存储的信息(例如地址或信用卡信息)自动填写 Web 表单。如果禁用此设置,用户将无法访问自动填充。如果启用此设置或未设置值,自动填充将保留在用户的控制之下。这将允许他们配置自动填充配置文件并自行决定打开或关闭自动填充。

请告知公司经理,尝试禁用密码自动完成是错误的。这是非常错误的,以至于浏览器故意忽略任何试图这样做的人。那些人应该停止做错事。™

换句话说

换句话说:

  • if the users browser
  • 错误“请输入您最喜欢的婚前姓氏的第一个颜色的名字。”获取新密码
  • and the user
  • 不想要their浏览器
  • 更新their密码,
  • then they
  • 将会点击Nope

enter image description here

  • 如果我想保存我的 HIPPA 密码:这是我的权利
  • 如果我想保存我的 PCI 密码:这是我的权利
  • 如果我想保存“用户的新密码”: 这是我的权利
  • 如果我想保存一次性密码:这是我的权利
  • 如果我想拯救我的“第一种颜色最喜欢的少女”回答:这是我的权利。

推翻用户的意愿不是你的工作。这是他们的浏览器;不是你的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

禁用 Safari 自动填充用户名和密码 的相关文章