摘要

在现有的SQL注入防御技术中,绝大多数为使用单纯的黑名单模式进行识别,并展开防御。“黑名单”是技术人员通过收集常见的SQL注入语句形成SQL注入语句库,将正则表达式打包集成到防御产品中,通过对流量进行SQL解析进行匹配防御。“黑名单”防御模型对常见的SQL注入具有较好的防御效果,正则匹配成功则进行拦截,未匹配则进行放行。存在的三种缺陷:一是基于黑名单模式对于精心定制构造的SQL注入语句防御效果微乎其微,而且容易出现误报漏报的问题;二是由于匹配的是全量的规则库,性能效率不高,为此提出了解决办法—基于增量匹配的SQL注入识别防御方法,是利用白名单的思想,通过学习业务正常SQL语句形式,将其固化到白名单中,接着对流量进行检测时,白名单能够全量匹配的SQL语句予以放行;三是面对白名单无法匹配时,也就是存在增量的SQL语句直接拦截或者进行二次检测之后再进行放行或者拦截。实验表明,使用白名单增量匹配模式无论从准确率上,还是性能上,都优异于单纯黑名单模式的防御手段。