javascript - 如何在 ASP.NET MVC 4 中为 CSP 使用动态随机数
问题描述
我有在 ASP.NET MVC 4 中开发的 MVC 应用程序。我在几个页面中使用了 javascripts。一些javascript被引用为
@Scripts.Render("~/Scripts/bootstrap")
@Scripts.Render("~/Scripts/js")
还有一些内联脚本,比如
<script type="javascript">
// javascript code
</script>
我想为此站点实施内容安全策略。该站点托管在 IIS 中。因此,在 IIS 中,我在 HTTP 响应标头中添加 content-security-policy 标头作为
object-src 'none';
script-src 'nonce-{random}' 'unsafe-inline' 'unsafe-eval' 'strict-dynamic' https: http:;
base-uri 'self';
report-uri https://csp.withgoogle.com/csp/<unique_id>/<application_version>
因此,每个响应都将包含此标头。
问题:
- 我如何将随机生成的 nonce 添加到脚本标签中,重要的是 IIS 如何知道随机生成的 nonce 值,以便它可以包含在响应标头中?(我假设每个响应都会有唯一的 nonce 值)
解决方案
插入 nonce 标签,尤其是在 CSP 中匹配它们通常很棘手。如果您的脚本代码是静态的并且不包含任何更改,那么根据它们的哈希将它们列入白名单会容易得多。如果您删除“不安全内联”,许多浏览器会告诉您需要添加哪些哈希。
请注意,您的 script-src 包括 https: 和 http: 将允许它在 http 和 https 上加载任何脚本。如果您的页面通过 https 提供,则不允许使用主动混合内容,因此不会加载 http 上的脚本。
推荐阅读
- java - 如何在 rebase 方法的集合中映射planningId 注释?
- asp.net - ASP.NET webform 访问控制允许 orgin 不起作用?
- c# - 你如何安全地枚举列表
没有终结者的阻碍? - list - 用索引迭代
- list - 组合列表和标签。将对象连接到图层和特定页面的问题
- opayo - Sagepay 3D Secure 重定向到 acs url 返回一个空白页面
- apache - 如何使用 apache 作为转发代理将 2 个 Web 应用程序放在同一个域和端口上
- python - 将鼠标悬停在 Tkinter 单选按钮上时被选中
- java - 在运行时观察 application.properties 的变化 Spring boot
- typescript - TypeScript:访问泛型对象以生成类型化函数