如何判断我的网站访问者是否正在使用LastPass或其他密码管理器?


21

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

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


19
您对“专门支持”这些插件有什么想法?您认为需要哪些明确支持?
deceze '16


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

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

Answers:


13

是。

用户可以将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

1
根本不起作用:/
Mardzis

@Mardzis确实。MDN报道,浏览器限制访问navigator.plugins或返回假结果,以保护隐私:developer.mozilla.org/en-US/docs/Web/API/NavigatorPlugins/...

46

有什么方法可以确定访问者是否正在使用这些插件之一,以及如何最好地支持它?

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


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

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

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

3

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


2

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


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

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

2

为了回答实际问题,一种检测用户是否使用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的最有效方法,但绝对可以:)


2
喜欢此解决方案背后的想法,但是它是否不假定LastPass可以填充表单上的至少一个字段?我访问的网站提示我问这个问题,它使用的是Angular表单,LastPass无法在其上标识单个字段。可以肯定的是边缘情况,但我想我不会看到最后一个情况。
cgarvey '16
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.