And*_*ndy 17 asp.net webforms content-security-policy
我正在寻找一种为ASP.NET WebForms应用程序实现相对强大的Content-Security-Policy标头的好方法.我将尽可能多的JavaScript存储在文件而不是内联中,但默认情况下,WebForms会为表单提交和基本AJAX调用等简单注入大量内联脚本.
MVC有一些简单的方法来实现nonce,特别是在第三方库(如NWebsec)的帮助下,但我似乎无法找到任何使用WebForms实现它们的方法.如果有一种方法可以预测和检索每个.NET注入脚本标记的哈希,我甚至不会使用哈希值.
我讨厌允许'不安全内联'的价值.需要关闭这样一个强大的安全功能是不对的.有没有合理的方法在WebForms中实现它?
我在这里写了一个关于如何处理所有这些注入脚本的答案:
如果您在 Chrome 中打开开发工具,您可能会看到类似这样的消息
拒绝执行内联脚本,因为它违反了以下内容安全策略指令:
"script-src 'self'。需要关键字'unsafe-inline'、哈希 ('sha256-2NqnatcPqy5jjBXalTpZyJMO/0fUaYUb3ePlviUP4II=') 或随机数 ('nonce-...') 才能启用内联执行。如果您仔细查看该消息,它会告诉您哈希值是什么:
sha256-2NqnatcPqy5jjBXalTpZyJMO/0fUaYUb3ePlviUP4II=因此,如果您不想采用随机数路线,则可以采用哈希路线并添加
Run Code Online (Sandbox Code Playgroud)Content-Security-Policy: script-src 'self' 'sha256-2NqnatcPqy5jjBXalTpZyJMO/0fUaYUb3ePlviUP4II=' 'unsafe-eval';在某些情况下,您可能还需要添加
unsafe-eval才能使其发挥作用。
我有同样的问题。我很伤心地说,这是我们做的最好。我们基本上确定了我们使用和不使用的内容。我们甚至不得不unsafe-eval输入一些说明,因为我们使用了没有它就无法工作的第三方控件。至少我们避免调用外部网址。
default-src 'self';
child-src 'self' 'unsafe-inline' 'unsafe-eval';
object-src 'none';
script-src 'self' 'unsafe-inline' 'unsafe-eval' https://www.google-analytics.com;
img-src 'self' https://www.google-analytics.com;
style-src 'self' 'unsafe-inline'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2770 次 |
| 最近记录: |