1

スクリプト タグに含まれるすべての文字列を抽出するにはどうすればよいですか。各文字列を抽出し、シェルコードが存在するかどうかを確認したいと考えています。しかし、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() で定義されている場合でも、すべての文字列を特定するにはどうすればよいですか。

4

1 に答える 1

1

これは非常に複雑な問題であり、簡単な解決策はありません。

パーサー ジェネレーターと ECMAScript 言語の BNF 定義を使用して(Web のどこかで見つけることができます)、ターゲット ソース コードから文字列を抽出できます。

[編集]リンクされたパーサー ジェネレーターは JavaScript で記述され、プラットフォームとして Web ブラウザーをサポートするため、カスタム ECMAScript パーサーを生成し、それをページに埋め込み、埋め込まれたすべてのスクリプト ソースを取得できます (例: $('script').map(function(){return $(this).text();}))。カスタム パーサーは、たとえばconsole.log(...).

于 2012-05-10T04:54:32.930 に答える