如何实现数据库的Sql注入拦截的一点想法

      Sql注入攻击是一种比较常用的攻击手段,通常我们比较难以界定,所以,做防控也是比较困难的,开发的时候,需要考虑代码被Sql注入的可能,业界通用的做法是配置黑白名单或者规则库,这是一种解决方案,然而这种解决方案对于使用起来成本还是挺高的,特别对于不是特别懂的人难于配置。

     我想,这样一种思路:一个系统内的Sql语句的数量是有限的,那么我们可以把所有的SQl都收集起来,形成白名单,这样一来就形成了一个完整的规则库,凡是没在这个库里面的语句我们都任务是攻击语句。

      利用Oracle的VPD技术可以实现对Sql执行前的拦截和替换,那么我们根据这一点,是否可以实现Sql语句的注入检测呢?理论上应该可行,不过我没有验证过,难点是性能的开销问题。

     在Application层面,则可以通过实现自定义JDBC驱动,通过动态代理来对Sql语句进行过滤,利用上面的思路,则理论上也可以实现Sql注入的攻击防御与告警,同样的,也是性能问题需要特别注意。

猜你喜欢

转载自chenhua-1984.iteye.com/blog/2169469