2011-09-24 80 views
-1

我正在編寫一個應用程序,其中要求限制用戶可以從單個IP地址登錄的次數(作爲阻止垃圾郵件的一種方式)。 我們不能使用驗證碼出於某種原因!限制來自IP的請求數

我可以想到做這項工作的唯一方法是在數據庫中存儲從每個IP進入的請求數量。 或 要存儲具有相同信息的跟蹤cookie。

現在,第一種模式的缺點是會有太多的數據庫流量 - 應用程序將被大量的人使用。 將此信息存儲爲cookie的缺點是用戶可以再次清除廣告開始。

我需要建議,如果有可能的方式,高數據庫流量和基於cookie的跟蹤鬆綁定可以處理。

+0

好吧..所以有一個小小的國防部剛剛發生。 – Rohan

回答

0

,如果你想要得到的IP和存儲的地方,你可以使用$_SERVER['REMOTE_ADDR']獲得用戶的IP,讓喜歡你的數據庫「IP」字段和你進行查詢您的SQL來檢查IP被使用。 還有其他一些跟蹤方式,比如Flash Cookie,人們通常不知道它的存在,因此大多數人都不知道如何清除它。

+0

-1暗示閃存餅乾,他們是邪惡的。 – Clive

+0

這是一個選項,因爲有些人使用與共享互聯網相同的IP,所以你必須找到新的選項。像Flash Cookies,儘管我同意你的看法。 – Grego

+0

Brian提出了一個非常好的觀點。如果存在一個公司擁有一組靜態IP地址和NAT的情況,那麼他們的網絡中就存在這種情況 - 此IP地址記錄肯定會失敗。任何想法谷歌如何使用Gmail和其他產品?他們肯定會記錄你的知識產權並放棄cookies。但是能否有另一種方法來確保事情? – Rohan

1

你說的是「登錄」和網絡應用程序,因此你有某種會話持續somwhere。在創建這些會話時,您需要跟蹤每個IP的活動會話數量,並在達到該閾值時不分配新會話。

沒有關於您的框架/環境的更多具體信息,那是任何人都可以提供的最佳答案。

另請注意,由於NAT(網絡地址轉換),此方法因多種方式失敗。例如,我們的辦公室只有一個公共IP地址可供X百人使用。內部網絡位於私有IP空間。

+0

@Downvoter,關心評論? –

+0

是的..我想你提出了一個關於NAT的好處。看看它沒有多少連續的會話存在..它的任何特定IP的會話總數需要被限制。 – Rohan

+0

這就是......我說的。 *跟蹤每個IP的活動會話數量* –