使用HTTPS,请求正文是否保护URL和请求标头?

时间:2012-01-13 22:27:43

标签: security ssl https

只想在进行SSL连接(http post)时验证:

https://www.example.com/some/path?customer_key=123123123

如果您不希望任何人知道customer_key,即使我正在建立https连接,这种方法也不会有效?

我想要保护的所有数据都必须在请求正文中吗?

5 个答案:

答案 0 :(得分:36)

引用HTTPS RFC

  

TLS握手完成后。然后客户端可以启动   第一个HTTP请求。所有HTTP数据必须作为TLS“应用程序发送   数据”。

基本上,首先建立安全SSL / TLS信道。只有这时才使用HTTP协议。这将使用SSL保护所有HTTP流量,包括HTTP标头(包含URL和cookie)。

握手中可见的是主机名本身,因为它包含在服务器证书中,在握手中可以清楚地看到(并且通过查看目标IP地址通常很容易猜出主机名) )。

使用服务器名称指示时,请求的主机名也应显示在server_name消息的ClientHello扩展名中。 否则,如果证书对多个主机名有效(例如,多个主题Alt。名称或通配符),则可能存在一些模糊性(对于窃听者)从证书中猜测主机名。在这种情况下,窃听来自客户端的DNS请求可能会给攻击者一个线索。

阅读其他人的回答和评论,有些人提到了有关Referer(在规范中丢失了r)和日志的问题。

剩下的潜在弱点之一是如何您将该链接提供给用户。如果它嵌入在通过普通HTTP提供的网页中,那么任何能够阅读该页面的人都能够看到它。您也应该通过HTTPS提供此类页面。如果您通过电子邮件发送该链接,我会说所有赌注都已关闭,因为邮件服务器很少加密它们之间的连接,用户也经常访问他们的电子邮件帐户而不加密。

编辑:

此外,如果您正在使用客户端证书身份验证,则在初始握手期间协商客户端证书将是可见的。这可能会泄漏访问网站的用户的名称(通常主题DN包含用户名)。如果在重新协商的握手期间发送客户端证书,则该证书将不可见。

答案 1 :(得分:7)

窥探者只能看到www.example.com。请求的路径部分受SSL / TLS保护。

显然,您还需要通过HTTPS发送原始超链接。

答案 2 :(得分:3)

请求数据将在建立安全连接后发送,所以不用担心上面的URL,但记住你的数据没有加密,只有服务器和客户端之间的通道是加密的,如果可以破解这个通道,那么可以清楚地看到你的数据。

SSL是数据之上的包装器加密通道。如果数据很简单,任何可以破解SSL的人都可以清楚地看到您的数据。

答案 3 :(得分:1)

修改我对NO的回答! 显然,在建立SSL连接之前,只有主机名以明文形式发送。

http://answers.google.com/answers/threadview/id/758002.html

答案 4 :(得分:0)

那取决于......

如果您使用数据包嗅探器,则无法看到通过线路发送的数据。这种方法的主要问题是请求URL通常以纯文本形式保存在服务器的日志中,浏览器历史记录保留URL,URL在Referrer头中传递,并且可能由第三方服务(谷歌分析)保留。