SQL注入攻击的主要原因是在动态生成Sql命令时没有对用户输入的数据进行验证。
假如你的查询语句为:
select * from admin where username='"&user&"' and passWord='"&pwd&"'"
若我的用户名输入的是:1' or '1'='1则,查询语句变成了:
select * from admin where username='1 or '1'='1' and password='"&pwd&"'"
这样你的查询语句就通过了,从而使攻击者进入了你的管理界面。
所以我们要想些方法杜绝用户输入这些特殊字符,如单引号,双引号,分号,逗号,冒号,连接号等。
我们可以通过相关方法来过滤这些字符,需要过滤的字符主要有:
net user
xp_cmdshell
/add
exec master.dbo.xp_cmdshell
net localgroup administrators
select
count
Asc
char
mid
'
:
"
insert
delete from
drop table
update
truncate
from
%
下面我们介绍一种使用JS技术防止SQL注入的方法,以供大家学习参考。
<script language="javascript">
<!--
var url = location.search;
var re=/^/?(.*)(select%20|insert%20|delete%20from%20|count/(|drop%20table|update%20truncate%20|asc/(|mid/(|char/(|xp_cmdshell|exec%20master|net%20localgroup%20administrators|/"|:|net%20user|/'|%20or%20)(.*)$/gi;
var e = re.test(url);
if(e) {
alert("传入的地址中含有非法字符!");
location.href="index.asp";
}
//-->
<script>
通过以上方法,我们可以杜绝用户在传递参数时输入非法的字符。
新闻热点
疑难解答