如果您使用 HTTPS,您的 URL 参数会不会被嗅探? [复制]
Posted
技术标签:
【中文标题】如果您使用 HTTPS,您的 URL 参数会不会被嗅探? [复制]【英文标题】:If you use HTTPS will your URL params will be safe from sniffing? [duplicate] 【发布时间】:2010-10-27 23:53:19 【问题描述】:假设我设置了一个简单的 php web 服务器,其中包含一个可以通过 HTTPS 访问的页面。 URL 有简单的参数,例如https://www.example.com/test?abc=123
。
在这种情况下,这里的参数对人们嗅探数据包是安全的吗?如果服务器不使用任何 SSL 证书,这会是真的吗?
【问题讨论】:
【参考方案1】:取决于您所说的安全
SSL 对整个 HTTP 请求/响应进行加密,因此 GET 部分中的 URL 将被加密。这不会阻止 MITM 攻击和对 SSL 会话本身完整性的破坏。如果使用非权威证书,这会使潜在的攻击向量变得更简单。
Are REST request headers encrypted by SSL?
是一个类似的问题。
【讨论】:
【参考方案2】:http://answers.google.com/answers/threadview/id/758002.html
HTTPS 建立底层 SSL 任何 HTTP 数据之前的连接 转移。这可确保所有 URL 数据(主机名除外, 这是用来建立 连接)仅在内部进行 这个加密的连接,并且是 免受中间人的影响 攻击方式与任何 HTTPS 相同 数据是。
一个内的所有 HTTP 级事务 HTTPS 连接在内部进行 已建立的 SSL 会话,并且没有 查询数据在 已建立安全连接。
从外部来看,唯一的数据是 对世界可见的是主机名 和您要连接的端口。 其他一切都只是流 这是使用加密的二进制数据 仅在您之间共享的私钥 和服务器。
在您提供的示例中 浏览器会这样做:
导出 主机名(和端口,如果存在) 从网址。 连接到主机。 检查证书(它必须是“签名的” 由已知权威机构,特别适用 更正 IP 地址和端口,并 当前的)。 浏览器和服务器 交换加密数据和 浏览器收到一个私钥。 该 发出 HTTP 请求,并使用 建立密码学。 收到 HTTP 响应。也加密了。
HTTP 是一个“应用层” 协议。它承载在顶部 安全层。根据 SSL 由 Netscape 制定的规范, 它表明没有应用层 数据可以传输,直到安全 连接已建立 - 如 在以下段落中概述:
"此时,更改密码规范 消息由客户端发送,并且 客户端复制待处理的密码规范 进入当前的密码规范。这 然后客户端立即发送 完成消息下新 算法、密钥和秘密。在 响应,服务器将发送自己的 更改密码规范消息,传输 当前密码的未决 规范,并发送完成的消息 根据新的密码规范。在这 点,握手完成并且 客户端和服务器可能开始 交换应用层数据。” http://wp.netscape.com/eng/ssl3/draft302.txt
所以是的。 网址中包含的数据 对 HTTPS 连接的查询是 加密。但是它很差 实践包括这样的敏感 数据作为“GET”中的密码 要求。虽然不能 拦截,数据将被记录 在明文服务器日志中 接收HTTPS服务器,相当 也可能在浏览器历史记录中。它 可能也可用于浏览器 插件,甚至可能还有其他 客户端计算机上的应用程序。 最多可以是 HTTPS URL 合理地允许包括 会话 ID 或类似的不可重用 多变的。它不应该包含 静态身份验证令牌。
HTTP 连接概念是最 在这里清楚地解释: http://www.ourshop.com/resources/ssl_step1.html
【讨论】:
敏感参数的+1不应在GET请求中提交 -1 未提及您的来源:answers.google.com/answers/threadview/id/758002.html +1 表示除主机名外的所有内容均已加密【参考方案3】:请求的 URI (/test?abc=123) 作为 HTTP 请求标头的一部分发送到 Web 服务器并因此被加密。
但是 URL 可能会以其他方式泄漏,通常是网络浏览器工具栏、书签以及向朋友发送链接。根据您发送的数据的上下文/敏感性,发布数据可能更合适。
我认为 HTTPS 连接需要 SSL 证书,如果您不想购买的话,甚至需要自己生成的证书。
希望能有所帮助!
【讨论】:
【参考方案4】:url:s 将存储在服务器日志和浏览器历史记录中,因此即使它们不可嗅探,它们也远非安全。
【讨论】:
敏感参数的+1不应在GET请求中提交【参考方案5】:是的,您的网址不会被嗅探;但是,一个容易被忽视的漏洞是,如果您的页面引用了任何第三方资源,例如 Google Analytics、Add Content 等,您的整个 URL 将被发送给引用者中的第三方。如果它真的很敏感,则它不属于查询字符串。
至于问题的第二部分,如果您在服务器上没有证书,则不能使用 SSL。
【讨论】:
为什么要投反对票?您的 URL 将作为引用者发送到以检索您的所有链接内容。 敏感参数的+1不应在GET请求中提交【参考方案6】:在电线上,是的。在端点(浏览器和服务器)不一定。 SSL/TLS 是transport layer security。它将加密您在浏览器和服务器之间的流量。可以在浏览器端查看数据(例如 BHO)。一旦它到达服务器端,它当然可供接收者使用,并且只与他对待它一样安全。如果数据需要在初始交换之外安全地移动并防止客户端窥探,您还应该查看message layer security。
【讨论】:
【参考方案7】:SSL/TSL 是一种传输层安全性,是的,可以使用 BHO(如@JP 所写)或任何附加组件以及“浏览器外”HTTP 嗅探器来挑选数据。他们读取 winsock32 和应用程序之间的消息。加密发生在 winsock32 中,而不是在浏览器中。
看一下(这部分取自IEinspector的页面): IEInspector HTTP Analyzer 是一款非常方便的工具,可让您实时监控、跟踪、调试和分析 HTTP/HTTPS 流量。
【讨论】:
以上是关于如果您使用 HTTPS,您的 URL 参数会不会被嗅探? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
markdown 如果页面已经发布,则从构建器更改页面的URLAppend&change_url = true到URL然后您的URL将是https://