HTTPS安全部署:HSTS作用及HSTS头部署

发布时间:2017/5/18 15:00:18 打印 字号:

       1. HSTS可以禁止浏览器使用无效证书(浏览器的默认策略是让用户决定是否放行,而用户往往因为不能区分无效是因为配置问题还是攻击而选择继续访问从而导致遭受网络攻击)

       2. HSTS对以下情况可以仍然保持HTTPS通信:

         用户保存了原始网站的书签

         不安全的Cookie

         HTTPS 剥离攻击

         网站内容混布,但需配合CSP(内容安全策略)

HSTS部署

       通过在加密的HTTP响应中包含

       Strict-Transport-Security头来实现网站HSTS,例如

Strict-Transport-Security: max-age=63072000; includeSubdomains;preload;

       最佳的部署方案是部署在离用户最近的位置,例如架构有前端反向代理和后端web服务器,在前端代理处配置HSTS是最好的,否则就需要在web服务器层配置HSTS。如果web服务器不明确支持HSTS,可以通过增加响应头的机制,但需要阅读各种服务器的附属细则。如果其他方法都失败了,可以在应用程序层增加HSTS。

       Apache

       #启用HTTP严格传输安全

Header always set Strict-Transport-Security “max-age=31536000; includeSubDomains”

       #HSTS策略只能在加密通道的HTTP响应中进行设置,因此需要把http重定向到https,如果明文响应中允许设置HSTS头,中间人攻击者就可以通过在普通站点中注入HSTS信息来执行DoS攻击

<VirtualHost *:80>
  ServerName www.example.com
  ServerAlias example.com
  …
 #将所有访问者重定向到加密的网站
 RedirectPermanent / https://www.example.com/
<VirtualHost>

      IIS

        第三方模块 http://hstsiis.codeplex.com/

      Nginx

server {
   listen xxxx:443 ssl;
   server_name www.example.com;
   add_header Strict-Transport-Security “max-age=31536000;includeSubdomains;preload”;
   ….
}
server {
   listen xxxx:80;
   server_name www.example.com;
   return 301 https://www.example.com$request_uri;
   …
}

        注意:addheader指令只会将HTTP头添加到非错误响应中(2xx和3xx)