SQL注入攻擊的主要原因是在動(dòng)態(tài)生成Sql命令時(shí)沒(méi)有對(duì)用戶(hù)輸入的數(shù)據(jù)進(jìn)行驗(yàn)證。
假如你的查詢(xún)語(yǔ)句為:
select * from admin where username='"&user&"' and passWord='"&pwd&"'"
若我的用戶(hù)名輸入的是:1' or '1'='1則,查詢(xún)語(yǔ)句變成了:
select * from admin where username='1 or '1'='1' and password='"&pwd&"'"
這樣你的查詢(xún)語(yǔ)句就通過(guò)了,從而使攻擊者進(jìn)入了你的管理界面。
所以我們要想些方法杜絕用戶(hù)輸入這些特殊字符,如單引號(hào),雙引號(hào),分號(hào),逗號(hào),冒號(hào),連接號(hào)等。
我們可以通過(guò)相關(guān)方法來(lái)過(guò)濾這些字符,需要過(guò)濾的字符主要有:
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技術(shù)防止SQL注入的方法,以供大家學(xué)習(xí)參考。
<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>
通過(guò)以上方法,我們可以杜絕用戶(hù)在傳遞參數(shù)時(shí)輸入非法的字符。
新聞熱點(diǎn)
疑難解答