使用Java静态分析Javascript

时间:2014-04-17 11:54:40

标签: java javascript

我需要使用Java对Javascript文件进行静态分析。在这里,我需要检查Javascript文件是否有对document.write()的任何函数调用或对innerHTML等属性的引用。我可以使用javax.script。*包来实现这一点吗?或者我需要使用哪种Java API进行解析?你也可以提供同样的例子吗?

1 个答案:

答案 0 :(得分:2)

您无法以您想要的方式静态分析Javascript,因为Javascript不是静态类型语言。

您可以查看document.write(),但如果我的代码是这样的话:

var whatever = document; whatever.write()

或者您是否要拒绝任何名为write()的函数,即使它没有写入文档?

此外,Javascript具有eval功能,因此您可以随时执行:

var m = "ment"; 
eval("docu" + m + ".wri" + "te('hahahaha')");`.

你打算怎么检查?

同样,可以通过多种方式进行财产访问。

想象一下这段代码:

var x = document.children[0];
x.innerHTML = ...;
x["inner" + "HTML"] = ...;
var y = "inner";
x[y + "HTML"] = ...;

您无法使用静态分析检测所有这些变体,以及您可以制作的数百种变体。

相关问题