sql注入整理

推荐: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'')'


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值