Javascript 属性内内联JS的CSP哈希或nonce

Javascript 属性内内联JS的CSP哈希或nonce,javascript,html,content-security-policy,Javascript,Html,Content Security Policy,内容安全策略的新手,所以不确定这是否可行,但想知道如何在HTML元素的属性中为一些内联脚本添加哈希或nonce 例如: <form method="post" onsubmit="function();"> 在Google Chrome中显示以下CSP错误: 拒绝执行内联事件处理程序,因为它违反 遵循内容安全策略指令:“脚本src'self”。 “unsafe inline”关键字、哈希('sha256-…')或nonce 启用内联执行需要('nonce-…') 我尝试过对脚本

内容安全策略的新手,所以不确定这是否可行,但想知道如何在HTML元素的属性中为一些内联脚本添加哈希或nonce

例如:

<form method="post" onsubmit="function();">

在Google Chrome中显示以下CSP错误:

拒绝执行内联事件处理程序,因为它违反 遵循内容安全策略指令:“脚本src'self”。 “unsafe inline”关键字、哈希('sha256-…')或nonce 启用内联执行需要('nonce-…')

我尝试过对脚本进行散列,例如
function();
以及
onsubmit=“function”
,但都不起作用。我尝试过向表单元素添加nonce,但没有任何帮助


如果需要,我可以将事件绑定移到元素属性之外,只是想知道是否有方法使用上述内容坚持CSP。

转到您的端点,您的内容将被阻止。请查看浏览器上的控制台。您的浏览器将通知被阻止的内容,并且还将提供您拥有的哈希值用于通过CSP取消阻止该内容


来源:

该错误消息的可能重复是误导性的。请参阅。尽管该错误消息可能会让您思考,但在CSP2和当前浏览器中,哈希或nonce只能使您允许
script
元素中的脚本,而不是事件处理程序属性中的脚本。最好的做法是按照下面的答案来做声明:取消内联这些事件处理程序。不过,在CSP3中,您可以为script src指令指定“不安全的哈希属性”,这将使您能够使用哈希或nonce来允许在事件处理程序属性中使用脚本。请参阅和&。但任何浏览器都不支持它(即使在Chrome中也不支持-它仍在开发中;请参阅)@sideshowbarker我想知道是否是这样,但至少我想问个问题看看。谢谢你的帮助!