2015-02-11 47 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); 
} 
相關問題