知识专栏
多方位、多角度、深度解读您所关心的问题

漏洞报告:

检测到目标网站Content-Security-Policy响应头缺失。它的严重性低,但是可能会更大程度地暴露于各种跨站点注入攻击之下。

漏洞描述:

HTTP 响应头Content-Security-Policy允许站点管理者控制用户代理能够为指定的页面加载哪些资源。除了少数例外情况,设置的政策主要涉及指定服务器的源和脚本结束点。 

Content-Security-Policy响应头的缺失使得目标URL更易遭受跨站脚本攻击。

解决办法:

将您的服务器配置为发送“Content-Security-Policy”头。

实际操作如下:

(1)如果是iis环境,在网站根目录新建web.config配置文件,并在文件中加入以下代码:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <httpProtocol>
            <customHeaders>
                <!--检测到目标Content-Security-Policy响应头缺失-->
                <!-- <add name="Content-Security-Policy" value="default-src 'self'" /> -->
            </customHeaders>
        </httpProtocol>
    </system.webServer>
</configuration>

(2)如果是Apache环境,在网站根目录新建.htaccess配置文件,并在文件中加入以下代码:

<IfModule mod_headers.c>
  Header set Content-Security-Policy "default-src 'self';"
</IfModule>

如果在.htaccess中有其他伪静态规则,在放在伪静态规则前面即可,如下所示:

<IfModule mod_headers.c>
  Header set Content-Security-Policy "default-src 'self';"
</IfModule>
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^article-([0-9]+)-([0-9]+)-([0-9]+).html index.php?m=content&c=index&a=show&catid=$1&id=$2&page=$3
RewriteRule ^category-([0-9]+)-([0-9]+).html index.php?m=content&c=index&a=lists&catid=$1&page=$2
</IfModule>

如果出现浏览页面报错、网页不正常、网站无法跳转、很多东西(比如css、js等文件)加载不出来等问题,可以将

Header set Content-Security-Policy "default-src 'self';"

改为

Header set Content-Security-Policy "default-src 'self' 'unsafe-inline' 'unsafe-eval';"

(1)'unsafe-inline'

代表允许行内代码执行。

(2)'unsafe-eval'

代表允许不安全的动态代码执行,比如 JavaScript的 eval()方法。

上述2个指令值默认情况下都是被CSP禁用的。理想情况下,通常不会希望在策略里保留这些表达式,但是没有它们,大多数现有的应用都会被阻断。

验证方法:

根据检测到目标Content-Security-Policy响应头缺失漏洞原理,通过从目标站点响应头信息中检查Content-Security-Policy配置情况进行漏洞验证。


赞一下
--
踩一脚
--

您已成功复制微信号

leishi010

打开微信添加好友?

确定