2011-04-29 99 views
2

如果我被在C#中創建的.NET程序轟炸 - 因爲用戶正在批量提交我的表單上的$ _POST字段......特別是我的聯繫表單。

我不確定在.NET程序中發生的質量$_POST究竟如何,或者甚至可能是一個C++程序,我不知道。不過,我有一個想法來解決這個問題。

我的第一個想法需要$_SESSION但是......那些$_POST轟炸程序是用戶創建的句柄/接受$_SESSION?我真的不想知道,但也許有人在C#中的WebClient類的經驗知道,如果它處理$_SESSION'S或任何它是用戶正在使用。我正在考慮使用$_SESSION['submitted'] = $count;$count++;

if($_SESSION['submitted'] > 5) { 
    //display captcha or block from site 
} else { 
    $count++; 
} 

另一部分如果用戶的程序並沒有處理$ _SESSION反正是有可能,我可以禁用網站給他們?所以他們不能攻擊我的聯繫表格?

回答

2

繞過會話鎖定是微不足道的惡意用戶。只需在每次POST後刪除會話cookie,並且他們通過限制重置獲得全新的乾淨會話。

阻止此類用戶的唯一安全方法是開始限制其IP地址。將其限制爲每分鐘一定數量的連接嘗試次數,並且它們將無法提交每分鐘多少次請求。現在,如果他們可以在主機之間跳轉,那麼你遇到了更大的問題,並且應該考慮將表單移動到其他地方,以便他們得到的結果是404(直到他們注意到它移動了)。

不利的一面是,如果他們使用的是通用代理服務器或其他代理服務器,比如代理一切的AOL,那麼您也會阻止其他合法用戶。

+0

同意這一點,我們可以補充一點,您可以檢查網絡上提供的所有營銷用戶跟蹤代碼段,以獲取用戶檢測中的好主意。檢查http://panopticlick.eff.org/例如查看他們收集的所有數據,並考慮獨特的訪問者散列。 – regilero 2011-04-29 19:21:14

+0

如何限制IP地址? ATM我的新方法是將他們的IP和PHP時間插入到mysql數據庫中,並且每12小時運行一次cron作業,刪除IP超過12小時的IP。如果數據庫中有5個相同的IP,它會阻止他們與我聯繫。 – Kyle 2011-04-29 19:56:24

+0

這仍然讓他們錘擊服務器的請求。最好的地方是在防火牆上,所以這些請求甚至不會到達Apache。如果你在linux上,那麼在https://forum.openwrt.org/viewtopic.php?pid=34494上詳細說明的iptables命令,修改爲用於端口80而不是端口22,可以很好地工作。我使用與此類似的東西來阻止我的家用機器上的SSH掃描。 – 2011-04-29 20:13:04

0

那麼你可以把像一個登錄表單或認證的一些其他形式的一些安全屏障(如瀏覽器檢查等)

除此之外,唯一想我能想到的是,以阻止傳入IP,然後再次可能不是一個好主意

0

剛剛實施驗證碼怎麼樣?

0

有人可以糾正我,如果我錯了,但SESSION存儲cookie(或其他方式)的會話id(一個非常長的哈希字符串),SESSION變量存儲在服務器上。所以,即使他們處理了SESSION,他們也不能控制服務器存儲的SESSION變量。

如果我是你,我會成立CAPTCHA永遠是對...