我从不受信任的人那里收集了大量的Javascript代码,并且必须将它集成到我的项目中。由于不受信任,我想检查一下是否做了令人讨厌的事情。
我主要关心的是代码使用的变量。
要检查它没关系,我想解析所有代码并验证变量的名称。例如,所有变量都包含在window.sandboxedVariables
中。
是否可以解析Javascript代码(使用任何语言,但最好是Javascript或bash)并获取所有变量的列表?是否可以对导入的库执行相同的操作?
是否可以使用Uglify?我读了一些API文档,没有找到具体的内容。
非常感谢!
答案 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编写。
答案 3 :(得分:0)
编写验证不受信任的JavaScript代码的算法是不可能的。您可以解析它,您可以在沙箱中运行它并分析它的操作。但是你永远不能确定你已经确定了它可能做的一切,或者在真实环境中运行它后可能使用的每个变量。
如果您不信任它,则要么只在安全的沙箱中运行它,要么不使用它。