11

所以你知道你是如何看到登录屏幕的,然后你填写它,然后浏览器加载下一页吗?此时,LastPass、1Password 或其他扩展名的密码管理器栏会以某种方式弹出,询问您是否要保存密码。他们怎么知道你刚刚登录成功?

  • 有时会提交表单,有时 js 会拦截表单提交并发送 AJAX。
  • 响应返回并可能设置一个新的 cookie,但有时会继续使用现有的会话 cookie(允许会话固定攻击,但某些实现会这样做)。
  • 加载或重新加载新位置,但有时 javascript 会重新加载文档的一部分

但是不知何故,这些密码管理器检测到我已经成功登录了一个站点!如何?是因为我在密码字段中输入了一些内容,然后提交了一些表单或发送了一些网络请求吗?但是他们怎么知道它成功了?

任何熟悉这些密码管理器的人都可以提供一些有用的信息吗?

我问的原因是我想开发一个扩展程序来检测您何时登录并以某种方式尝试从服务中提取您的用户 ID。这是为了自动与朋友共享您的用户 ID,并让他们知道(在您的许可下)您经常使用哪些网站。

有关在服务上提取登录用户 id 的技术的任何提示也会有所帮助。

4

6 回答 6

16

在大多数情况下,他们实际上并不知道成功登录。他们知道提交了带有密码字段的表单,并且响应是200OK. 这可能仍然是显示错误消息的页面。

至于提取用户 ID,我很确定您的意思是个人资料页面或类似的东西。这必须逐个站点完成,因为站点将拥有自己的 API 和路由结构。

于 2016-12-14T19:07:03.347 回答
8

由于有人已经回答了这个问题,我会同意他的看法。

在大多数情况下,他们实际上并不知道成功登录。他们知道提交了带有密码字段的表单,并且响应为 200OK。这可能仍然是显示错误消息的页面。

由于浏览器会监视其中包含密码字段的请求,以及请求的响应状态代码,但您仍然可以轻松欺骗浏览器。要了解登录的用户 ID,您肯定需要后端支持/api。这取决于后端使用的身份验证框架。但是您可以轻松获取表单字段,但是从表单字段中提取/查找用户 ID 是一项非常困难的任务,在大多数情况下,表单将只有两个字段,您可以设法获取用户 ID。但在某些情况下,例如银行网站,他们会发送一些虚拟字段并欺骗此类工具。在某些情况下,用户 ID 与电子邮件不同,因此这是一项艰巨的任务。

于 2016-12-19T13:33:41.753 回答
5

他们只检测表单是否已提交,并返回代码 200(OK)。他们不一定知道您是否已登录,但此方法适用于大多数网站。他们还可能检测之后是否加载了新页面,因为登录失败通常不会重定向用户。但是,我之前曾提示保存错误的密码。

于 2016-12-20T04:14:04.900 回答
5

他们可以检测到您当前的标签。以及该页面的每个 HTML 元素。愿我们有登录页面案例列表来检测登录名、用户名、忘记密码等关键字。并检查所有关键字以识别这是登录页面。

他们只是准备好页面,甚至他们可以读取您的密码(是的)。

如果您从该页面发出请求且响应为 200ok,则表示您的密码正确。

于 2016-12-21T18:50:09.590 回答
2

每当使用用户名和密码向服务器请求时,服务器会检查这两个条目到他们的数据库中,服务器会找到您的数据,它将返回响应代码200,并且使用 AJAX 成功回调脚本将捕获响应代码并显示成功消息。

并返回某种信息,您可以将其存储到浏览器的 localStorage 或 cookie 中以供进一步使用。

于 2016-12-22T11:52:06.630 回答
0

我创建了几页静态 HTML 和表单: 所以当表单提交时,它会转到第二页。

让我们测试一下

<form action="test1.html">    
<input type="text" />
<input type="password" />    
<input type="submit" />    
</form>

</body>

Chrome 没有打扰任何事情发生。虽然即使表单提交到错误页面,Firefox 也会弹出一个保存密码的窗口。

所以firefox只寻找一个带有密码字段的表单并要求保存密码弹出框。

如果要创建一个可以检查用户是否成功登录的扩展程序,然后您想询问密码记住弹出窗口。为此,您必须检查服务器响应。我无法创建一个动态页面来通过浏览器示例对其进行校对。

于 2016-12-23T10:18:14.643 回答