【问题标题】:Is there a way to see sent data when the server is https?当服务器是 https 时,有没有办法查看发送的数据?
【发布时间】:2017-04-18 17:52:39
【问题描述】:

我正在尝试查看我的浏览器发送到使用 https 协议的服务器的数据(使用 tcpdump)
tcpdump -i any -w /tmp/http.log
但是应用程序数据是加密的(正如预期的那样)。 我想知道当服务器是https时,有没有办法在数据被加密之前查看数据?

编辑:加密流量是由常见的网络浏览器创建的,如 Firefox、Chrome、IE...

【问题讨论】:

  • 什么应用程序正在创建 TLS 加密流量?自定义应用程序还是 Web 浏览器?以及在哪个平台上。请编辑您的问题并更新其他信息。
  • 我已经编辑了。
  • Firefox、Chrome、IE...等常见网络浏览器都内置了开发者工具,允许在应用 TLS 保护之前监控网络流量。

标签: ssl tcp https tls1.2


【解决方案1】:

如果您控制服务器,则可以将其设置为允许使用空密码,然后强制您的客户端使用相同的密码。空密码只是说“未加密”的一种奇特方式。这不应该被部署,因为即使将它作为密码列表中的一个选项也是非常不安全的。

您还可以向客户端添加可信密钥,并让客户端使用代理。与代理的通信使用您创建的可信密钥,并且可以在发送数据之前查看数据,并使用目标服务器的密钥进行加密。这实际上是一种“中间人攻击”,并且可以通过证书固定之类的东西来击败。一些公司使用它来跟踪员工计算机的使用情况(当以这种方式使用时,它有些争议)。

严格来说,这两种攻击都是绕过加密的攻击,而不是在加密之前查看数据。要在加密之前查看它,您通常必须修改客户端或服务器以记录它正在发送的内容(或者可能使用调试器),因为通常加密是由直接链接到程序的库完成的。

编辑:Chrome 和 Firefox 中的开发人员工具可能是您正在寻找的:如果您单击“网络”选项卡上的页面(在 chrome 中,我没有 FF,但它几乎完全同样的事情)您几乎可以看到正在发送和接收的信息的所有方面。

【讨论】:

  • 感谢您的回复。不自然的是,我无法控制服务器,也无法在那里更改任何设置。对于第二点,不确定它是否会给出我需要的结果,我的目的是查看单击发送按钮时由一个网页生成的数据(它使用 ajax 发送数据,所以我看不到数据已格式化),所以如果我使用您描述的第二种方法,我能看到该数据吗?
  • 如果您的客户端是 Chrome 或 Firefox,开发者工具可能有您想要的。 (编辑答案以反映这一点)
  • 谢谢,Firefox 的开发者工具给了我我需要的东西
【解决方案2】:

只需在您的计算机上使用Charles Proxy(免费试用)。如果证书被固定,这将不起作用,对于浏览器来说可能不是这样。

【讨论】:

    猜你喜欢
    • 2020-03-12
    • 2014-12-02
    • 2018-08-31
    • 1970-01-01
    • 2022-01-17
    • 2019-05-27
    • 2017-01-27
    • 2022-01-08
    • 1970-01-01
    相关资源
    最近更新 更多