拒绝应用内联样式,因为它违反了以下内容安全策略指令:“style-src 'self'” modernizr

vis*_*ale 5 asp.net asp.net-mvc content-security-policy

我在 Visual Studio 2015 Professional 中创建了新的 asp.net mvc 5 项目,并且我在我的内容安全策略布局中添加了元标记作为 -

<meta http-equiv="content-security-policy"
  content="default-src 'none'; script-src 'self';
  connect-src 'self'; img-src 'self'; style-src 'self';" />
Run Code Online (Sandbox Code Playgroud)

现在,当我运行我的应用程序时,我在 chrome 浏览器控制台中收到以下错误 -

拒绝应用内联样式,因为它违反了以下内容安全策略指令:“style-src 'self'”。启用内联执行需要“unsafe-inline”关键字、哈希(“sha256-CwE3Bg0VYQOIdNAkbB/Btdkhul49qZuwgNCMPgNY5zw=')或随机数(“nonce-...”)。Modernizr-2.6.2.js:157

Modernizr-2.6.2.js:157 有 6 个错误,其中一个与脚本有关,即拒绝加载脚本 localhost

我认为我的项目中没有任何内联样式,那么为什么 CSP 拒绝应用错误?

sid*_*ker 6

显然,modernizr 要么注入style具有某些 CSS 属性的元素,要么注入某些style属性;您可以通过更改 CSP 策略来处理此问题:

<meta http-equiv="content-security-policy"
  content="default-src 'none'; script-src 'self';
  connect-src 'self'; img-src 'self';
  style-src 'self' 'sha256-CwE3Bg0VYQOIdNAkbB/Btdkhul49qZuwgNCMPgNY5zw=';" />
Run Code Online (Sandbox Code Playgroud)

  • 如果 Modernizr 正在注入所有内联内容,那么您的选择似乎是(a)添加所有这些哈希值,(b)使用“不安全内联”(但这基本上破坏了 CSP 的整个目的......),或(c )不要使用modernizr (3认同)