代码之家  ›  专栏  ›  技术社区  ›  GrahamTheDev

如何避免内容安全策略中的不安全评估

  •  0
  • GrahamTheDev  · 技术社区  · 6 年前

    我已经读过如何修理的答案了 unsafe eval 由于使用匿名函数使用setTimeout,我的内容安全策略中需要。

    但是,我使用的脚本包含以下内容:-

    $ = function (a) {
    return /^f/.test(typeof a) ? /in/.test(b.readyState) ? setTimeout('$('+a+')', 9) : a() : new i(a)
    }
    

    我一辈子都搞不清楚如何把它转换成一个使用匿名函数的脚本,或者是否有办法重写它。

    代码是 ki.js 如果你需要更多的代码。

    我试过了

    return /^f/.test(typeof a) ? /in/.test(b.readyState) ? setTimeout(function(){'$('+a+')'}, 9) : a() : new i(a)
    

    1 回复  |  直到 6 年前
        1
  •  1
  •   Jeto    6 年前

    如果要使用自己的匿名函数,就不需要使用字符串引用。只需在里面使用普通代码。

    (虽然不确定内容安全策略,但只是帮助理解语法。如果这还不能完全解决问题,我将删除答案并将其作为评论发布。)

    $ = function (a) {
      return /^f/.test(typeof a) 
        ? /in/.test(b.readyState) 
          ? setTimeout(function() { $(a); }, 9) 
          : a() 
        : new i(a);
    };