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

时间:2015-07-22 23:10:53

标签: javascript uglifyjs

我从不受信任的人那里收集了大量的Javascript代码,并且必须将它集成到我的项目中。由于不受信任,我想检查一下是否做了令人讨厌的事情。

我主要关心的是代码使用的变量。 要检查它没关系,我想解析所有代码并验证变量的名称。例如,所有变量都包含在window.sandboxedVariables中。

是否可以解析Javascript代码(使用任何语言,但最好是Javascript或bash)并获取所有变量的列表?是否可以对导入的库执行相同的操作?

是否可以使用Uglify?我读了一些API文档,没有找到具体的内容。

非常感谢!

4 个答案:

答案 0 :(得分:0)

您可以使用Mozilla Rhino。它是一个用Java编写的JavaScript引擎。

在这里,您可以找到与您尝试的相似的示例:

http://ramkulkarni.com/blog/parsing-javascript-code-using-mozilla-rhino/

答案 1 :(得分:0)

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

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

但是,如果不受信任的脚本覆盖window的现有属性(变量)之一,则无法执行此操作。

答案 2 :(得分:0)

eslint是一个JavaScript源代码linting工具,可让您编写自定义插件。您应该能够编写满足您需求的插件。另外,插件可以用JavaScript编写。

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

答案 3 :(得分:0)

编写验证不受信任的JavaScript代码的算法是不可能的。您可以解析它,您可以在沙箱中运行它并分析它的操作。但是你永远不能确定你已经确定了它可能做的一切,或者在真实环境中运行它后可能使用的每个变量。

如果您不信任它,则要么只在安全的沙箱中运行它,要么不使用它。