PHP教程-防止网站被刷票的小技巧
在Web開(kāi)發(fā)中,投票模塊會(huì)經(jīng)常出現(xiàn)。這樣就使得防止刷票,成了至關(guān)重要的技術(shù)。以下是兄弟連教育www.itxdl.cn總結(jié)的一些防止刷票方法:
?
1. IP限制
?
這是使用的最多,也是最廣泛,不可少的刷票限制。而且由于專(zhuān)題都沒(méi)有用戶(hù)模塊,使得這個(gè)方法,幾乎成了唯一可行的手段。該方式,通過(guò)獲取訪問(wèn)游客的IP地址,來(lái)限制其在一段時(shí)間內(nèi)所能使用的票數(shù)。當(dāng)然,正常訪問(wèn)頁(yè)面投票的游客,肯定都能很好的被這個(gè)手段所限制,但是,各種投票的活動(dòng)和專(zhuān)題,以及豐厚的獎(jiǎng)品,使得一些人想方設(shè)法的想要進(jìn)行刷票。
?
ADSL用戶(hù),可以通過(guò)斷線(xiàn)重?fù)軄?lái)更換IP地址。
?
使用代理訪問(wèn)的用戶(hù),我們也無(wú)法獲得其真實(shí)的IP地址。
?
還有我們未知的刷票工具。
?
以上都是我們沒(méi)有辦法克服的難題,而且對(duì)于網(wǎng)吧/內(nèi)網(wǎng)用戶(hù)來(lái)說(shuō),這樣的設(shè)置也會(huì)顯得不夠公平。
?
2. Cookies 驗(yàn)證
?
這也是網(wǎng)上所用到較多的手段,不過(guò),所有來(lái)自于客戶(hù)端的信息和內(nèi)容都是不可靠的。熟知cookies原理的人,就可以很容易的繞過(guò)限制。
?
cookies 可以禁用。
?
使用代理訪問(wèn)的用戶(hù),我們也無(wú)法獲得其真實(shí)的IP地址。
?
Cookies可以隨意清除、修改。
?
3. Session 驗(yàn)證
?
session會(huì)給所有訪問(wèn)的游客,指定一個(gè)唯一的sessionID。這樣,似乎對(duì)于防止刷票有一些作用。可惜session有致命的缺點(diǎn)。
?
關(guān)閉瀏覽器,session就會(huì)被銷(xiāo)毀。
?
客戶(hù)端禁用cookies,session也會(huì)失效。
?
4. 驗(yàn)證碼
?
注冊(cè),登陸,回復(fù),發(fā)帖……驗(yàn)證碼使用的范圍很廣,很多。可惜,至于具體效果呢,長(zhǎng)久下來(lái),只發(fā)現(xiàn)這樣的方式,其實(shí)只是加大了普通游客的投票難度,而且刷票頻繁的訪問(wèn)驗(yàn)證碼,也大大加大了服務(wù)器負(fù)擔(dān)。
?
有一種驗(yàn)證碼是可行的,google推出的圖形驗(yàn)證碼,旨在讓用戶(hù)將圖片翻轉(zhuǎn)至正確的方向,方可完成驗(yàn)證。想必很少有軟件或者電腦操作可以很好的繞過(guò)這樣的驗(yàn)證碼。不過(guò),缺點(diǎn)呢,實(shí)現(xiàn)難度很高。
?
5. MAC地址限制
?
作為web程序,很難獲取真實(shí)的Mac地址(我用php/js實(shí)驗(yàn)過(guò),并沒(méi)有成功的獲取到Mac地址)。當(dāng)我們讀取客戶(hù)端Mac地址時(shí),讀取的也是存儲(chǔ)于注冊(cè)表的一個(gè)信息,它也是可以進(jìn)行修改的。
?
6. 用戶(hù)模塊
?
這應(yīng)該算很有用的方式。每個(gè)游客,必須注冊(cè)了賬戶(hù)才能進(jìn)行投票,通過(guò)限制賬戶(hù)ID來(lái)限制投票,并且可以限制初始注冊(cè)用戶(hù),一段時(shí)間內(nèi)不能參與投票。而且,真有大量的注冊(cè)用戶(hù)涌入,也可以增加網(wǎng)站的流量。可是,對(duì)于小地區(qū)網(wǎng)站來(lái)說(shuō),這樣會(huì)讓網(wǎng)友覺(jué)得很麻煩,可能放棄投票,從而可能流失網(wǎng)站的用戶(hù)。
?
7. 行為記錄
?
其實(shí),很多刷票行為我們是沒(méi)辦法進(jìn)行限制的。可是有時(shí)候,我們卻可以很好的記錄下來(lái)。而且當(dāng)檢測(cè)到非正常投票的時(shí)候,自動(dòng)提出票數(shù),要么返回投票成功的假象,也可以很好的限制刷票。
?
缺點(diǎn)就是,記錄過(guò)多的數(shù)據(jù),會(huì)讓服務(wù)器壓力很大。而且,如果記錄行為的記錄點(diǎn)不夠多,不夠復(fù)雜,也可能被刷票的專(zhuān)業(yè)戶(hù)所參透。
?
8. 回答問(wèn)題
?
第一次使用這個(gè)方式限制刷票的時(shí)候,我們很欣慰的看到了不錯(cuò)的效果。可惜,如果沒(méi)有足夠海量的題庫(kù),很快問(wèn)題的內(nèi)容和答案就會(huì)被收集。反而讓正常投票的用戶(hù),覺(jué)得投票很惡心、麻煩,產(chǎn)生厭惡心理。漸漸的也被我們拋棄了。
?
9. 隨機(jī)投票地址
?
該方法, 讓每一個(gè)訪問(wèn)頁(yè)面的用戶(hù)得到一個(gè)隨機(jī)唯一的KEY,通過(guò)這個(gè)KEY,生成一個(gè)投票地址,該地址只能訪問(wèn)一次,使用過(guò)后便作廢。
?
可惜,指定的KEY的內(nèi)容,我目前是采用的sessionid+ip+隨機(jī)數(shù) 生成的MD5碼,而sessionid和ip在上面的內(nèi)容都提到,是可以銷(xiāo)毀和篡改的。這樣的方式,也不過(guò)是在ip限制和session限制無(wú)效時(shí)候的垂死掙扎。
?
10. 填寫(xiě)信息
?
投票時(shí),讓游客填寫(xiě)身份證,姓名,手機(jī)號(hào)碼等可以表示一個(gè)人身份的信息,來(lái)進(jìn)行唯一性驗(yàn)證。不過(guò),身份證你知道格式,姓名隨便填,手機(jī)號(hào)碼隨便填寫(xiě),也是沒(méi)辦法限制的。反而讓正常投票的人覺(jué)得麻煩。
?
11. 投票碼/排號(hào)系統(tǒng)
?
投票前,用戶(hù)都需要在其他頁(yè)面/郵箱先獲取到一個(gè)唯一投票的編碼/卷,使用一次作廢。不過(guò),如何驗(yàn)證‘人’的唯一呢,如果有用戶(hù),他的郵箱足夠多,是不是就可以無(wú)限獲取投票碼呢。
?
對(duì)!所以,這也只是治標(biāo)不治本的方法了。不過(guò),至少,這個(gè)方式也會(huì)讓刷票的人覺(jué)得很麻煩。但是同時(shí),也會(huì)讓正常投票的人覺(jué)得不方便。不過(guò),能夠讓刷票黨,刷得不是那么痛快,也算是有用了。
?
12. 人民幣投票
?
虎,這樣最好,不管是發(fā)短信,打電話(huà),還是支付寶,一票一元人民幣,你如果是足夠舍得,當(dāng)然,隨便你投,隨便你刷,咱也樂(lè)意不是。通過(guò)支付接口的結(jié)合,作弊是相當(dāng)難的了。
?
不過(guò),公平性有待考究,畢竟不是所有人的支持者都有錢(qián),都舍得花錢(qián),可能讓好的作品因?yàn)椤F’而得不到票數(shù),這是在咱公平、民主的社會(huì)中,是不提倡的!
?
總結(jié):小編覺(jué)得目前最有效的只能是人民幣投票了,可以很好的限制刷票行為。
轉(zhuǎn)載于:https://www.cnblogs.com/lampbrotherIT/p/5710383.html
總結(jié)
以上是生活随笔為你收集整理的PHP教程-防止网站被刷票的小技巧的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: template_1
- 下一篇: apache 配置rewrite模块,U