表单验证增强策略

1.不可见的 JS 验证码

隐藏js自动填写,随机固定值10组,例如:今天是多少号,中国的首都等,用 JavaScript 和css 的手段隐藏起来,不让用户看到,

用户启用js 会自动回答正确答案,

用户不启用js ,会提交错误答案,在后台判断提交时修正为正确答案,

没有答案判定为机器人


2.不可见的输入框陷阱

评论框中增加一个隐藏字段,正常用户是看不到这个字段,所以也不会去填写它,大多数机器人遇到 domain 关键字表单会自动填充一些信息

后台的判断逻辑片段但是机器人是可以看到这个字段的,如果在这里填写了任何东西,那么就会被判定为机器人


3.判断页面输入时间

新增页面打开的时间,提交表单时验证,打开时间与输入时间低于固定值例如5秒,判断为机器人

<%
	If DateDiff("s",request.form("intime1"), Now()) < 5 then
		response.write ""
		response.end
	end if
%>


4.判断来路:

<%
	dim server_v1,server_v2
	server_v1=Cstr(Request.ServerVariables("HTTP_REFERER"))
	server_v2=Cstr(Request.ServerVariables("SERVER_NAME"))
	if server_v1="" or instr(server_v1,"/add.asp")<=0 or mid(server_v1,8,len(server_v2))<>server_v2 then
		response.write ""
		response.end
	end if
%>


5.记录用户的cookies以及IP来限制同一用户发表留言的数量:

<% 
	if request.cookies("postnum")="" then
		response.cookies("postnum")=1
		response.cookies("postnum").expires=DateAdd("h", 24, Now()) 
	else
		response.cookies("postnum")=request.cookies("postnum")+1
	end if
	if request.cookies("postnum") > 5 then
		response.write "alert('今天留言次数超过限制,禁止留言!');"
		response.write "this.location.href='vbscript:history.back()';"
		response.end
	end if 
%>