即使我的服务器配置为使用 HTTPS(当使用 HTTP 时,Apache 中的重写规则将其转换为 HTTPS),HSTS是否好用?
即使在 CSS 和图像之类的资源上,或者仅在内容类型为 text/html 时也应该使用 HSTS?
即使我的服务器配置为使用 HTTPS(当使用 HTTP 时,Apache 中的重写规则将其转换为 HTTPS),HSTS是否好用?
即使在 CSS 和图像之类的资源上,或者仅在内容类型为 text/html 时也应该使用 HSTS?
是的,严格的运输安全提供了真正的好处。
HSTS 告诉浏览器仅通过 HTTPS 与服务器通信。浏览器第一次看到来自服务器的 HSTS 标头时,它会记住它。当用户再次访问该站点时,浏览器强制所有通信都通过 HTTPS 完成。只要攻击者在第一次访问该站点时不剥离标题,这将起作用。
这可以防止 SSL 剥离攻击,这是一种中间人攻击形式,它为用户提供明文资源而不是 SSL 资源。通常,用户不会收到警告,大多数“普通”用户也不会发现 URL 栏中未显示 SSL 挂锁或绿色/蓝色突出显示。在 HSTS 的情况下,浏览器会立即警告用户浏览器正试图违反自己的安全策略。
为了进一步的安全性,一些人建议将 HSTS 作为 DNSSEC 中的一个选项来实现,以便将 HSTS 标头设置为 DNS 查找的一部分。由于 DNSSEC 通过预先分发的授权证书提供了强大的安全性,这将使攻击者难以击败 HSTS 机制,即使他们在第一次访问该站点时积极尝试 SSL 剥离。
是的,如果您在站点范围内使用 SSL,那么我绝对建议您启用HSTS。
HSTS 是一种重要的安全措施,可以抵御将用户转移到 http 然后攻击用户的中间人攻击。例如,sslstrip 是一种众所周知的发起此类攻击的工具。有关此类攻击的更多详细信息,请参阅以下问题: 如何阻止 sslstrip 攻击?, 防御 SSLstrip 时的选项?,而这个答案。
HSTS 告诉浏览器:永远不要在这个站点上使用 HTTP。只能通过 HTTPS 访问它。因此,要启用 HSTS,您必须确保您的站点使用 HTTPS,并且只能使用 HTTPS。这包括一切:HTML、CSS、Javascript,一切。确保您网站上的所有 CSS 和 Javascript 都可以通过 HTTPS 访问。另外,我建议您将页面转换为通过 HTTPS 引用所有内容(我建议您的页面避免通过 HTTP 加载任何其他 Javascript 或 CSS 资源,因为这可能会导致某些浏览器出现警告或安全问题)。
例如,假设您的网站是www.example.com
并且您有一个页面https://www.example.com/buy.html
,其中包含来自您网站的一些 Javascript。您必须确保您的 Javascript 文件在 HTTPS URL 上可用(例如,https://www.example.com/library.js
)。我建议您通过 HTTPS URL(例如<SCRIPT SRC="https://www.example.com/library.js">
)加载它。
PS 我还建议您secure
在您使用的所有 cookie 上设置标志。