论文部分内容阅读
如今越来越多的应用程序依靠Web这一平台发展为由用户主导的内容互联网模式。Web应用已经成为了当前最流行的计算机应用程序,但是随着Web应用的越来越火热,安全问题也随之而来,跨站脚本攻击(XSS)和跨站请求伪造(CSRF)是两种最流行的Web应用攻击方式。而Node.js作为一种新兴的Web应用开发平台,并没有为在其上开发及部署的Web应用提供XSS和CSRF防御功能。本文从Node.js的运行机制出发,对开发及部署在Node.js上的Web应用的性能方面进行综合考虑,设计实现了一个为Node.js Web应用提供XSS防御功能和CSRF防御功能的防御系统。该防御系统通过运行在Node.js的子进程中为Web应用提供防御服务,通过高度的解耦合,对于已开发及部署在Node.js平台上的Web应用来说,并不需要改动太多的代码就可以开启防御系统为其提供防御服务。防御系统分为六个模块,包括XSS防御模块、CSRF防御模块、会话管理模块、日志管理模块、通信接口模块以及初始化模块。而防御系统设计实现的中心是XSS防御模块,因为只有Web应用在没有XSS安全漏洞的前提下,针对CSRF设计的防御措施才能够正常的进行防御。XSS的防御有四个步骤,分别为检测、解析、过滤及输出编码。首先对数据进行检测来判断其类型。接下来使用本文设计实现的HTML解析器对HTML数据进行解析,同时在解析过程中会利用污点标记算法对解析出的HTML标签进行污点标记。过滤过程分为两部分,包括HTML标签属性的过滤,以及HTML属性值的过滤;为了提高过滤效率,使用红黑树存储白名单及黑名单;并利用字符串信息熵以及攻击特征正则匹配算法来提高属性值过滤的准确性。最后通过追踪污点标记对原始字符串进行安全值替换,编码输出合法数据。在实现XSS防御的基础上,根据Anti CSRF Token防御策略实现了CSRF防御模块,同时实现了基于Redis数据库存储的Session模块来为Web应用提供会话管理。Web应用与防御系统之间的通信以IPC通道为主,同时使用Redis数据库作为第三方数据存储区,以数据共享的方式进行数据交换。本文搭建了测试环境对防御系统进行测试。测试主要包括功能测试和性能测试。通过对测试结果进行分析,证明防御系统能够对XSS和CSRF攻击进行有效防御,并且在为Web应用提供防御服务的同时,防御系统并没有对Web应用的响应时间造成太大的影响,符合性能需求。