1、什么是HSTS
HTTPS(SSL和TLS)确保用户和网站通讯过程中安全,使攻击者难于拦截、修改和假冒。当用户手动输入域名或http://链接,该网站的第一个请求是未加密的,使用普通的http。最安全的网站立即发送回一个重定向使用户引向到https连接,然而,中间人攻击者可能会攻击拦截初始的http请求,从而控制用户后续的回话。自然而然HSTS应运而生为了解决这一潜在的安全问题。即时用户输入域名或http连接,浏览器将严格的升级到https连接。
2、HSTS如何工作的
HSTS策略是从安全的HTTPS站点发送的HTTP响应头部发布的。
Strict-Transport-Security: max-age=31536000
当浏览器从HTTPS站点看到这个头部,就知道该域名只能通过HTTPS(SSL 或者 TLS)访问了。并将此信息缓存到31536000,也就是1年。
可选的参数includeSubDomains告诉浏览器该策略适用于当前域下的所有子域。
Strict-Transport-Security: max-age=31536000; includeSubDomains
3、配置HSTS
3.1、Nginx配置HSTS
在server端添加该头部,并重启服务。
add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";
3.2、Apache2配置HSTS
#先开启模块:
LoadModule headers_module modules/mod_headers.so
<VirtualHost 0.0.0.0:443>
Header always set Strict-Transport-Security "max-age=63072000; includeSubdomains; preload"
</VirtualHost>
然后,重启Apache服务。
4、设置X-Frame-Options 头部
X-Frame-Options 头部添加到HTTPS站点,确保不会嵌入到frame 或 iframe,避免点击劫持,以确保网站的内容不会嵌入到其他网站。
4.1、Apache
Header always set X-Frame-Options DENY
4.2、Nginx
add_header X-Frame-Options "DENY";
评论