cod*_*ing 30 security ssl https
只是想验证,在进行SSL连接(http post)时说:
https://www.example.com/some/path?customer_key=123123123
Run Code Online (Sandbox Code Playgroud)
如果您不希望任何人知道customer_key,即使我正在建立https连接,这种方法也行不通?
我想要保护的所有数据都必须在请求正文中吗?
Bru*_*uno 37
引用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包含用户名).如果在重新协商的握手期间发送客户端证书,则该证书将不可见.