jquery - 在使用 eval 执行动态加载的 JavaScript 文件之前,jQuery 如何清理它们?

标签 jquery security eval

我计划使用 AJAX 加载 JS 文件,然后评估它们以执行代码。但我担心使用 eval。为了了解 jQuery 如何实现 getScript 方法,我浏览了它的源代码并发现了这一点:

rcleanScript = /^\s*<!(?:\[CDATA\[|\-\-)/;

jQuery.globalEval( ( elem.text || elem.textContent || elem.innerHTML || "" )
      .replace( rcleanScript, "/*$0*/" ) );

globalEval 是一种在全局(窗口)上下文中评估脚本并注意跨浏览器兼容性的方法。但我不明白替换部分。从名称来看,rcleanScript 似乎用于清理脚本,以便安全地执行它。但我不明白它是如何工作的。

有人能解释一下吗?

编辑:我知道它正在用/$0/替换某些 CDATA 部分。但这如何保证它的安全呢?从本质上讲,在不替换 CDATA 部分的情况下执行脚本会是不安全的吗?

最佳答案

基本上,rcleanScript 是一个正则表达式,用于查找可能有害的代码部分,"/*$0*/" 表示替换 rcleanScript 使用 /**/ 查找注释部分。

关于jquery - 在使用 eval 执行动态加载的 JavaScript 文件之前,jQuery 如何清理它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6258993/

相关文章:

Python Eval 使日期时间模块可用

python - py-表达式-eval - 传递 numpy ndarray

javascript - 当您使用 JavaScript 函数作为类时,它们是否仍然以自上而下的方式进行解析?

jquery - 是否可以删除 Jqgrid 的 header 部分

jquery - 简单的 jquery 图像 slider

security - PCI 合规性 - 未经身份验证的数据库

javascript - 未捕获的语法错误 : Unexpected Identifer, 也是匿名函数错误

jquery - 光滑的 slider 转到第一张幻灯片

Java反黑客。如何保护 jar 中的 .class 文件不被更改

python - scapy SMB/CIFS 解码