的SQL流量注入(SQL注入)攻击法
在编程过程中,我们经常将用户输入的数据拼成一条SQL语句,然后直接发送给服务器执行,比如:
string SqlStr = " select * from customers where company name Like ' % "+textbox 1。text+“%”;
这种字符串连接可能会带来灾难性的结果,例如用户输入:
' a '或1=1 -
那么SqlStr的内容是:
select * from customers其中CompanyName类似于' %a '或1=1 - % '
这样,将检索整个customers数据表中的所有数据,因为1=1始终为真,最后一个百分号和单引号由短横线注释掉。
如果用户输入:
' a' EXEC sp_addlogin 'John ',' 123 ' EXEC sp _ addsrvrolemember ' John ',' sysadmin' -
那么SqlStr的内容是:
select * from客户,其中company name like ' % a ' EXEC sp _ addlog in ' John ',' 123 ' EXEC sp _ addsrvrolemember ' John ',' sysadmin' -
这个语句是在后台数据库中添加一个用户John,密码123,并且是sys admin账号,相当于sa的权限。
如果用户输入:
' a ' EXEC XP _ cmdShell(' format c:/y ')-
运行后好像格式化了c盘!
还有很多更危险的手术,但都没试过。存储过程易于使用。存储过程的参数把用户的输入当作一个真实的字符串,既安全又快捷!
位律师回复
0条评论