【问题标题】:Password sent via HTTPS accessible via browser developer tools通过 HTTPS 发送的密码可通过浏览器开发人员工具访问
【发布时间】:2014-02-02 19:06:48
【问题描述】:

我有一个通过 https 上的 ajax 调用完成用户登录的网站。显然请求中包含密码。使用 Firefox 开发人员工具,我注意到我可以检查来自我的页面的任何网络请求,包括请求正文......并且有我的密码。我假设该请求是通过 https 加密的,但开发人员工具仍将其显示为纯文本。我错过了什么吗?如果用户在公共机器上登录并忘记注销,任何人都可以使用开发人员工具来获取他们的密码。提前感谢您提供的任何帮助。

-迈克

【问题讨论】:

  • 您可能会考虑实现类似 HMAC 身份验证的方法,其中您只发送密码的哈希值。此外,浏览器通常不会将 TLS/SSL 请求存储在缓存中。当然,如果没有 2 因素身份验证,公共机器可能很容易运行键盘记录器,等等;有无数种方法可以通过中间受感染的机器来破坏密码验证; HMAC +:2-factor auth via e.g. SMS 是目前防范它们的较好方法之一。
  • @BRPocock:浏览器不在缓存中存储 SSL 页面是一个古老的神话。它们绝对会像常规的不安全 HTTP 页面一样将 SSL 页面存储在缓存中,遵循 Cache-Control 标头中的任何指令。
  • 哇,没想到这已经是默认设置了。确认它在我的 Firefox 上关闭,但有点惊讶。谢谢乔希###
  • 存储页面和存储 POST 数据是不同的。 HMAC 身份验证并不意味着任何类型的加密。除了社交方面,仅发送密码哈希并不比发送实际密码更好。

标签: security


【解决方案1】:

一切都是按设计运行的——没有错。

浏览器的开发工具旨在允许用户检查页面中发生的一切——如果没有该功能,它们将毫无用处。开发工具的网络选项卡显示 HTTP 数据加密之前。

在公共机器场景中,请记住开发工具只显示工具打开后发生的网络请求,因此攻击者不能在用户离开页面后打开开发工具并查看明文身份验证请求。

【讨论】:

  • 嗨@josh3736,它记录在某处吗?我需要证明吗?
  • official docs 除了“仅在 DevTools 打开时记录请求”之外,并没有什么明确的说法。
  • 但是如果系统中安装了任何内存读取工具.. 它可以获取存储在网络上的信息,对吗?有这种可能吗?
  • 如果有恶意软件读取你的系统内存,你的问题就会大得多,而且它们与开发工具无关。
【解决方案2】:

我可以检查来自我的页面的任何网络请求,包括请求正文

不,你不能——这还不是网络流量——这是一个 HTTP 数据报,然后在到达 TCP 堆栈之前通过 SSL 层。

如果用户在公共机器上登录并忘记退出,任何人都可以使用开发者工具获取他们的密码

不,因为除非页面开发人员在做非常愚蠢的事情,否则浏览器不会存储信息 - 您只能看到它,因为您的浏览器被配置为拦截信息并临时存储它。但话虽如此,有很多事情会导致浏览器存储身份验证令牌 - 首先是自动完成和密码管理器(后者在实施质量方面差异很大,前者几乎没有防止泄露的保护)。身份验证令牌不应作为 GET 参数发送,因此不应从浏览器历史记录中看到。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-10
    • 2015-09-03
    • 2018-01-03
    • 2015-06-20
    • 1970-01-01
    • 2018-09-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多