2011-06-21 13 views
0

私は最初のFirefox拡張機能をビルド中で、壁に当たっています。私もプログラミング方法を知っているが、私はまた、JavaScriptに精通していない。スクリプトタグを解析するためのFirefox拡張機能のビルド

拡張子は、スクリプトタグ内に含まれるすべてのコードを分類子を介して実行することで、悪意のあるjavascriptコードを特定しようとしています。私はすでにPythonで分類子を構築していますが、javascriptをどのように識別して分類子に送るのか分かりません。スクリプトタグの中身を1つ1つずつキャプチャして分類器に送信する最も良い方法は何ですか。ログには、「var scripts = document.getElementsByTagName( 'script');」という配列でキャプチャしている各項目が表示されます。 xulelement型のオブジェクトですが、実際のコードを取得する方法はわかりません。 forループでは、配列内の各アイテムを分類子に送信したいと思います。これまでの内容を以下に示します:

function extractScripts(){ 
    var scripts = document.getElementsByTagName('script'); 
    scriptExtractor_Log(scripts.length + ' scripts were found'); 
    var sLen = scripts.length 
    for (var i=0, len=sLen; i<len; ++i){ 
     scriptExtractor_Log('script ' + i + ': ' + scripts[i]); 
    }    
    return 0; 
} 
+0

本当に悪意のあるコードは簡単に見つかりません。 :P – bzlm

+1

あなたが持っている素敵なターゲット...なぜあなたはハローワールドで始まらないのですか?チュートリアル? – CristiC

答えて

1

悪意のあるスクリプトを識別するためにスクリプトタグを抽出するだけでは不十分です。例えば、この典型的なXSSコードを考えてみましょう:

<img src="this_does_not_exist" onerror="alert('Doing something evil')"> 

とにかくブラウザでHTMLページをロードした場合、あなたはJavaScript Deobfuscator extensionを見てすることができます。この拡張機能は、JavaScriptデバッガサービスを使用して、動的に生成された場合でも、コンパイルまたは実行されているすべてのJavaScriptコードを代行受信します。 https://developer.mozilla.org/en/Code_snippets/JavaScript_Debugger_Serviceにいくつかのコード例があります。JavaScript Deobfuscatorは、debuggerService.scriptHookを設定して、コンパイル中のスクリプトを傍受します(onScriptCreatedおよびonScriptDestroyedが呼び出されます)。

+0

ありがとう、これは素晴らしいです! – chrs

0

スクリプトは外部またはインラインであるため、各タグのsrc属性を確認する必要があります。次に、スクリプトのソースコードを取得するためのAJAX要求を行うことができます。スクリプトが別のドメイン(それはしばしばである)からであれば、あなたの使ってPythonすでにそれだけでHTMLを解析するためのpythonライブラリを使用する方が簡単かもしれない場合しかし、あなたが原因cross-domain policy

for (var i=0, len=sLen; i<len; ++i){ 
    if (scripts[i].src) { //check if src is defined 
    var XHR = new XMLHttpRequest(); //create a new XHR object 
    XHR.open("GET",scripts[i].src,false); // the false here makes your request synchronus 
    XHR.send(); //send the request 
    scripttxt = XHR.respose; 
    } else { 
    scripttxt = scripts[i].innerHTML; 
    } 
    scriptExtractor_Log('script ' + i + ': ' + scripttxt); 

} 

にそれを盗んことができず、タグの本体を抜き取ります

+0

スクリプトは、外部またはインライン、またはその他のもの、または動的にロードされるか、または... – bzlm

関連する問題