【问题标题】:Is a java request sent to a HTTPS url totally safe?发送到 HTTPS url 的 java 请求是否完全安全?
【发布时间】:2012-05-22 07:48:33
【问题描述】:

我实际上是在尝试使用 CDYNE 及其 API 发送短信。为此,我使用 Java、HttpGet 和 HttpClient 对象(Httpcore 和 HttpClient 库)。我将请求发送到 https URL,发送参数如https://www.example.com/SecureREST/SimpleSMSsend?PhoneNumber=ABC&Message=XYZ

我正在使用 GET 请求并且所有参数都在它自己的 URL 中,这会是一个安全问题吗?如果 URL 中 Message 参数的内容包含敏感信息怎么办?有人可以通过嗅探网络来获取内容吗?或者因为请求是使用 HTTPS 发送的,所以是安全的?

我相信在握手过程中只有 www.example.com 是可见的,并且一旦完成,一切都会被加密,但我只是想确保。

【问题讨论】:

  • +1 用于询问,而不是简单地假设它可能是安全的。
  • 安装wireshark.org并检查自己在网络上发送的内容
  • 据我记得你的理解是正确的。 www.example.com 仅在握手期间可见。
  • 这里的问题不在于 HTTPS 加密,而在于 API 的设计。如果发出 GET 请求会发送 SMS,它会产生副作用,这违反了 HTTP 规范:GET 请求是幂等的。

标签: java https sms sms-gateway


【解决方案1】:

Wikipedia is pretty clear about this:

请注意,当客户端发送 HTTPS 请求时,URL 的主机名和端口是未加密的... 但是,HTTPS 请求的所有其他部分,包括 URL 路径和查询参数,只能解密由目标站点或代表该站点终止 HTTPS 连接的中介中介。

所以你的信念是正确的。只有主机名和端口是公开可见的; URL 的其余部分已加密。

【讨论】:

  • 维基百科对此也有很大的错误。整个请求被加密。入侵者可以通过其他方式检测到哪个 ip:port 正在连接等,但肯定不是通过请求的内容。相关的 Wiki 段落是上周才添加的,即将消失。
猜你喜欢
  • 2021-07-21
  • 1970-01-01
  • 2016-12-23
  • 1970-01-01
  • 2011-05-19
  • 2014-12-27
  • 2020-11-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多