我需要使用Java对Javascript文件进行静态分析。在这里,我需要检查Javascript文件是否有对document.write()的任何函数调用或对innerHTML等属性的引用。我可以使用javax.script。*包来实现这一点吗?或者我需要使用哪种Java API进行解析?你也可以提供同样的例子吗?
答案 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"] = ...;
您无法使用静态分析检测所有这些变体,以及您可以制作的数百种变体。