为什么web.config中的Content-Security-Policy设置没有效果?

问题描述 投票:0回答:1

在一个小型 ASP.NET MVC 测试应用程序中,我将适当的

httpProtocol
代码添加到
web.config
文件中,如本文中所述:

  <system.webServer>
    <handlers>
      <remove name="BlockViewHandler"/>
      <add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" />
    </handlers>
      <httpProtocol>
          <customHeaders>
              <add name="Content-Security-Policy" value="default-src 'self'" />
          </customHeaders>
      </httpProtocol>
  </system.webServer>

但是,在应用程序的测试页面上,Vue.js 代码仍然有效,因为它是从 CDN 加载的,所以内容安全策略应该阻止它。

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Home Page2 - Meine ASP.NET-Anwendung</title>
    <link href="/Content/bootstrap.css" rel="stylesheet"/>
<link href="/Content/site.css" rel="stylesheet"/>

    <script src="/Scripts/modernizr-2.6.2.js"></script>


    <script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.1.4/vue.js"></script>
</head>
<body>
    <div class="container mainMenu">
        <ul>
            <li><a href="/">Start Page</a></li>
            <li><a href="/Home/About">About</a></li>
            <li><a href="/Home/Contact">Contact</a></li>
            <li><a href="/Home/Info">Info</a></li>
        </ul>
    </div>
    <div class="container body-content">
        <hr/>



<div id="app">
    this is a test: <b>{{message}}</b>
</div>


<script>

    var app = new Vue({
        el: '#app',
        data: {
            message: 'Vue.js ready'
        }
    });
</script>
        <hr/>
        <footer>
            <p>The footer</p>
        </footer>
    </div>

    <script src="/Scripts/jquery-1.10.2.js"></script>

    <script src="/Scripts/bootstrap.js"></script>
<script src="/Scripts/respond.js"></script>


</body>
</html>

我需要做什么才能使内容安全策略在我的网站中真正生效?

附录

我可以在我的开发工具中看到,内容安全策略没有在响应标头中发送:

asp.net-mvc content-security-policy
1个回答
0
投票

看到您问题中下面的配置块,让我假设您已将

<httpProtocol><customHeaders> ...
部分添加到
web.config
文件夹中的
Views
文件,而不是网站根目录中的
web.config
文件。

<system.webServer>
    <handlers>
        <remove name="BlockViewHandler"/>
        <add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" />
    </handlers>
</system.webServer>
© www.soinside.com 2019 - 2024. All rights reserved.