构建一个Firefox扩展来解析脚本标记
Building a Firefox extension to parse through script tags
我正在构建我的第一个Firefox扩展,我遇到了麻烦。我也不熟悉javascript,尽管我知道如何编程。
该扩展试图通过分类器运行脚本标记中包含的所有代码来识别恶意javascript代码。我已经在Python中构建了分类器,但我不知道如何识别javascript并将其发送到分类器。一个接一个地捕获脚本标记之间的所有内容并将其发送到分类器的最佳方法是什么。日志显示,我在数组中使用"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;
}
提取脚本标记不足以识别恶意脚本。以这个典型的XSS代码为例:
<img src="this_does_not_exist" onerror="alert('Doing something evil')">
如果您在浏览器中加载HTML页面,那么您可以查看JavaScriptDeobuscator扩展。此扩展使用JavaScript调试器服务来拦截正在编译或执行的所有JavaScript代码,即使它是动态生成的。您可以在上找到一些代码示例https://developer.mozilla.org/en/Code_snippets/JavaScript_Debugger_Service,JavaScriptDeobuscator将debuggerService.scriptHook
设置为拦截正在编译的脚本(将调用onScriptCreated
和onScriptDestroyed
)。
脚本是外部的或内联的,因此需要检查每个标记的src属性。然后您可以发出AJAX请求来获取脚本的源代码。然而,如果脚本来自另一个域(通常是),由于跨域策略,您无法检索它
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);
}
如果您已经在使用python,那么使用python库来解析HTML并提取标记体
- chrome扩展:尽管运行了at:documentidle,js脚本还是过早启动
- 是否可以通过Chrome扩展内容脚本打开Chrome外部协议请求
- Google Chrome扩展程序可以检测所有脚本何时加载完成吗
- 加载Chrome扩展中的脚本错误
- chrome扩展-内容脚本随需应变
- Safari扩展中的注入脚本;不要在Youtube上开火
- Chrome扩展:加载窗口后执行脚本
- 如何动态添加或删除Chrome扩展、内容脚本、javascript文件
- 内容安全策略指令:;脚本src'self'blob:文件系统:chrome扩展资源:“;获取是否时
- 带有嵌入脚本的SVG可扩展到浏览器的可用空间
- FireFox扩展对TinyMCE编辑器执行脚本注入
- Firefox扩展开发:如何在内容脚本中创建一个全局函数,以便其他加载的脚本文件可以访问它
- 如何从 Chrome 扩展程序中的内容脚本中获取变量
- Chrome扩展程序,如何将消息从面板发送到内容脚本
- 歌剧扩展脚本和它们之间的通信
- 在chrome扩展中获取从后台页面到内容脚本的配置
- 阅读第'页;s从chrome扩展中链接的脚本
- 使用咖啡脚本扩展非本地类
- Chrome 扩展程序:如何让我的内容脚本扩展程序显示在选定的网站上
- 用Chrome内容脚本扩展替换网站中的文本