2012-02-13 89 views
1

我建立了一個用戶輸入促銷代碼的網站。沒有用戶身份驗證,但我想阻止某人通過蠻力進入促銷代碼。我不允許使用驗證碼,所以想使用IP地址阻止過程。如果X嘗試輸入促銷代碼失敗,該網站會阻止用戶的IP地址X個時間。通過阻止IP地址防止蠻力攻擊

在執行這樣的事情時是否存在明顯的問題?

+0

您是否知道netscape上有插件會在每個頁面加載中僞造ip。 – Aristos 2012-02-13 16:34:30

+0

該網站是否只是在沒有任何其他信息的情況下提示促銷代碼,或者它是否像購物車一樣,因爲您正在經歷嚮導流程,促銷代碼是流程中的一個字段? – 2012-02-13 16:59:46

+0

是啊這只是一個字段形式的促銷代碼沒有任何其他信息 – MakkyNZ 2012-02-13 17:15:13

回答

2

阻止IP地址是一個壞主意,因爲該IP地址可能是公司http代理服務器的地址。 大多數企業/機構使用網關連接到互聯網。在這種情況下,您看到的IP地址是網關,並且有N個用戶可能會在此之後。如果您因爲該網絡中的一位用戶造成滋擾而阻止了此IP地址,則基於IP的阻止也會使您的站點不可用於其他N位用戶。在一臺計算機在單個路由器後面進行NAT轉換的情況下,情況確實如此。情景2:如果說在同一個網絡中的X個用戶在Y分鐘的限制內無意中提供了不正確的代碼,那該怎麼辦?該網絡中的所有用戶再次被阻止輸入更多代碼。

您可以使用基於cookie的系統,將過去Y分鐘內的嘗試次數存儲在cookie中(或服務器端的會話變量中)並每次驗證一次。但是,這並非萬無一失,因爲知道您的實現的用戶也可以繞過這一點。

+0

在這種情況下使用cookie是一個糟糕的主意,請改用會話和真實性標記。 – CSharper 2013-01-20 06:32:36

1

如果你是IIS 7,實際上有一個擴展可以幫助你完成你正在談論的內容。

http://www.iis.net/download/DynamicIPRestrictions

這可以從試圖通過代碼來實現這個救你。至於任何「明顯的問題」,這種事情總是會阻止對Web應用程序的暴力攻擊。我想不出爲什麼一個真正的用戶需要嘗試以發佈暴力攻擊的計算機的相同方式輸入代碼。測試任何和所有可能的用戶體驗將有希望讓你擺脫任何可能出現的問題。

+0

不幸的是我沒有訪問該網站的Web服務器,我不想阻止用戶進入該網站或頁面。只需要阻止輸入促銷代碼。即驗證錯誤如「抱歉,此時不能再輸入任何促銷代碼,請稍後再試」,如果他們嘗試輸入一個 – MakkyNZ 2012-02-13 17:18:30

+0

尋找IP地址?攻擊者可以使用公共代理服務器列表輕鬆地欺騙並重復執行 。這個擴展沒有用。 – CSharper 2013-01-20 06:35:08

0

- 如果它沒有鏈接到店不用考慮如何放置一個隱藏的標籤上您的訂單這個 -

因子評分?不是100%的萬無一失,但它會阻止一些暴力。

所有你需要檢查的是,如果隱藏的標籤彈出大量的promocodes你阻止訂單。

我仍然會建議你設置某種登錄。

0

我不認爲有一種解決方案可以解決您的所有問題,但是如果您想減慢蠻力攻擊,只需在頁面加載時添加幾百毫秒的延遲就可以做很多事情!

您也可以強制他們首先訪問您輸入代碼的頁面,您可以在該會話中添加一個帶有值的隱藏字段並存儲相同的值,當用戶驗證您比較隱藏字段的代碼時到會話值。

通過這種方式,您可以強制攻擊者提出兩個請求,而不僅僅是一個,您也可以測量這兩個請求之間的時間,如果它低於設定的時間量,則可以或多或少地保證其bot。