停止 LastPass 填写表格

Posted

技术标签:

【中文标题】停止 LastPass 填写表格【英文标题】:Stop LastPass filling out a form 【发布时间】:2014-01-24 03:37:02 【问题描述】:

有没有办法防止 LastPass 浏览器扩展使用名为“用户名”的输入字段填写基于 html 的表单?

这是一个隐藏字段,所以我不希望任何软件将这个字段用于他们的目的:

<input type="text" name="username" id="checkusername" maxlength="9" value="1999" class="longinput" style="display:none">

解决方案不应该像“重命名输入字段”。

【问题讨论】:

如果字段被隐藏,最好设置type="hidden"而不是用CSS隐藏 超级简单$(':input').attr('data-lpignore', true); 就是这样。这将禁用所有表单的最后一次表单填写。 【参考方案1】:

添加

data-lpignore="true"

到一个输入字段为我禁用了灰色的 LastPass [...] 框。

来自LastPass.com

【讨论】:

这应该是有效的答案。 LP 似乎尊重此属性,不需要任何疯狂的“搜索”名称或 ID 或角色。 这只会删除灰色图标,但不会阻止 LastPass 忽略输入自动填充 这不应该是公认的答案,因为这不会“停止 LastPass 填写表格” 在 2020 年尝试过,它确实阻止了 LastPass 自动填充具有此数据属性的输入字段。 重申其他最近的 cmets...LastPass 似乎已经改进/修复了这个问题,因为 2017 年和 2018 年的 cmets 表示它不会停止自动填充。它确实现在会停止自动填充(2020 年 12 月)。【参考方案2】:

必须满足两个条件:

    form(不是元素)需要有autocomplete="off" 属性 Lastpass 用户需要启用此选项: (旧)Settings &gt; Advanced &gt; Allow pages to disable autofill (新)Account Options &gt; Extension Preferences &gt; Advanced &gt; Respect AutoComplete=off: allow websites to disable Autofill

所以这取决于用户和开发者。

【讨论】:

这仍然准确吗?我在 LastPass 的任何设置菜单中都找不到允许页面禁用自动填充的设置。 在较新的版本中,可以在帐户选项 > 扩展首选项 > 高级 > “尊重自动完成=关闭:允许网站禁用自动填充”中找到该设置【参考方案3】:

对我有用的是在表单的 id 中包含单词“-search-”,例如 &lt;form id="affiliate-search-form"&gt; - 并且 lastpass 不会将其元素添加到表单输入中。它适用于像&lt;form id="search"&gt; 这样更简单的东西,但不适用于&lt;form id="se1rch"&gt;

【讨论】:

如果出现以下情况,它也会被抑制: - 如果字段 nameclass 属性包含单词“search”或“srch” - 如果表单 idname 属性包含“搜索” - 表单 role 属性为“搜索” 不幸的是,这不适用于密码字段。实际上,表格仍然是自动填写的。在我的情况下,将search 作为类添加到用户名和密码禁用了用户名字段上的星号按钮,但密码字段保持原样。 是的,我可以确认在使用这种方法时密码字段仍然填写。 :-( 这不再适用于当前的 Lastpass 版本。所以这个答案应该被删除。 在 Chrome 51、LastPass 4.1.17 上将 -search- 添加到单个输入字段的 id 对我有用。将其添加到表单中没有帮助。【参考方案4】:

我知道我在这里聚会迟到了,但是当我试图阻止 lastpass 破坏我的表格时,我发现了这一点。 @takeshin 是正确的,因为自动完成是不够的。我最终做了下面的黑客只是为了隐藏符号。不漂亮,但我去掉了图标。

如果有任何 lastpass 开发人员正在阅读本文,请给我们一个要使用的属性,这样我们就不必求助于这样的东西了。

form[autocomplete="off"] input[type="text"] 
    background-position: 150% 50% !important;

【讨论】:

这是唯一对我有用的解决方案(即使使用 lastpass 设置,我实际上并不希望我的用户这样做),尽管它确实与我设置自己的 @987654322 冲突@ 在输入字段上(我喜欢在输入字段上放置“清除按钮”) - 在这种情况下,对我也有用的只是将 background-imagebackground-position 设置为 !important 以覆盖 lastpass 内置样式。【参考方案5】:

认为 lastpass 尊重输入的autocomplete="off" 属性,但我不确定100%。

编辑 正如其他人指出的那样。这仅在用户配置了最后一次传递以兑现这一点时才有效。

【讨论】:

是的,但默认情况下不是:helpdesk.lastpass.com/extension-preferences/advanced 我可以确认 lastpass 在表单级别不支持autocomplete="off"。这只是在“编辑用户”表单上浪费了我一个小时的开发时间,该表单似乎显示了错误的电子邮件地址。 lastpass 首选项有一个“不要覆盖已填写的字段”选项,这很有帮助。 正如 Marco 所说,您需要激活此行为。 Preferences->Advanced->Respect AutoComplete=off: 允许网站禁用 AutoFill 你如何在 lastpass 中绕过这个? 我没有发现这种情况。 2021 年的 LastPass 不尊重 autocomplete="new-password" 即使在启用“自动完成关闭”的情况下也是如此。你需要 lpignore【参考方案6】:

对我来说,要么使用type=search,它有点等于text,要么使用role=note

你可以检查 LastPass-javascript,但它很大,也许你可以在那里找到一些解决方法,据我所见,他们只检查 4 种输入类型,所以input type=search 将是一种解决方法:

!c.form && ("text" == c.type || "password" == c.type || "url" == c.type || "email" == c.type) && lpIsVisible(c))

