sql注入整理

来源:互联网 发布:淘宝高仿鞋店推荐 编辑:程序博客网 时间:2024/04/30 11:46

推荐:SQL注入攻防入门   http://www.cnblogs.com/heyuquan/archive/2012/10/31/2748577.html

sql注入 工具  http://blog.jobbole.com/17763/


Scott Guthrie 就提到了5点来防范:

1) 在构造动态SQL语句时,一定要使用类安全(type-safe)的参数加码机制。(也就是参数化)
2) 在部署你的应用前,始终要做安全审评(security review)。
3) 千万别把敏感性数据在数据库里以明文存放。
4) 确认你编写了自动化的单元测试,来特别校验你的数据访问层和应用程序不受SQL注入攻击。
5) 锁定你的数据库的安全,只给访问数据库的web应用功能所需的最低的权限。

“SQL注入天书”作者自己提供的终极防范方案就是 replace("'","''")。并且在参数前后加单引号。也可防止16进制注入


select * from table1 where id=1;(declare @d varchar(8000) set @d=0x27eeadf...)

我们用单引号替换法修改后最终执行的sql如下:
select * from table1 where id=‘1;(declare @d varchar(8000) set @d=0x27eeadf...;)’

可以看到1;(declare @d varchar(8000) set@d=0x27eeadf...;) 被当做字符串处理,而不会被解析

当然这个过程中没有替换单引号。 如果declare 后面有单引号的话 还要把单引号替换成两个单引号(不替换的话会有被截断、注入的可能),比如:

select * from table1 where id=1;(declare @d varchar(8000) set @d=‘eee’)

我们用单引号替换法修改后最终执行的sql如下:
select * from table1 where id=‘1;(declare @d varchar(8000) set @d=''eee'')'


原创粉丝点击