我想确保我的网站的访问者拥有最佳的体验,因此我希望他们能够使用LastPass和其他密码管理器。

有什么方法可以识别我的访问者是否在使用这些插件之一?

评论

您对“专门支持”这些插件有什么想法?您认为需要明确的支持吗?

有关信息安全的相关问题:网页可以识别出我保存了密码吗?

其背后的想法是,用户喜欢使用表单自动完成工具,而LastPass非常擅长于此。当我访问需要大量填写表格的网站时,这使我感到困扰。酒店预订网站,航空公司网站等...并且Web开发人员无需费心检查LastPass和类似工具是否可以填充其表格。公平地说,我刚刚意识到这在问题中并未立即显现出来,但是安全性并不是此评论背后的主要动机。

我认为在理想的世界中,我希望能够检查我的分析工具,并查看有多少访客手动填写表格,以及有多少使用过的访客和浏览器扩展。因此就是问题。

#1 楼

是的。

用户可以将LastPass安装为浏览器插件。因此,您可以依靠客户端脚本语言来检查是否安装了LastPass。

例如,使用NavigatorPlugins.plugins可让您获取PluginArray对象,列出应用程序中安装的插件:

function getLastPassVersion() {
  var lastpass = navigator.plugins['LastPass'];
  if (lastpass === undefined) {
    // LastPass is not present
    return undefined;
  }
  return lastpass.version;
}


还请注意,浏览器指纹技术通常实现并使用您要的内容。

评论


好吧,我总是喜欢说一些您没有说的话-否则我说的都是多余的,不是吗? ;)但是,当您删除我所引用的内容时,我的评论变得毫无意义(或者至少现在它们悬而未决了)

–哈根·冯·埃森(Hagen von Eitzen)
16年4月14日在17:30

根本不起作用:/

–马氏
16-10-4在14:04

@Mardzis确实。 MDN报告浏览器限制对navigator.plugins的访问或返回假结果以保护隐私:developer.mozilla.org/zh-CN/docs/Web/API/NavigatorPlugins/…

–代
19年2月27日在17:34

#2 楼


是否有任何方法可以识别访问者是否正在使用这些插件之一以及如何最好地支持它?


到目前为止,支持密码管理器的最佳方法是使用普通的<form>标签和普通格式。如果您不做任何聪明的事,那么密码管理器将完成其工作。

评论


为此,请执行以下操作:使用浏览器的内置密码管理器进行测试。如果这样可行,那么第三方解决方案也很有可能也会工作。

–凯文
16年4月10日在16:34

我同意,但是我注意到越来越多的网站使用角度和其他框架以及极其复杂的形式,这些形式不适用于LastPass。具有讽刺意味的是,这些网站往往是用户真正想要使用表单自动完成工具的网站,例如机票预订等。

–cgarvey
16年4月11日在13:35

请注意,某些密码管理器模拟按键操作,而不是在浏览器中安装插件。因此,如果内置密码管理器可以正常工作,那么密码管理器也可以正常工作。在这些情况下,通常应确保选项卡导航正常。

– Lie Ryan
16-4-12在14:30



#3 楼

这些密码管理器中的大多数都是基于浏览器插件的,它们通过填充表单字段并触发表单提交(就像用户按下了“提交”按钮一样工作),在服务器上,它看起来像是普通的表单提交,无法分辨它是否来自某个表单。密码管理器。

#4 楼

您可以使用Javascript检测用户名/密码字段中的键入速度。可变速率表示有人手动输入它,而恒定速率甚至根本没有击键(复制粘贴)表示有人正在使用密码管理器。

评论


因此,如果我有LastPass,但是它无法检测到登录字段,并且我手动键入,我是否没有LastPass?

–斯蒂芬·比杰斯特(Stephan Bijzitter)
16年4月11日在13:15

一些密码管理器复制粘贴,另一些密码管理器模拟按键,还有一些输入DOM并直接填写表单。另外,某些用户可能会在记事本中输入密码,然后复制粘贴内容,以便他们可以在密码字段中看到自己输入的内容。检测密码管理器并不是那么简单。

– Lie Ryan
16-4-12在14:34



#5 楼

为了回答实际问题,一种检测用户是否正在使用Lastpass的方法是提供某种类型的登录字段,并使用jQuery或类似方法来查看Lastpass是否已将其插入的“背景图像”插入可以自动填充的登录字段中。

这是一个电子邮件输入字段的示例,样式标签中的所有内容已由Lastpass添加:

<input type="text" class="form-control" id="inputEmail" placeholder="Email" style="cursor: pointer; background-image: url(&quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAASCAYAAABSO15qAAAAAXNSR0IArs4c6QAAAPhJREFUOBHlU70KgzAQPlMhEvoQTg6OPoOjT+JWOnRqkUKHgqWP4OQbOPokTk6OTkVULNSLVc62oJmbIdzd95NcuGjX2/3YVI/Ts+t0WLE2ut5xsQ0O+90F6UxFjAI8qNcEGONia08e6MNONYwCS7EQAizLmtGUDEzTBNd1fxsYhjEBnHPQNG3KKTYV34F8ec/zwHEciOMYyrIE3/ehKAqIoggo9inGXKmFXwbyBkmSQJqmUNe15IRhCG3byphitm1/eUzDM4qR0TTNjEixGdAnSi3keS5vSk2UDKqqgizLqB4YzvassiKhGtZ/jDMtLOnHz7TE+yf8BaDZXA509yeBAAAAAElFTkSuQmCC&quot;); background-attachment: scroll; background-size: 16px 18px; background-position: 98% 50%; background-repeat: no-repeat;" autocomplete="off">


这可能不是是检测用户是否正在使用Lastpass的最有效方法,但绝对可以::

评论


喜欢此解决方案背后的想法,但是它是否不假定LastPass可以填充表单上的至少一个字段?我访问的网站提示我问这个问题,它使用的是Angular表单,LastPass无法在其上标识单个字段。可以肯定的是边缘情况,但我想我不会看到最后一个情况。

–cgarvey
16年4月12日在10:54