欢迎光临
我们一直在努力

全面防御asp网站防黑客攻击[我的原创]-ASP教程,安全加密

建站超值云服务器,限时71元/月

##############################################

本文所有代码版权归属[雨浪],转载请声明

##############################################

asp最脆弱的不是技术,而是防范黑客攻击

而无论怎样攻击,就两点

通过querystring和form

只要这两处防范好了,问题就解决了

下面是我自家独创的一些代码,供大家参考

一.防通过querystring的sql攻击

一般sql能够攻击的页面通常是在参数为数字的页面

1.首先我们做一个警告子过程

子过程功能:错误信息提示

参数说明:errmsg 错误信息说明 var 处理方式 1返回不刷新 2返回上页 3关闭页面

public sub alarm(errmsg,var)

response.write("<table width=514 height=293 border=0 align=center cellpadding=0 cellspacing=0>")

response.write("<tr><td height=43><img src=images/error_bg.gif width=514 height=43></td></tr><tr>")

response.write("<td height=239 valign=top> ")

response.write("<table width=100% height=100% cellpadding=0 cellspacing=1 bgcolor=#cccccc style=border-left:1px solid #dddddd;border-right:1px solid #dddddd>")

response.write("<tr bgcolor=#ffffff><td width=57% align=center><img src=images/error_show.gif width=272 height=92></td>")

response.write("<td width=43% align=center><div align=center style=line-height:150%><font color=#0099ff style=font-size:9pt>对于操作失败我们表示抱歉!<br>如果仍有问题,请给我们发送错误报告 </font></div></td></tr>")

response.write("<tr bgcolor=#ffffff><td height=25 colspan=2>&nbsp;&nbsp;&nbsp;<strong><font color=#0099ff style=font-size:9pt>操作失败的可能原因:</font></strong></td></tr>")

response.write("<tr bgcolor=#ffffff><td height=86 colspan=2>")

response.write("<table width=100% border=0 cellspacing=0 cellpadding=0>")

response.write("<tr><td width=2%>&nbsp;</td>")

response.write("<td width=98%><font style=font-size:9pt color=#ff0000>"&errmsg&"</font></td>")

response.write("</tr></table></td></tr><tr align=center bgcolor=#ffffff><td height=49 colspan=2>")

if var=1 then

response.write("<a href=javascript:history.go(-1)><img src=images/error_enterenter.gif width=61 height=21 style=cursor:hand border=0></a>")

elseif var=2 then

response.write("<a href=javascript:location.href="&request.servervariables("http_referer")&"><img src=images/error_enterenter.gif width=61 height=21 style=cursor:hand border=0></a>")

elseif var=3 then

response.write("<a href=javascript:window.close()><img src=images/error_enterenter.gif width=61 height=21 style=cursor:hand border=0></a>")

end if

response.write("</td></tr></table></td></tr><tr>")

response.write("<td height=9><img src=images/error_down.gif width=514 height=9></td></tr></table>")

end sub

2.写一个验证数字的函数

函数功能:检测是否为数字并且数字是否有效

返 回 值:boolean

public function isinteger(para)

if isnumeric(para)=false then isinteger=false

dim str

dim l,i

if isnull(para) then

isinteger=false

exit function

end if

str=cstr(para)

if trim(str)="" then

isinteger=false

exit function

end if

l=len(str)

for i=1 to l

if mid(str,i,1)>"9" or mid(str,i,1)<"0" then

isinteger=false

exit function

end if

next

isinteger=true

end function

3.写一个对querysting参数是否为数字的验证过程

子过程功能,验证参数是否为数字

参数说明:manage 处理方式:1=提示信息并关闭页面,2=转向页面,3=先提示再转向 redi 出错时转向的页面,str:接受检测的变量

public sub integerok(manage,redi,str)

if isinteger(str)=false then

select case manage

case 1

response.write("<script language=javascript>alert(地址栏中的参数错误,本页面将自动关闭);window.close();</script>")

case 2

response.write "<script language=javascript>location.href="&redi&"</script>"

case 3

response.write "<script language=javascript>alert(地址栏中的参数错误,本页将自动导向其他页面);location.href="&redi&";</script>"

end select

end if

end sub

4.写一个对qureystring整体验证的子过程

参数说明:manage 处理方式:1=提示信息并关闭页面,2=转向页面,3=先提示再转向 redi 出错时转向的页面

public sub saferush(manage,redi)

dim my_url,my_a,my_x,my_cs(),my_ts my_url:转接过来的url地址 my_a:获取url地址中用&隔开的字符串数组

my_url=request.servervariables("query_string") my_x:interger my_cs()动态数组

my_a=split(my_url,"&")

redim my_cs(ubound(my_a))

on error resume next

for my_x=0 to ubound(my_a)

my_cs(my_x) = left(my_a(my_x),instr(my_a(my_x),"=")-1)

next

for my_x=0 to ubound(my_cs)

if my_cs(my_x)<>"" then

if instr(lcase(request(my_cs(my_x))),"")<>0 or instr(lcase(request(my_cs(my_x))),"and")<>0 or instr(lcase(request(my_cs(my_x))),"select")<>0 or instr(lcase(request(my_cs(my_x))),"update")<>0 or instr(lcase(request(my_cs(my_x))),"chr")<>0 or instr(lcase(request(my_cs(my_x))),"delete%20from")<>0 or instr(lcase(request(my_cs(my_x))),";")<>0 or instr(lcase(request(my_cs(my_x))),"insert")<>0 or instr(lcase(request(my_cs(my_x))),"mid")<>0 or instr(lcase(request(my_cs(my_x))),"master.")<>0 then

select case manage

case "1"

response.write "<script language=javascript>alert(出现错误!参数 "&my_cs(my_x)&" 的值中包含非法字符串!\n\n 请不要在参数中出现:;,and,select,update,insert,delete,chr 等非法字符!);window.close();</script>"

case "2"

response.write "<script language=javascript>location.href="&redi&"</script>"

case "3"

response.write "<script language=javascript>alert(出现错误!参数 "&my_cs(my_x)&"的值中包含非法字符串!\n\n 请不要在参数中出现:;,and,select,update,insert,delete,chr 等非法字符!);location.href="&redi&";</script>"

end select

response.end

end if

end if

next

end sub

好了下面举实例说明:

假设存在一个http://www.webasp.net/tech/admin_news_tg.asp?class=1的页面

可以如此防范

call saferush(2,"../")

classid = request.querystring("classid")

call integerok(2,"../",classid)

二.对表单提交进行防范,很简单啦:)

sub safeform(var)

form_badword="∥%∥&∥*∥#∥@∥(∥)∥=" 在这部份定义post非法参数,使用"∥"号间隔

on error resume next

if request.form<>"" then

chk_badword=split(form_badword,"∥")

for each name in request.form

for i=0 to ubound(chk_badword)

if instr(lcase(request.form(name)),chk_badword(i))<>0 then

if var=1 then

response.write "<script language=javascript>alert(出错了!表单包含非法字符串!\n\n请不要在表单中出现非法字符!);history.go(-1);</script>"

elseif var=2 then

qczc.err_list"<li>出错了!在您提交的表单中包含非法字符串<li>请不要在表单中出现非法的字符串<li>在此过程中,我们已将您的ip记录在案",1

end if

response.end

end if

next

next

end if

end sub

使用方法,只要在提交表单的页面头部加一条语句就可以了

<%call safeform(2)%>

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » 全面防御asp网站防黑客攻击[我的原创]-ASP教程,安全加密
分享到: 更多 (0)

相关推荐

  • 暂无文章