Home | 簡體中文 | 繁體中文 | 雜文 | 打賞(Donations) | ITEYE 博客 | OSChina 博客 | Facebook | Linkedin | 知乎專欄 | Search | Email

15.7. 防止惡意刷新與重複提交

在開發中會經常會遇到這樣的需求,例如投票模組,要防止惡意刷票,下面來介紹幾種解決方按:

1、來源IP / MAC地址限制
      這個是使用最多也是最廣泛的方式,通過獲取訪問用戶的來源IP地址,來限制在一段時間內所能使用的票數。
經常用電腦的老手是很容易繞出這種限制的。PPP/PPPoE撥號用戶,可以通過斷線重撥來更換IP地址;
 		每個網絡位置會有一個全球唯一的MAC位址。所以我們也可以根據MAC地址限制用戶訪問

2、Cookies / Session驗證
      這種方式用的也比較多,清除瀏覽器Cookies,就可以很容易的繞過這種限制了
	  關閉瀏覽器,Session就會被銷毀;客戶端禁用Cookie,Session也會失效;

4、驗證碼,包括圖像,語音,電話,郵件以及回答問題
	首先說圖片驗證碼,有些變態的網站,大家可以看到用戶的註冊、登錄、回覆、發帖等等,都會使用驗證碼,但是這種方式會讓用戶有時感覺很噁心,隨着OCR(Optical Character Recognition,光學字元識別)技術的成熟,圖片驗證碼已經不再安全,識別率可能達到90%以上甚至100%
	語音有播放方式和電話方式,聽喇叭中讀取字元,然後輸入驗證碼。不要以為這是最安全的,語音是一種波形,通過DSP(Digital Signal Processing,數字信號處理)技術很容易識別
	手機短信與電子郵件,不多說了

	回答問題
	如果沒有足夠海量的題庫,很快問題的內容和答案就會被收集。反而讓正常投票的用戶,覺得投票很噁心、麻煩,產生厭噁心理。漸漸的也被我們拋棄了。


5、註冊用戶可能投票模組
	遊客不能參與,必須註冊了賬戶才能進行投票,並且限制新註冊用戶,在一段時間內不能參與投票。

6、隨機投票地址
	讓每一個訪問頁面的用戶得到一個隨機唯一的KEY可能通過UUID/GUID生成,通過這個KEY,生成一個投票地址,該地址只能訪問一次,使用過後便作廢。

總結:很快就會有新的應對方式。我們只能通過上面幾種方案的組合方式,增加用戶刷新難度,讓用戶在無法在短期內實現應對方案,你沒想出一種新方式。