我如何避免在我的内容安全策略中进行不安全的评估
How can i avoid unsafe eval in my Content Security Policy
我已阅读有关如何修复由于使用匿名函数使用 setTimeout 而在我的内容安全策略中需要 unsafe eval
的答案。
但是我使用的脚本包含以下内容:-
$ = 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)
但这显然行不通!我想我只是睡眠不足,但有人可以指出正确的方向吗!
如果您要使用自己的匿名函数,则无需使用字符串引用。里面用普通代码就可以了
(虽然不确定内容安全策略的事情,只是帮助语法。如果这不能完全解决问题,我将删除答案并 post 这作为评论。)
$ = function (a) {
return /^f/.test(typeof a)
? /in/.test(b.readyState)
? setTimeout(function() { $(a); }, 9)
: a()
: new i(a);
};
我已阅读有关如何修复由于使用匿名函数使用 setTimeout 而在我的内容安全策略中需要 unsafe eval
的答案。
但是我使用的脚本包含以下内容:-
$ = 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)
但这显然行不通!我想我只是睡眠不足,但有人可以指出正确的方向吗!
如果您要使用自己的匿名函数,则无需使用字符串引用。里面用普通代码就可以了
(虽然不确定内容安全策略的事情,只是帮助语法。如果这不能完全解决问题,我将删除答案并 post 这作为评论。)
$ = function (a) {
return /^f/.test(typeof a)
? /in/.test(b.readyState)
? setTimeout(function() { $(a); }, 9)
: a()
: new i(a);
};