2012-01-22 108 views
6

我正在創建一個Web應用程序,用戶將通過點擊贊成或拇指向下對一些候選人進行投票,而這些用戶在該網站上沒有任何帳戶。防止雙重投票

什麼是最好的技術使用?是否有必要使用captcha進行更多的垃圾郵件防護?

投票次數預計爲數百萬次,只要95%的準確率就沒問題,主題不是非常重要。謝謝。

+0

*不是非常關鍵*? 95%的準確度已經很大。 –

+0

添加一個cookie。或存儲IP地址,如果你真的害怕。 – neeKo

+1

這裏最好的選擇是設置一個持久的cookie,表明用戶之前已投票。總有辦法欺騙系統 - 特別是如果你不保存/跟蹤用戶帳戶。 – SeanNieuwoudt

回答

4

您可以將這兩種方法結合起來:

  • 添加一個cookie,以防止多張選票從同一臺機器
  • 登錄IP地址,避免比從同一地址設置次數投票以上(例如,同一小時的5倍)。

這將使多個人可以從同一個網絡投票,但仍然可以防止過度作弊。

您還可以通過添加一些隱藏的表單域以及必須包含在投票中的標記和/或使用Ajax進行投票來使建立投票機器人變得更加困難。我知道無論如何建立一個機器人相對比較容易,但大多數作弊者並不那麼聰明。

1

餅乾會話ID會有所幫助,但在瀏覽器關閉時都可能會丟失(如果用戶已啓用它刪除它們)。不過,它們會給你一定程度的準確性(例如,懶惰的選民不會麻煩關閉並重新打開瀏覽器)。

使用IP地址也可以工作,但正如@邁克爾狄龍說,在同一個IP地址(相同的路由器)上的人將無法投票。

1

你有幾種選擇,你可以使用其中的一些或全部選項。

您可以記錄IP,然後檢查IP,但這並不表示某個特定的人員只是一臺計算機,有時不只是一臺計算機。

你也可以寫一個cookie到用戶的瀏覽器,但用戶可以使用不同的瀏覽器,機器等

在用戶的會話,你可以創建一個會話變量,但如果你期望非常高流量的這可能不是最好的選擇,並且也只能防止在同一會話中重新投票。

如果您正在考慮驗證碼,您最好還是要求用戶提供一個電子郵件地址,然後確保每個電子郵件地址至少有一個投票。但是,即使這樣,您也無法保證有效的電子郵件地址。