怎样防止外部程序不断调用页面来刷新数据(ASP)
本站的网址导航站,设置了一个用户报告网址无效链接程序,用来根据用户提交的错误报告,在后台删除无效网址。但近期发现该功能被人恶意调用,而且似乎用的是类似注册机,并不是正常打开本站的相关页面进行的提交。后台出现了大量的网站错误报告,真假莫辨,无法据此进行维护。
解决办法,首先想到的是IP限制:
dim ip,arrip
ip = Request.ServerVariables(“HTTP_X_FORWARDED_FOR”)
if ip = “” then
ip=Request.ServerVariables(“remote_addr”)
end if
if instr(ip,”‘”)>0 then
ip=”0.0.0.0″
end if
arrip=split(ip,”.”)
if (arrip(0)<>”221″) then
response.write “〈SCRIPT LANGUAGE=JavaScript>alert (‘ 你超时了!’);window.location.href=’index.htm’;”
response.end
end if
加上IP限制后,果然不再出现恶意报告网站错误的情况了。该办法也有不便之处,就是要根据自己的IP随时修改该代码(将程序中221改为自己的上网首段IP地址)。
更便捷有效的办法,是在需要防止外部提交的页面的最前面调用下面这段函数
function fun_name()
server_v1 = CStr(Request.ServerVariables(“HTTP_REFERER”))
server_v2 = CStr(Request.ServerVariables(“HTTP_HOST”))
If Mid(server_v1, 8, Len(server_v2))<>server_v2 Then
Response.Write “〈script>alert(‘警告!你正在从外部提交数据,请立即终止!\n你的IP已经被记录!如果再次提交数据,将会封IP!’);”
Response.Redirect “这里修改成您的主页URL”
End If
end function
如果用户提交页面的网址与当前页面的网址不一样,就会终止提交。
经过这样修改以后,问题再没有出现。现在可以根据用户的错误报告,在后台放心将报告的无效网址删除了。

