2011-06-21 4 views
0

Je suis en train de créer ma première extension Firefox et j'ai atteint un mur. Je ne connais pas non plus javascript, bien que je sache programmer.Création d'une extension Firefox pour analyser les balises de script

L'extension tente d'identifier un code javascript malveillant en exécutant tout le code contenu dans les balises de script via un classificateur. J'ai déjà le classificateur construit en Python, mais je n'arrive pas à comprendre comment identifier le javascript et l'envoyer au classificateur. Quel est le meilleur moyen de capturer un à un tous les tags de script entre eux et de les envoyer au classificateur? Le journal indique que chaque élément que je capture dans le tableau avec "var scripts = document.getElementsByTagName ('script');" est de type objet xulelement, mais je ne sais pas comment obtenir le code actuel. Dans la boucle for, je voudrais envoyer chaque élément du tableau au classificateur. J'ai inclus ce que j'ai jusqu'à présent ci-dessous:

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

Le code vraiment malveillant ne sera pas trouvé si facilement. : P – bzlm

+1

Belle cible que vous avez ... Pourquoi ne pas commencer avec un monde Bonjour! Didacticiel? – CristiC

Répondre

1

L'extraction des balises de script ne sera pas suffisante pour identifier les scripts malveillants. Considérez ce code typique XSS par exemple:

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

Si vous chargez la page HTML dans le navigateur de toute façon, vous pouvez jeter un oeil à la JavaScript Deobfuscator extension. Cette extension utilise le service de débogage JavaScript pour intercepter tout le code JavaScript en cours de compilation ou d'exécution, même s'il est généré dynamiquement. Vous pouvez trouver des exemples de code sur https://developer.mozilla.org/en/Code_snippets/JavaScript_Debugger_Service, JavaScript Deobfuscator définit debuggerService.scriptHook pour intercepter les scripts en cours de compilation (onScriptCreated et onScriptDestroyed sera appelé).

+0

merci, c'est génial! – chrs

0

Les scripts sont externes ou en ligne de sorte que vous devez vérifier l'attribut src de chaque balise. Ensuite, vous pouvez faire une requête AJAX pour obtenir le code source du script. Toutefois, si le script est d'un autre domaine (ce qui est souvent le cas) vous ne pouvez pas retreive ce dû au 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); 

} 

Si votre utilisation de python déjà, il pourrait être plus facile d'utiliser les bibliothèques python pour analyser le code HTML et extraire le corps des étiquettes

+0

Les scripts sont externes ou en ligne, ou autre chose, ou chargés dynamiquement, ou ... – bzlm

Questions connexes