SQL Injection

SQL Injection也称SQL指令注入式攻击,主要属于InputValidation的问题。它并非植入电脑病毒,而是描述了一个利用写入特殊SQL程序代码进行攻击。

一般输入帐号密码的网站的SQL语法为:select*frommemberwhereUID='"&request("ID")"'AndPasswd='"&request("Pwd")&"'

如果正常使用者帐号A123456789,密码1234
select*frommemberwhereUID='A123456789'AndPasswd='1234'

输入的帐号与密码会取代ASP中的变量,并被两个单引号所包住
select*frommemberwhereUID='"&request("ID")&"'AndPasswd='"&request("Pwd")&"'

若攻击者已知系统中有一个Admin的管理者帐号,则输入Admin'--,即可不需输入密码而进入资料库
select*frommemberwhereUID='Admin'--'AndPasswd=''
注:--符号后面的任何叙述都会被当作注解

一旦恶意使用者输入使用者帐号'or 1=1--,密码asdf1234(任意输入)
select*frommemberwhereUID=''or1=1--'AndPasswd='asdf1234'

一旦恶意使用者输入使用者帐号abcdef(任意输入),密码asdf(任意输入)'or1=1--
select*frommemberwhereUID='abcdefg'AndPasswd='asdf'or1=1--'

SQLInjection的危害是很大的,比如对于SQLServer,可以创建、删除数据库,执行系统命令等等,如droptabletbl_name,executemaster.dbo.xp_cmdshell"command"所以很多人写的函数就是拼命的去过滤这些可能引起危害的关键词,比如drop,分号,and,exe,mid等等,罗列了一大堆。

其实,尽可以不必那么繁琐,非要把简单的事情复杂化。对于过滤,ASP中只要针对字符型和数字型分别处理就可以了。字符型的,把单引号转换成两个单引号 strTmp=Replace(Trim(str),"'","''")。数字型的,就判断是否能够转换成数字型的,用isNumeric函数。

参考资料:精通SqlInjection技术
          一个asp函数,解决SQLInjection漏洞

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值