海外邮件中继,海外退信中继,美国高速VPS,不限流量VPN,邮局维护和管理,邮件网关,EMOS邮件中继,POSTFIX邮件中继,Winwebmail邮件中继,Winmail邮件中继,DBMail邮件中继,JDMail邮件中继,Exchange邮件中继,MDaemon邮件中继 淘宝店:http://shantan.taobao.com 云邮科技官网:www.yunrelay.com
【字体设置:大 中 小】
现在的网站基本上发表留言,注册,评论等都使用到了验证码这一关,一开始的时候,验证码难倒了那些群发的软件,但是随着程序员水平的提高,他们的程序也可以识别图片形式产生的验证码了,这样的话,垃圾广告满天飞,到处都是不良信息,真鄙视那些SEO们!
为了防止垃圾评论,很多人采用了不用的验证码程序,有些验证码连人工都难于识别,更何况是那些所谓的智能软件呢!但是即使那么复杂的验证程序,还是一样被绕过了?为什么呢?道理其实很简单,那是因为程序写的不严谨而已,过滤不全面。
我们知道,每次我们访问验证码网页的时候,就会产生一个SESSION对象,然后我们把表单中的验证码跟这个SESSION进行对比,如果相同就通过验证,但是这样是不全面的,因为当我们访问验证码的时候,如果提交的内容出错,验证码的SESSION并没有被清空,这样输入原来的验证码还可以继续发表评论,所以很多群发机就是利用了这一点不断进行猜解,直到发布成功为止。
其次,假使我们不访问验证码程序的网页,那么就不会产生SESSION对象了,然后让群发的程序在提交的时候也不提交验证码,验证码这一关就轻松地被绕过了,那些验证码形态虚设!根本就起不了保护的作用!
居于上面的漏洞,我们可以进行以下的修复:
假如我们表单的验证码的名字为code,验证验证码的session("code"),我们需要这样进行验证:
if request.form("code")="" or session("code")="" or request.form("code")<>session("code") then
response.write"验证码为空或验证码错误,请返回重填!"
response.end
end if
另外,我们还要加强禁止外部提交表单,验证来源页面是否合法:
Dim server_v1,server_v2
server_v1=cstr(request.servervariables("http_referer"))
server_v2=cstr(request.servervariables("server_name"))
if mid(server_v1,12,len(server_v2))<>server_v2 and mid(server_v1,8,len(server_v2))<>server_v2 then
response.write"禁止从外部提交表单!"
response.end
end if
通过以上两道验证,垃圾评论基本可以解决了,但是手工来发的就没有办法了,你可以在表单中过滤掉那些网址,电话号码,QQ号码,等等。
发表评论 - 不要忘了输入验证码哦!