sql注入式攻擊是利用是指利用設(shè)計(jì)上的漏洞,在目標(biāo)服務(wù)器上運(yùn)行sql命令以及進(jìn)行其他方式的攻擊
動(dòng)態(tài)生成sql命令時(shí)沒(méi)有對(duì)用戶(hù)輸入的數(shù)據(jù)進(jìn)行驗(yàn)證是sql注入攻擊得逞的主要原因。
比如:
如果你的查詢(xún)語(yǔ)句是select * from admin where username='"&user&"' and password='"&pwd&"'"
那么,如果我的用戶(hù)名是:1' or '1'='1
那么,你的查詢(xún)語(yǔ)句將會(huì)變成:
select * from admin where username='1 or '1'='1' and password='"&pwd&"'"
這樣你的查詢(xún)語(yǔ)句就通過(guò)了,從而就可以進(jìn)入你的管理界面。
所以防范的時(shí)候需要對(duì)用戶(hù)的輸入進(jìn)行檢查。特別式一些特殊字符,比如單引號(hào),雙引號(hào),分號(hào),逗號(hào),冒號(hào),連接號(hào)等進(jìn)行轉(zhuǎn)換或者過(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
%
下面是我寫(xiě)的兩種關(guān)于解決注入式攻擊的防范代碼,供大家學(xué)習(xí)參考!
js版的防范sql注入式攻擊代碼~:
[code start]
<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="error.asp";
}
//-->
<script>
[code end]
asp版的防范sql注入式攻擊代碼~:
[code start]
<%
on error resume next
dim strtemp
if lcase(request.servervariables("https")) = "off" then
strtemp = "http://"
else
strtemp = "https://"
end if
strtemp = strtemp & request.servervariables("server_name")
if request.servervariables("server_port") <> 80 then strtemp = strtemp & ":" & request.servervariables("server_port")
strtemp = strtemp & request.servervariables("url")
if trim(request.querystring) <> "" then strtemp = strtemp & "?" & trim(request.querystring)
strtemp = lcase(strtemp)
if instr(strtemp,"select%20") or instr(strtemp,"insert%20") or instr(strtemp,"delete%20from") or instr(strtemp,"count(") or instr(strtemp,"drop%20table") or instr(strtemp,"update%20") or instr(strtemp,"truncate%20") or instr(strtemp,"asc(") or instr(strtemp,"mid(") or instr(strtemp,"char(") or instr(strtemp,"xp_cmdshell") or instr(strtemp,"exec%20master") or instr(strtemp,"net%20localgroup%20administrators") or instr(strtemp,":") or instr(strtemp,"net%20user") or instr(strtemp,"'") or instr(strtemp,"%20or%20") then
response.write "<script language='javascript'>"
response.write "alert('非法地址!!');"
response.write "location.href='error.asp';"
response.write "<script>"
end if
%>
[code end]
新聞熱點(diǎn)
疑難解答
圖片精選