方案(1)的做法需要RDBMS的支持,目前只有Oracle采用该技术;
方案(2)是一种不 完全的解决措施,举例来说明他的弱点,当客户端的输入为“…ccmdmcmdd…”时,在对敏感字符串“cmd”替换删除以后,剩下的字符正好是“…cmd…”;
方案(3)的实质是在服务端处理完毕之后进行补救,攻击已经发生,只是阻止攻击者知道攻击的结果;
方案(4)被多数的研究 者认为是最根本的解决手段,在确认客户端的输入合法之前,服务端拒绝进行关键性的处理操作。
方案(4)与(2)的区别在于,方案(4)一旦检测到敏感字符/字符串,针对数据库的操作即行中止,而方案(2)是对有问题的客户端输入做出补救,不中止程序后续操作。方案(2)虽然在一定程度上有效,但有“治标不治本”的嫌疑,新的攻击方式正在被不断发现,只要允许服务端程序使用这些提交信息,就总有受到攻击的可能。
因此,本文中针对SQL注入攻击的检测/防御/备案模型即基于提交信息的合法性检 查,在客户端和服务端进行两级检查,只要任一级检查没有通过,提交的信息就不会进入query语句,不会构成攻击。在客户端和服务端进行合法性检查的函数基本相同。客户端检查的主要 作用是减少网络流量,降低服务器负荷,将一般误操作、低等级攻击与高等级攻击行为区分开来。技术上,客户端的检查是有可能被有经验的攻击者绕开的,在这种情形下,提交的数据被直接发往服务端,通过在服务器端设定二级检查就显得十分必要。由于正常提交到服务端的数据已经在客户端检查过,因此,服务端检查到的提交异常基本可以认定为恶意攻击行为所致,中止提交信息的处理,进行攻击备案,并对客户端给出出错/警告提示。对应模型简图如(图1)所示。

图1
2.2检 测
对提交信息的检查,主要包括数据类型检查、数据长度检查和敏感字符过滤。前两项可利用函数直接办到,敏感字符过滤则需要应用开发方做相应开发。经过总结,对语句时必须用到的,因此可以针对这些敏感字符,设定过滤函数,在把这些上传的参数结合到查询语句之前对他们进行过滤。下面的2个函数即过滤模块的主要代码:



相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
相关专题
- DoS 拒绝服务攻击专题 (1222篇文章)
- 脚本攻击和防范 (2367篇文章)
- DDoS攻击防御与分析 (1489篇文章)
- ARP攻击防范与解决方案 (1712篇文章)
- 数据库SQL注入攻击 (126篇文章)
- 加固Wi-Fi无线网络安全的17招式 (11次浏览)
- 网管秘籍 审核网络安全的十大必备工具 (6次浏览)
- 个人用户的网络安全防范 (0次浏览)
- 驱逐威胁 六把安全利剑清除僵尸网络 (0次浏览)
- CISSP的成长之路(十九):详述安全威胁控制手 (0次浏览)
- 07年电脑安全大盘点:蠕虫网络威胁Web 2.0 (0次浏览)
- Web应用安全的全新探索 (0次浏览)
- 到底谁需要网络访问控制 (NAC)? (0次浏览)
- 针对性的防御手段 十招应对邮件欺诈 (0次浏览)
- 跨站打印攻击 网络打印机成攻击新途径 (0次浏览)



