通过 HTTPS 发送数据时,我知道内容是加密的,但是我听到有关标头是加密的还是标头加密了多少的混合答案。
多少个 HTTPS 标头已加密?
包括 GET / POST 请求 URL,Cookie 等。
整个批次都已加密† - 所有标头。这就是为什么虚拟主机上的 SSL 不能很好地工作的原因 - 您需要专用的 IP 地址,因为主机标头已加密。
†服务器名称标识(SNI)标准意味着,如果您使用 TLS,则可能不会对主机名进行加密。另外,无论您是否使用 SNI,TCP 和 IP 标头都不会被加密。 (如果是,则您的数据包将无法路由。)
标头完全加密。通过网络 “明文” 传递的唯一信息与 SSL 设置和 D / H 密钥交换有关。这种交换经过精心设计,不会对窃听者产生任何有用的信息,一旦发生,所有数据都会被加密。
对旧问题的新答案,很抱歉。我以为我要加 $ .02
OP 询问标头是否已加密。
它们是:在运输中。
他们不是:不在途中。
因此,浏览器的 URL(在某些情况下为标题)可以在表头中显示查询字符串(通常包含最敏感的详细信息)和一些详细信息。浏览器知道一些标题信息(内容类型,unicode 等);浏览器历史记录,密码管理,收藏夹 / 书签以及缓存的页面都将包含查询字符串。远程服务器日志也可以包含查询字符串以及一些内容详细信息。
同样,URL 也不总是安全的:域,协议和端口是可见的 - 否则路由器不知道将请求发送到哪里。
另外,如果您有 HTTP 代理,则代理服务器会知道该地址,通常他们不知道完整的查询字符串。
因此,如果数据在移动,则通常会受到保护。如果它不在运输中,则不会被加密。
不要随意选择,但是最后的数据也会解密,可以随意解析,读取,保存,转发或丢弃。而且,两端的恶意软件都可以对进入(或退出)SSL 协议的数据进行快照 - 例如 HTTPS 内的页面内的(不良)Javascript,可以秘密地对登录的网站进行 http(或 https)调用(因为可以访问本地硬盘)通常受到限制,没有用)。
同样,Cookie 也不会在 HTTPS 协议下加密。希望将敏感数据存储在 cookie 中(或其他任何原因)的开发人员需要使用自己的加密机制。
关于缓存,大多数现代浏览器不会缓存 HTTPS 页面,但是 HTTPS 协议并未定义这一事实,它完全取决于浏览器的开发人员,以确保不缓存通过 HTTPS 接收的页面。
因此,如果您担心数据包嗅探,那可能还可以。但是,如果您担心恶意软件或有人在浏览您的历史记录,书签,Cookie 或缓存,那么您还可以继续前行。