网络是一个巨型的垃圾制造厂,连我的一个小小的信息发布站机制木炭网(http://www.86mutan.cn)也成为了其中的一个垃圾仓库!

前面写了一篇关于“网站被发了几千条垃圾信息来看asp防垃圾信息方法的功效”一文,未找到合适的防止垃圾信息的方法,至今还饱受其困扰。今天又打开了一下我的(http://www.86mutan.cn),上次做了一次防垃圾的处理,本以为能见点效果,可结果还是一样,满版的垃圾信息,差不多又上千条了,只能把数据库下载下来再进行批量删除了!

记得这已经不是第一次这样做了,太麻烦了。于是再次到网上查找asp防止垃圾信息发布的方法,其中有一条就是通过判断来路来防止垃圾信息,但现在的群发软件都可以进行伪装来路,而且自己在提交页上也做了来路判断,这样并不能阻止垃圾信息的发布。通常的ASP判断来路防止垃圾信息的方法如下:

dim server
server=Cstr(Request.ServerVariables("HTTP_REFERER"))
if server="" or instr(server,"/article.asp")<=0 then
response.write "<SCRIPT language=JavaScript>alert('来源非法,禁止外部提交!');"
response.write "this.location.href='vbscript:history.back()';</SCRIPT>"
response.end
end

这样的方法判断来路太过简单,自己想了另一个方法,那就是让通过cookies产生随机参数,举例说明:

在提交页,假设为add.asp,我们生成一个随机参数,再将参数值赋给cookies,如下:

Dim nums,flag
flag=request("flag")
If flag="" Then
   Randomize
   nums=Fix(rnd*10000000000)
   response.redirect "?flag="&nums
End if
response.cookies("OK")=flag

在接收页我们这样进行判断:

if ucase(Request.ServerVariables("HTTP_REFERER"))<>ucase("http://"&Request.ServerVariables("HTTP_HOST")&"/add.asp?flag="&request.cookies("OK"))  or request.cookies("OK")="" then
   response.write "来路不正确"
   response.end
end if

通过上面的方法就实现在了让每一个提交页的地址都不相同,我想这样比前面的直接判断来路的方法会更加可靠,当然,这个方法也不一定行,目前正在测试中,目前还没有收到有垃圾信息。