如何解析Javascript文件并获取所有使用的变量?

4
我正在从不受信任的人那里收集大量Javascript代码,并需要将其集成到我的项目中。由于这是不受信任的,我想检查它是否会做出什么不良行为。
我的主要关注点是代码使用的变量。 为了检查它是否安全,我想解析所有代码并验证变量的名称。例如,所有变量是否都包含在window.sandboxedVariables中。
是否可能解析Javascript代码(使用任何语言,但最好是Javascript或bash)并获取所有变量的列表?导入的库能否做同样的事情?
是否可以使用Uglify进行操作?我阅读了一些API文档,但没有找到具体信息。
非常感谢!

1
变量存在于每个上下文中。 - Dalorzo
window['ev' + 'al']('sandboxed' + 'Variables = null') 是什么意思? - levi
不受信任的客户端代码不会访问不受信任的令牌或密码。只要防止 XSS,这怎么可能成为问题呢? - Sebas
不要使用不可信的代码...简单解决方案。 - epascarello
4个回答

0

0

假设您在谈论全局变量,则可以执行以下操作:

  • 克隆window对象
  • 加载/运行不受信任的脚本
  • window对象与克隆的对象进行比较
  • 将所有新发现的项移动到window.sandboxedVariables

但是,如果不受信任的脚本覆盖了window的现有属性(变量)之一,则此方法将无效。


0

eslint 是一款 JavaScript 源代码检查工具,它允许你编写自定义插件。你应该能够编写一个满足你需求的插件。此外,这些插件可以用 JavaScript 编写。

http://eslint.org/docs/developer-guide


0

无法编写算法验证不受信任的JavaScript代码。您可以解析它,可以在沙盒中运行它并分析其操作。但是,一旦在您的真实环境中运行它,您永远无法确定是否已经识别了它可能执行的所有操作或使用的每个变量。

如果您不信任它,则只需在安全沙盒中运行它或不要使用它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接