服务器配置HSTS(IIS和Tomcat)

如果缺少HSTS的配置,网站可能会被扫描出如下图所示的漏洞

 

服务器开启HSTS的方法

IIS操作方法:

确认是否安装 “URL 重写” 或者 “URL Rewrite” 模块 , 如果您已经安装可以跳过。

“URL重写” 模块下载地址

https://www.iis.net/downloads/microsoft/url-rewrite#additionalDownloads

扫描二维码关注公众号,回复: 14328198 查看本文章

已经安装模块的话,在iis的界面可以看到如下图所示的图标:

点击“添加规则”

在“出站规则” 中 选择“空白规则”

名称:http响应    变量名称:RESPONSE_Strict_Transport_Security    模式: .*

在“条件”模块中选择“添加”

条件输入:{HTTPS}    模式:on

值:max-age=31536000

操作完成后在配置文件web.config中会自动增加如下配置项:

Tomcat操作方法:

如果仅对单个系统进行操作,修改项目目录中的web.xml文件。

如果对tomcat下所有系统进行操作,修改tomcat/conf录中的web.xml文件。

需要修改的内容如下图所示,在原来的文件中添加红色方框内的配置。

    <filter>
		<filter-name>httpHeaderSecurity</filter-name>
		<filter-class>org.apache.catalina.filters.HttpHeaderSecurityFilter</filter-class>
		<async-supported>true</async-supported>
		
		<init-param>
			<param-name>hstsMaxAgeSeconds</param-name>
			<param-value>31536000</param-value>
		</init-param>

		<init-param>
			<param-name>antiClickJackingEnabled</param-name>
			<param-value>true</param-value>
		</init-param>
		<init-param>
			<param-name>antiClickJackingOption</param-name>
			<param-value>SAMEORIGIN</param-value>
		</init-param>

		<init-param>
			<param-name>blockContentTypeSniffingEnabled</param-name>
			<param-value>false</param-value>
		</init-param>
		<init-param>
			<param-name>xssProtectionEnabled</param-name>
			<param-value>false</param-value>
		</init-param>

    </filter>

    <filter-mapping>
		<filter-name>httpHeaderSecurity</filter-name>
		<url-pattern>/*</url-pattern>
		<dispatcher>REQUEST</dispatcher>
    </filter-mapping>

验证是否操作成功

通过浏览器访问网站,根据服务器返回的响应头信息,可以看出包含Strict-Transport-Security属性, 表明问题已修复。

Tomcat配置参数说明

开启HTST默认会将antiClickJackingEnabled属性设置为true,antiClickJackingOption设置为DENY,这会直接导致当前页面不允许以iframe窗体的形式显示在任何系统中。

下面分情况说明相关配置:

下面涉及的文件为web.xml文件

情况一:允许任意网站以iframe窗体形式引用

如果当前网页可以被任何页面以iframe窗体形式引用,可以直接将antiClickJackingEnabled属性设置为false即可。

<init-param>
     <param-name>antiClickJackingEnabled</param-name>
     <param-value>false</param-value>
</init-param>

情况二:允许部分网站以iframe窗体形式引用

如果只允许部分系统以iframe窗体形式引用当前网页,可以通过设置antiClickJackingOption的属性值,达到不同级别的控制。

antiClickJackingOption的属性值包括:

  1.  DENY:页面不能被嵌入到任何iframe或者frame中
  2. SAMEORIGIN:页面只能被本站页面嵌入到iframe或者frame中。
  3. ALLOW-FROM:页面只能被嵌入到指定域名的框架中。 

如果允许当前网站可以被本网站嵌入到iframe或者frame中,将antiClickJackingOption设置为SAMEORIGIN。

<init-param>
      <param-name>antiClickJackingEnabled</param-name>
      <param-value>true</param-value>
</init-param>
<init-param>
       <param-name>antiClickJackingOption</param-name>
       <param-value>SAMEORIGIN</param-value>
</init-param>

 如果要配置指定的网站才有权限可以嵌入当前页面,将antiClickJackingOption设置为ALLOW-FROM。同时配置antiClickJackingUri属性,设置被允许的网站地址。

下面示例表示允许baidu网站中可以嵌入当前页面。

<init-param>
       <param-name>antiClickJackingEnabled</param-name>
       <param-value>true</param-value>
</init-param>

<init-param>
       <param-name>antiClickJackingOption</param-name>
       <param-value>ALLOW-FROM</param-value>
</init-param>

<init-param>
       <param-name>antiClickJackingUri</param-name>
       <param-value>https://baidu.com/</param-value>
</init-param>

猜你喜欢

转载自blog.csdn.net/liangmengbk/article/details/124280913
今日推荐