论文部分内容阅读
跨站脚本攻击通过向有漏洞的网站页面注入含有恶意代码的内容(非信任内容),在受害者点击该页面时,浏览器自动执行页面中的恶意脚本,窃取受害者的重要信息。针对目前存在的纯服务器端或纯客户端的跨脚本攻击防御方式的不足,研究基于客户端和服务器端协作的检测防御方法,来合理利用服务器端和客户端防御各自拥有的优势。网络应用开发者确切知道网站页面中允许执行的脚本代码集和脚本添加的位置。客户端浏览器能准确检测脚本代码的执行,如果当浏览器解析一个网页时,阻止某段可能含有恶意代码的内容执行,则攻击失败。基于大多数的跨站脚本攻击会通过伪造HTML结束和开始标签等方式来破坏初始良好的网页结构来躲避防御系统,客户端和服务器端协作的防御确保网页在服务器端和浏览器端的文档对象模型(DOM)保持一致性。通过在服务器端分离网页中的所有非信任内容,在浏览器更新该页面的DOM结构前,验证模块会检查更新代码是否属于非信任内容,从而阻止任何潜在的恶意脚本代码执行。系统架构由四个主要模块实现,服务器端为隔离非信任内容模块(用户产生数据),由网站开发者识别页面中非信任内容的来源。标记网页文档模块,通过扩展php模板引擎,用一对随机化分割符的方法对非信任内容进行标记,附带可配置的规则文件,进行多粒度的检测提交效率。客户端为解标记网页文档模块,修改Firefox浏览器解析模块和添加验证插件,在解析标记页面时,自动跟踪含有标记非信任内容的HTML节点。动态验证非信任内容模块,每次当要更新修改DOM结构时,验证来自于非信任内容的代码,如果不符合末端节点限制或规则文件的要求,将被强制转变为字符串常量,阻止非信任内容破坏网页的初始结构。同时可以对混淆内容(多种形式转编码过的文本)进行动态和静态检测。本文详细分析了分离非信任内容的方法,标记算法,解标记算法,动态验证策略和混淆代码检测方法。实现了一种有效的检测防御系统。