2012-05-10 33 views
1

スクリプトタグに含まれるすべての文字列を抽出するにはどうすればよいですか。私は各文字列を抽出し、シェルコードが存在するかどうかを調べたいと思います。しかし、JavaScriptの文字列がそれが連結形式でJavaScriptを使用してスクリプトタグから文字列を抽出する

私はそれを定義した場合でも、それぞれ、すべての文字列を識別することができますどのように
var x1 = "te ActiveX Co"; var x2 = "ntrol"; var x3 = x1 + x2; 
var x4 = "Execu" + x3; 

することができ

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

ことができる。例えば、文字列を宣言するにはいくつかの方法を使用しています単純なjavacriptコードを使用してeval()またはdocument.write()を呼び出します。

+3

ここにヒントがあります.JavaScriptインタープリタはそうです... – maerics

+0

独自のJSパーサーを作成しますか?可能 –

+0

複製 http://stackoverflow.com/questions/8115682/extract-script-tags-from-a-html-string – shareef

答えて

1

これは単純な解決法がない非常に複雑な問題です。

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

[編集]リンクパーサジェネレータはJavaScriptで書かれており、ページに埋め込むと、すべての埋め込まれたスクリプトのソースを取得、カスタムのECMAScriptパーサーを生成できるプラットフォームとしてのWebブラウザをサポートしているので(例えば$('script').map(function(){return $(this).text();})を) 。カスタムパーサは、解析された文字列を単純にエコーすることができます。 console.log(...)を介して

+0

このパーサーをjavascriptに追加するには – user1335906

+0

Js/CC Parser User Manualを参照しています。しかし、パーサーをインストールすることを求めているのです。しかし、 ''のようなスクリプトに.jsファイルを組み込み、上記の関数を実行して結果を得る方法があります。 – user1335906

+0

@ user1335906:私はJS/CCのディストリビューションをダウンロードしていませんが、パーサージェネレータ自体をインストールし、生成されたパーサーのみをWebページにスクリプトとして含めることができれば驚くことはありません。あなたはそれを理解しなければなりません。 – maerics