2015-02-11 40 views

回答

1

还有其他方法,例如:

(1)时,显示记录的形式并提交时,检查表格没有提交太快。

(2)蜜罐:创建一个不可见的文本字段。提交时检查它没有被填充,因为一个bot可能会填充所​​有的值,但是一个人不会填充它。 (3)使用客户端JavaScript生成一个复选框,并告诉人们他们需要检查它。 bot可能无法处理JavaScript,因此可能无法检查它。 (4)为确保只有在实际显示表单时机器人才能提交表单(机器人只需发布提交的表单值而无需首先请求表单),就可以在表单显示时创建并存储会话标记然后在提交时检查它是否存在。确保在使用它之后删除会话令牌以防止重复使用。

下面是一些结合了(1)和(4)的C#示例代码。

//When form is displayed 
Guid token = Guid.NewGuid(); 
Session["token_" + token.ToString()] = DateTime.Now; 
hdnToken.Value = token.ToString(); 

//When form is submitted 
string token = hdnToken.Value; 
book valid = false; 
If (Session["token_" + token] != null) 
{ 
    DateTime displayed = DateTime.Parse(Session["token_" + token]); 
    //form must not be submitted within 30 seconds 
    valid = displayed < DateTime.Now.AddSeconds(-30); 
    Session.Remove("token_" + token); 
} 
相关问题