javascript 添加nonce而不是unsafe-inline'后出错

cdmah0mi  于 2023-05-12  发布在  Java
关注(0)|答案(2)|浏览(258)

bounty还有3天到期。回答此问题可获得+50声望奖励。Ravi正在寻找一个答案从一个有信誉的来源

我在我的xyz.js文件中有下面的代码。

init : function() {
   if (!this.iframe) {
       this.iframe = document.createElement("iframe");
       this.iframe.src = "javascript:false;";
       document.body.appendChild(this.iframe);

我已经更新了代码从不安全内联到nonce在上面的代码我调用 document.body.appendChild(this.iframe);
并低于误差
1683098036010:402拒绝运行JavaScript URL,因为它违反了以下内容安全策略指令:“script-src 'self' 'nonce-EDNnf03nceIOfn39fn3e9h3sdfa' 'unsafe-eval'".启用内联执行需要“unsafe-inline”关键字、散列('sha 256-...')或nonce('nonce-...')。请注意,哈希不适用于事件处理程序,样式属性和JavaScript:导航,除非存在“unsafe-hashes”关键字
我已经尝试添加nonce如下,但它不工作

this.iframe.nonce = "EDNnf03nceIOfn39fn3e9h3sdfa";
this.iframe.script='nonce="EDNnf03nceIOfn39fn3e9h3sdfa"';
this.iframe.script.nonce="EDNnf03nceIOfn39fn3e9h3sdfa";
this.iframe.setAttribute('nonce', "EDNnf03nceIOfn39fn3e9h3sdfa");

在代码中,我设置了this.iframe.src =“javascript:false;”;这不应该抛出该错误。
有人能提供这方面的最新情况吗

dm7nw8vv

dm7nw8vv1#

对于nonce属性,您应该在script标签上设置它,而不是在iframe上设置它。然后将script标记附加到iframe的内容文档的主体。

init: function() {
   if (!this.iframe) {
       this.iframe = document.createElement("iframe");
       this.iframe.src = "javascript:false;";
       document.addEventListener("DOMContentLoaded", function() {
           document.body.appendChild(this.iframe);
       }.bind(this));
   }

   // Set nonce attribute on the script tag
   var scriptTag = document.createElement("script");
   scriptTag.setAttribute("nonce", "EDNnf03nceIOfn39fn3e9h3sdfa");
   scriptTag.textContent = ''; // write your js code here

   // Append the script tag inside the iframe content
   this.iframe.contentDocument.body.appendChild(scriptTag);
}
elcex8rz

elcex8rz2#

问题在this.iframe.src = "javascript:false;";中。我已将这一行更新为this.iframe.src = "about:blank;";
更多信息请参考iframe without an src attribute

相关问题