我可以使用 jQuery global eval intsead of eval 来逃避内容安全策略吗?



我使用了 eval 但通过应用 CSP 来禁止它。但我正在寻找它的替代品。

我发现该功能jQuery.globaleval().

jQuery.readyException = function( error ) {
window.setTimeout( function() {
throw error; 
});
};

抛出:

未捕获的 EvalError:拒绝将字符串评估为 JavaScript,因为"unsafe-eval"不是以下内容安全策略指令中允许的脚本源:"script-src 'self' 'unsafe-inline' http://localhost:6060/WCUSTODY/http://localhost:6060/application/scripts

那么,我们是否可以使用全局评估作为eval的替代品,CSP(内容安全策略)也应该接受。

>jQuery.globaleval()的行为与使用普通的JavaScripteval()不同,因为它是在全局上下文中执行的。例如

function test() {
jQuery.globalEval( "var newVar = true;" );
}
test();

名为newVar的变量在全局范围内。可以通过应用程序的脚本访问它。

可以通过将不安全评估设置为允许的源,在 CSP 中使用不jQuery.globaleval()eval()

类似于这样:

<meta http-equiv="Content-Security-Policy" content="script-src 'unsafe-eval'">

如果您不想使用 eval,则可以使用new Function().根据最佳实践,您应该避免eval()new Function()

最新更新