事情起因
漏洞检查出没有HTTP严格传输安全策略检测。
问题描述:该应用未安全配置了HTTP 严格传输安全策略。
HSTS(全称:HTTP Strict Transport Security),即“HTTP 严格传输安全”,是一种安全功能,其实质是将服务器和浏览器配合起来,强制用户使用安全连接来访问服务器。HSTS是可选的响应标头,可以在服务器上配置该标头,以指示浏览器仅通过HTTPS进行通信,避免了用户通过不加密的协议与服务器进行通信。
整改说明:
开启HTTP 严格传输安全策略,且最大寿命必须至少设置为31536000秒(1年),必须指定includeSubDomains指令。
HSTS是啥子,让我干啥
以下是 HSTS 标头组件的细分:
max-age:指定浏览器应记住强制使用 HTTPS 的时间长度(以秒为单位)。
includeSubDomains:(可选)将 HSTS 策略应用于当前域的所有子域。
preload:(可选)表示域名所有者同意在浏览器中预加载其域名。
【来源:https://www.wosign.com/wenda/3903.html】
怎么整改
经过一番搜索以后得知,整改步骤就是需要在响应的时候,请求头添加一个header。
我们目前统一使用nginx分发接口,所以需要找出nginx的配置文件。
在配置中加入这一行。
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains";
实际nginx配置中会有很多的配置,可能会眼花缭乱,不知道加在哪里。我搜了好多文章,发现都是加在这个位置。所以为了不出错,搜索443,找到server_name下方插入这一行配置。
校验是否成功
修改配置后启动。打开抓包工具Charles,发送一个请求,点开详情如下。
请求体
第一个绿色框是你发送的请求详情,我框少了一些,下面的几个工具栏都是包含在内的。Headers到Raw,都是请求详情内的具体信息。
响应体
第二个绿色框是服务器返回的响应内容。
我们这次需要查看的是,服务器是否在请求头上添加了我们的配置。
Strict-Transport-Security “max-age=31536000; includeSubDomains”;
所以点击下方的Headers,展开如上图。可以看见我们的配置已经生效。