Asp.net

防止選票欺詐——如何確保選票合法

  • July 8, 2010

我正在開發的一個網站包括一個允許使用者投票選出他們最喜歡的條目的競賽。客戶想要某種形式的投票欺詐預防。

記錄所有投票的 IP 地址的想法已經出現,但我不確定這是否是一個好的解決方案。內部 IP 地址當然是個壞主意,但是外部地址呢?我看到的問題是,例如,整個大學電腦實驗室可能正在使用單個外部 IP 地址。——甚至可能是整個校園。如果一個 IP 地址只允許有限數量的投票,那麼完全合法的投票可以很快達到這個限制。

有誰知道更好的方法來實現這個?當然,這在以前已經做過了。

任何幫助表示讚賞。提前致謝。

這完全取決於您想要阻礙使用者的數量。

  • 您可以使用驗證碼使自動投票變得不可行,但不會阻止一個專門的人投票愚蠢。
  • 您可以要求使用者在投票前進行身份驗證。
  • 您可以要求使用者提供一個電子郵件地址,然後發送一個唯一的一次性連結以送出投票。這類似於僅當使用者具有有效的電子郵件地址時才註冊使用者的方式。從這裡您可以拒絕對同一個電子郵件地址的多次投票。
  • 使用者投票後保存一個 cookie,以表明該使用者已經投票。這很容易繞過,但可能會阻止技術較弱的使用者。
  • 使用 openID(例如 dotnetopenauth)向第三方(例如 google 或 yahoo)進行身份驗證以訪問投票區域,然後記錄使用者的 openID 以供將來請求。
  • 記錄使用者的擊鍵(鍵盤動態)、httpcontext 數據和投票完成時間,使用統計分群算​​法(如 k-means)統計分析重複投票者的可能性。
  • 從這一點開始它變得更加瘋狂,所以我會在這裡停下來。

引用自:https://serverfault.com/questions/158633