如果您使用HTTPS,您的URL参数是否可以安全地嗅探?

ero*_*ppa 46 apache security url https

假设我设置了一个简单的php web服务器,其页面可以通过HTTPS访问.URL有简单的参数,比如https://www.example.com/test?abc=123.

在这种情况下,这里的参数对于嗅探数据包的人来说是否安全?如果服务器不使用任何SSL证书,这是真的吗?

Jos*_*rke 71

是的,你的网址可以安全地嗅探; 然而,一个孔,很容易overlooken是,如果你的页面引用任何第三方的资源,如谷歌分析,添加内容什么,你的整个URL将被发送到引荐第三方.如果它真的很敏感,它不属于查询字符串.

至于问题的第二部分,如果服务器上没有证书,则无法使用SSL.

  • 不应在GET请求中提交敏感参数的+1 (5认同)

Ray*_*yes 55

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

HTTPS在传输任何HTTP数据之前建立基础SSL连接.这将确保所有的URL数据(与主机的例外,它是用来建立连接)这个加密连接中仅进行,并以同样的方式被保护,人在这方面的中间人攻击,任何HTTPS数据.

HTTPS连接中的所有HTTP级事务都在已建立的SSL会话中进行,并且在建立安全连接之前不会传输任何查询数据.

从外部看,世界上唯一可见的数据是您要连接的主机名和端口.其他所有内容都只是一个二进制数据流,使用仅在您和服务器之间共享的私钥加密.

在您提供的示例中,您的浏览器会执行以下操作:

  1. 从URL派生主机名(和端口,如果存在).
  2. 连接到主机.
  3. 检查证书(必须由已知权限"签名",专门用于更正IP地址和端口,并且是当前的).
  4. 浏览器和服务器交换加密数据,浏览器接收私钥.
  5. 发出HTTP请求,并使用已建立的加密进行加密.
  6. 收到HTTP响应.也加密了.

HTTP是一种"应用层"协议.它位于安全层之上.根据Netscape制定的SSL规范,它规定在建立安全连接之前不会传输任何应用层数据 - 如以下段落所述:

"此时,客户端发送更改密码规范消息,客户端将挂起的密码规范复制到当前的密码规范中.然后客户端立即在新的算法,密钥和密钥下发送完成的消息. ,服务器将发送自己的更改密码规范消息,将挂起转移到当前的密码规范,并在新的密码规范下发送完成的消息.此时,握手完成,客户端和服务器可能开始交换应用程序图层数据." http://wp.netscape.com/eng/ssl3/draft302.txt

是的 HTTPS连接上的URL查询中包含的数据已加密.然而, 在'GET'请求中包含诸如密码之类的敏感数据是非常糟糕的做法.虽然无法拦截,但数据将记录在接收HTTPS服务器上的纯文本服务器日志中,很可能也会记录在浏览器历史记录中.它可能也可用于浏览器插件,甚至可能用于客户端计算机上的其他应用程序.最多可以合理地允许HTTPS URL包括会话ID或类似的不可重用变量.它永远不应该包含静态身份验证令牌.

这里最清楚地解释了HTTP连接概念:http: //www.ourshop.com/resources/ssl_step1.html

  • -1,不提及您的来源:http://answers.google.com/answers/threadview/id/758002.html (8认同)
  • 敏感参数的 +1 不应在 GET 请求中提交 (2认同)

小智 7

请求的URI(/ test?abc = 123)作为HTTP请求标头的一部分发送到Web服务器,因此被加密.

但是,URL可能会以其他方式泄漏,通常是Web浏览器工具栏,书签和发送给朋友的链接.根据您发送的数据的上下文/敏感度,发布数据可能更合适.

我认为HTTPS连接需要SSL证书,如果您不想购买SSL证书,则需要自行生成.

希望那有所帮助!


Aid*_*ell 5

取决于你的安全意味着什么

SSL加密整个HTTP请求/响应,因此GET部分中的URL将被加密.这不会阻止MITM攻击和SSL会话本身完整性的破坏.如果使用非权威证书,则可以使潜在的攻击向量更简单.

REST请求标头是否由SSL加密?

是一个类似的问题.