使用javascript从脚本标记中提取字符串

时间:2012-05-10 04:48:23

标签: javascript string

如何提取脚本标记中的所有字符串。我想提取每个字符串并查找是否存在任何shellcode。但javascript在声明字符串时使用了几种方法。例如,字符串可以是

 var y="Some text";
 var x1 = "3+4";
 eval("\144\157\143\165\155\145\156\164"); //string given in eval();

它可以采用连续格式

var x1 = "te ActiveX Co"; var x2 = "ntrol"; var x3 = x1 + x2; 
var x4 = "Execu" + x3;

如果使用简单的javacript代码在eval()或document.write()中定义,我如何识别每个字符串。

1 个答案:

答案 0 :(得分:1)

这是一个非常复杂的问题,没有简单的解决方案。

你可以使用parser generator和ECMAScript语言的BNF定义(当然你可以在网上找到它)从目标源代码中提取字符串。

[编辑] 由于链接的解析器生成器是用JavaScript编写的,并且支持Web浏览器作为平台,因此您可以生成自定义ECMAScript解析器,将其嵌入页面中,并获取所有嵌入式脚本源(例如$('script').map(function(){return $(this).text();}))。请注意,您的自定义解析器可以简单地回显已解析的字符串,例如通过console.log(...)