1、跨站脚本的概念
这里就不多说了,可以百度。或者去看:
邱永华. XSS 跨站脚本攻击剖析与防御[J]. 中国科技信息, 2013, 20: 079.
吴翰清. 白帽子讲 Web 安全[J].信息安全与通信保密, 2015 (5): 93.
2.防御框架
自己查阅了文献参考了网上一些代码,自己实现了一套防御框架。
防御框架结构图如下如所示:
该框架的的具体实行过程如下:
(1) 通过代理服务器抓取客户端的HTTP请求。
(2) 对抓取的HTTP请求进行正则匹配,然后获取用户通过GET/POST请求提交的数据。对获取的数据进行解码处理、包括URL解码、HTM实体解码、Based64解码、Unicode解码等。
(3) 对解码的数据放入DFA敏感字符串匹配算法,寻找敏感字符串的个数。如果敏感字符串超过两个则进入步骤4,否则直接让代理服务器转发数据,因为两个敏感字符的数据不可能构成攻击向量。
(4) 对于超过有两个敏感字符的数据进行特征提取,得到该数据相应的特征函数。
(5) 对步骤4提取的特征,送入最大熵分类器。分类器会根据训练的经验,做出相应的判断,然后输出一个是否为XSS攻击向量的概率。
(6) 对得出的概率和操作者设定的阈值做比较,如果低于相应设定的阈值就直接让代理服务器转发数据、否则就判定为XSS攻击然后给出警告。
该检测框架的特点:
(1) 不影响服务器的配置和服务器程序的配合:如果一个检测机制较大的依赖服务器端的配置策略,那么需要开发和维护人员话费较大的精力在服务器的额外开发和维护上,不符合实际使用情况。
(2) 不受各种版本浏览器的解析限制:从第二章XSS攻击检测研究现状看来,很对防御机制建立在特定的浏览器之上,这种策略无法适用广大的用户。
(3) 有较好的检测效果,应对多种XSS攻击向量变种:依赖于静态检测如纯粹的正则匹配无法应对层出不穷的XSS绕过技巧 ,容易漏判和误判。所以需要一个动态灵活的XSS攻击检测机制。
3、详细实现过程的源码如下:XSS检测
4、测试效果
搭建了简单的LAMP服务器之后,写了一个检测的测试网页。检测准确率在95%以上。
在输入框里输入相应的跨站脚本之后检测效果如图:
web端提示拦截:
The END!