这些也是他们似乎忽略的role-关键字:

var c = b.getAttribute("role");
switch (c) 
case "navigation":
case "banner":
case "contentinfo":
case "note":
case "search":
case "seealso":
case "columnheader":
case "presentation":
case "toolbar":
case "directory":`

我检查了 LastPass'onloadwff.js,准备 26.960 行代码:)

【讨论】:

我尝试了上面所有的答案,type=search 是唯一对我有用的东西。 +1,似乎使用 type=search 是阻止自动填充的唯一方法,无论 LastPass“尊重自动完成=关闭”设置的状态如何。 尝试添加role="note"type="search"。没有人在最新的 Chrome 和最新的 lastpass 上工作。 看来lpignore 又开始工作了,请给我这个https://jsfiddle.net/78z0L1sa/3/ 天啊,这很烦人,LastPass 正在将我的 type=text 密码字段转换为 type=password 并且在这个特定的屏幕上需要看到密码,然后 LastPass 添加了站点密码而不是正确的密码用户不知道他们何时保存它正在更改凭据并中断与其他系统的连接。 lpignore 只删除了图标,其他解决方案需要用户交互,这并不理想。最后,将类型更改为搜索有效;虽然我讨厌因为别人的软件而不得不这样做。无论如何,请对此进行投票。【参考方案7】:

在输入ID中添加“搜索”

<input type="text" name="user" id="user-search"/>

【讨论】:

对我来说很好。在最新的 Chrome 上测试。它有点像黑客,但不像其他人那样有可能破坏,所以我会去做。【参考方案8】:

聚会晚了,但我刚刚通过修改表单实现了这一点:

<form autocomplete="off" name="lastpass-disable-search">

我猜这个傻瓜最后会认为这是一个搜索表单。但是,这不适用于密码字段!在这种情况下,Lastpass 会忽略 name 字段。

我设法做到这一点的唯一方法是直接在表单顶部添加以下内容:

<form autocomplete="off">
    <div id="lp" ><input type="text" /><input type="password" /></div><script type="text/javascript">setTimeout(function()document.getElementById('lp').style.display = 'none',75);</script>
</form>

它会导致令人讨厌的闪烁,但确实删除了自动填充废话 - 尽管它仍然显示“生成密码”小部件。 LastPass 等到 domready 后检查是否有任何可见的密码字段,因此无法隐藏或缩小上面的模拟字段。

【讨论】:

【参考方案9】:

这个 ES6 风格的代码对我很有帮助,因为它为我的所有输入控件添加了 data-lpignore

const elements = document.getElementsByTagName("INPUT");
for (let element of elements) 
    element.setAttribute("data-lpignore", "true");

要访问特定的 INPUT 控件,可以这样写:

document.getElementById('userInput').setAttribute("data-lpignore", "true");

或者,你可以通过类名来做:

const elements = document.getElementsByClassName('no-last-pass');
for (let element of elements) 
    element.setAttribute("data-lpignore", "true");

【讨论】:

【参考方案10】:

对于 2019 年 10 月最新发布的 Lastpass 错误版本,这个简单的修复似乎是最好的。

添加

type="search"

您的意见。

lastpass 例程检查type 属性以确定如何处理它的自动填充,并且它对“搜索”的这个html5 type 不执行任何操作。这个修复有点骇人听闻,但它是一行更改,当他们修复错误的脚本时可以轻松删除。

注意:执行此操作后,如果某些浏览器选择了 type 属性,您的输入可能会出现不同的样式。如果您观察到这种情况,您可以通过在您的输入中将浏览器特定的 CSS 属性 -webkit-appearance-moz-appearance 设置为 'none' 来防止它发生。

【讨论】:

有一个名为data-lpignore 的元素现在可以设置为true。这将禁用 lastpass 自动填充 这已存在多年,并且在此页面的所有答案中都有。没有为我工作。无论如何,如果它可以为您工作并通过测试,请试一试。 哦,我从没见过有人抱怨这个。我测试了它,它对我有用。我很困惑为什么它不适合你。 这确实是公认的答案。我不知道为什么你会认为其他人没有尝试过。看看这个。但是对于很多很多领域来说,它并没有阻止 LastPass 填写输入。 你真的阅读了接受答案下的 cmets 吗?【参考方案11】:

不幸的是,此处的任何选项(自动完成、数据 lpignore 等)都无法阻止 LastPass 自动填写我的表单字段。我对这个问题采取了更加大刀阔斧的方法,而是通过 JavaScript 异步设置输入 name 属性。以下依赖于 jQuery 的函数(从表单的 onsubmit 事件处理程序调用)起到了作用:

function setInputNames() 
    $('#myForm input').each(function(idx, el) 
        el = $(el);
        if (el.attr('tmp-name')) 
            el.attr('name', el.attr('tmp-name'));
        
    );


$('#myForm').submit(setInputNames);

在表单中,我只是使用tmp-name 属性代替了等效的name 属性。示例:

<form id="myForm" method="post" action="/someUrl">
    <input name="username" type="text">
    <input tmp-name="password" type="password">
</form>

2019-03-20 更新

由于 AngularJS 取决于具有name 属性的表单字段,以便 ngMessages 正确显示字段验证错误消息,我仍然遇到了上述问题。

最终,为了防止 LastPass 在我的密码更改表单上填写密码字段,我能找到的唯一解决方案是:

    避免使用input[type=password]entirely,并且 字段名称中没有“密码”

由于我需要能够在我的情况下正常提交表单,我仍然使用我原来的解决方案来“及时”更新字段名称。为了避免使用密码输入字段,我发现this solution 工作得非常好。

【讨论】:

【参考方案12】:

对于偶然发现这一点的人 - 密码字段上的 autocomplete="new-password" 会阻止 LastPass 填写密码,与 data-lpignore="true" 结合使用会完全禁用它

【讨论】:

【参考方案13】:

2021 年 11 月更新

我注意到所有 LastPass 小部件都包装在 css-1obar3y 类的 div 中。

div.css-1obar3y 
  display: none!important;

非常适合我

【讨论】:

友情提示:我不认为这是一个可靠的解决方案。类名似乎已生成,并且可能在将来的任何时候更改。【参考方案14】:

尝试了 -search 重命名,但由于某种原因不起作用。对我有用的是:

    将表单标记为自动完成 - autocomplete="off" 将表单字段输入类型更改为文本 在你的 CSS 中添加一个新类来屏蔽输入,模拟密码字段 css 位:input.masker -webkit-text-security:光盘;

在最新版本的 FF 和 Chrome 中进行了尝试和测试。

【讨论】:

【参考方案15】:

以下是我防止 lastpass 在 Chrome 中填充剃须刀 @Html.EditorFor 框的方法:

单击工具栏中的活动 LastPass 图标,然后转到“帐户选项”>“扩展首选项”。

在此屏幕上选中“不要覆盖已填写的字段”(在底部)

接下来,点击左侧的“高级”。

在此屏幕上选中“尊重自动完成=关闭:允许网站禁用自动填充”。

我不需要在我的 ASP cshtml 表单中做任何特别的事情,但我确实在 @Html.EditorFor 框的表单中有一个默认值。

我希望这对某人有所帮助和工作。我在网上找不到任何关于这个问题的 Razor 特定帮助,所以我想我会添加这个,因为我是在上面的链接和贡献的帮助下想出来的。

【讨论】:

【参考方案16】:

type="hidden" autocomplete="off"

将此添加到我的输入中对我有用。 (输入也有visibility: hidden css)。

【讨论】:

以上是关于停止 LastPass 填写表格的主要内容,如果未能解决你的问题,请参考以下文章

UC浏览器电脑版上如何使用lastpass ?

赶快更新LastPass

如何编写我的 HTML 登录表单以显式启用 LastPass?

Lastpass 如何知道 Chrome 中的当前 URL

在寻找 LastPass 的更好替代品吗?

LastPass: Free Password Manager(密码保存)