当前位置: 首页 > 知识库问答 >
问题:

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

孟俊晖
2023-03-14

我已经使用了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/wtlority/http://localhost:6060/application/scripts

那么,是否可以使用全局评估作为评估的替代方案,也应该被CSP(Content Security Policy)所接受。

共有1个答案

澹台博文
2023-03-14

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

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

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

通过将unsafe-eval设置为允许的源,您可以在CSP中使用eval()而不使用jQuery.globaleval()

类似于这样:

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

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

 类似资料:
  • 内容安全策略 CSP(Content Security Policy)即内容安全策略,主要目标是减少、并有效报告 XSS 攻击,其实质就是让开发者定制一份白名单,告诉浏览器允许加载、执行的外部资源。即使攻击者能够发现可从中注入脚本的漏洞,由于脚本不在白名单之列,浏览器也不会执行该脚本,从而降低客户端遭受 XSS 攻击风险。 默认配置下,CSP 甚至不允许执行内联代码 (<script> 块内容,内

  • CSP(内容安全策略) CSP(Content Security Policy) 即内容安全策略,主要目标是减少、并有效报告 XSS 攻击,其实质就是让开发者定制一份白名单,告诉浏览器允许加载、执行的外部资源。即使攻击者能够发现可从中注入脚本的漏洞,由于脚本不在白名单之列,浏览器也不会执行该脚本,从而达到了降低客户端遭受 XSS 攻击风险和影响的目的。 默认配置下,CSP 甚至不允许执行内联代码

  • 在我的页面上,我给出了层次结构: 内部框架带有给定的标题 看起来一切都是正确的,但我在chrome中遇到了这样的错误(ff中也有错误): 拒绝展示https://app.domain.training/path'在帧中,因为祖先违反以下内容安全策略指令:“帧祖先app.domain.training proxy.domain.training domain.training*.domain.tra

  • 当我将图像上传到我的web应用程序中时,它显示以下错误 拒绝加载图像'

  • 所以我一直在尝试使用一个谷歌可编程搜索引擎脚本,但我在元标记方面遇到了问题。我在my中包含的meta标记如下所示: 但是,我仍然收到一个错误,告诉我它拒绝加载脚本,因为它违反了“内容安全策略指令:“script src'self'” 我想知道它是否从其他地方继承了一些设置,因为它不接受我正在设置的新脚本src,但是如果我将其设置为“无”,它会接受新脚本src。 顺便说一下,我对html非常陌生,所

  • 问题内容: 我在开发人员控制台中收到很多错误: 拒绝评估字符串 拒绝执行内联脚本,因为它违反了以下内容安全策略指令 拒绝加载脚本 拒绝加载样式表 这是怎么回事?内容安全策略如何工作?如何使用HTTP标头? 具体来说,如何… …允许多个来源? …使用不同的指令? …使用多个指令? …处理端口? …处理不同的协议? …允许的协议? …使用内联样式,脚本和标签以及? …允许吗? 最后: 到底是什么意思?