看好你的门-保护数据存储区(3)-XPath注入防御

来源:互联网 发布:阿里云服务器在哪买 编辑:程序博客网 时间:2024/04/30 04:07

首先需要声明,本文纯属一个毫无远见和真才实学的小小开发人员的愚昧见解,仅供用于web系统安全方面的参考。

1、常用的防御对策

XPath注入攻击的防御和SQL注入攻击的防御比较接近:
(1)数据提交到服务器上端,在服务端正式处理这批数据之前,对提交数据的合法性进行验证(不仅仅要在客户端进行验证,在服务端也要同步进行验证)。
(2)检查提交的数据是否包含特殊字符,如果发现敏感字符,直接拒绝,而不是尝试对敏感字符进行加工和处理;
(3)对于系统出现的错误信息,屏蔽系统本身的出错信息,在服务端进行输出。
(4)参数化XPath查询,将需要构建的XPath查询表达式,以变量的形式表示,变量不是可以执行的脚本。如下代码可以通过创建保存查询的外部文件使查询参数化:
declare variable loginIDasxsstringexternaldeclarevariablepassword as xs:string external;
//users/user[@loginID=loginIDand@password=password]
(5)通过MD5、SSL等加密算法,对于数据敏感信息和在数据传输过程中加密,即使某些非法用户通过非法手法获取数据包,看到的也是加密后的信息。

2、一个变通的防御对策

当服务器接收到客户端提交过来的数据时,首先检测其客户端的IP是否有案底,如果有非法攻击的案底,直接输出出错信息;如果没有案底则验证是否包含非法字符,如果用户是首次提交非法信息,则输出出错信息,如果用户是第二次提交,则输出出错信息并将该客户端的IP作为案底进行记录,在一天或者两天之内禁止该用户访问,如果信息合法,则将用户信息提交给参数变量,执行安全的查询,输出结果。
对于有案底的IP,隔一定时间后自动处理,这样可以防止是因为用户误操作而造成合法用户无法访问,和某些用户恶意的多次入侵的企图。

0 0
原创粉丝点击