Nginx配置HSTS

来自Linux78|wiki

定义

HSTS(HTTP Strict Transport Security) 即HTTP严格传输安全 它是一套由互联网工程任务组发布的互联网安全策略机制

作用

抵御SSL剥离攻击: 攻击前提是用户很少直接在地址栏输入https:// 用户总是通过点击链接或3xx重定向从HTTP页面进入HTTPS页面

强制浏览器使用HTTPS与服务器建立连接 只要浏览器曾经与服务器建立过一次安全连接

原理

当浏览器通过HTTPS发出请求时 在服务器返回的响应头中包含Strict-Transport-Security字段max-age 浏览器有效期includeSubDomains 是否包含子域名

Nginx配置HSTS

server {
   listen 443 ssl;
   server_name domain.com;

   add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;

   location / {
   }
}

缺陷

用户首次访问某网站是不受HSTS保护的 因为浏览器还未收到HSTS 所以仍有可能通过明文HTTP来访问

解决办法: 浏览器预置HSTS域名列表 https://hstspreload.org/