【问题标题】:How to allow the execution of inline event handler in CSP with the 'unsafe-hashes'如何使用“不安全哈希”在 CSP 中执行内联事件处理程序
【发布时间】:2023-01-20 04:44:33
【问题描述】:

我们正在尝试启用内容安全策略来防止 XSS,因此我们将 script-src 设置为“self”以避免内联脚本。但是,我们的应用程序正在使用具有内联事件处理程序的第三方 javascript 库。

我们读到将 unsafe-hashes 属性与 sha256 哈希一起添加,以允许该特定库执行内联事件:

我们在 web.config 中添加了以下策略:

但是在 Google Chrome 浏览器控制台中给我们以下错误:

maskedinput.js:7 拒绝执行内联事件处理程序,因为它违反了以下内容安全策略指令:“script-src-attr 'unsafe-hashes' 'sha256-TS+Ok6crNR4qdKYT6T5jwMHjsPdCzbg7dmT0eWCSN20='”。启用内联执行需要“不安全内联”关键字、散列(“sha256-...”)或随机数(“nonce-...”)。

任何想法如何避免内联脚本,但同时允许这个特定的库运行内联事件。

【问题讨论】:

    标签: asp.net-mvc xss content-security-policy


    【解决方案1】:

    您可以像这样使用unsafe-hashes。 假设您有:

    <button type="button" onclick="alert('Hello World')">Show Alert</button>
    

    然后你可以使用这个命令来生成你的散列:

    echo -n "alert('Hello World')" | openssl dgst -sha256 -binary | openssl base64
    

    然后你应该像这样使用它:

    Content-Security-Policy: script-src 'unsafe-hashes' 'sha256-YOUR_HASH_HERE';
    

    在这种情况下,哈希 YOUR_HASH_HERE 将是:ztv5rbjekwogmr7erW0rKA6H3gY4jEFwwdz2cl8bk1I=

    【讨论】:

      猜你喜欢
      • 2020-02-27
      • 2016-07-19
      • 2021-07-26
      • 2020-09-21
      • 2011-03-28
      • 1970-01-01
      • 1970-01-01
      • 2019-10-18
      • 2015-11-10
      相关资源
      最近更新 更多