2009-06-25 79 views
2

正如這個傢伙的文章所述,blocking IP's via PHP非常容易。我可以使用運行PHP網站的IIS將IP列入白名單嗎?

但是,我怎樣才能做到這一點,網站範圍內,使用IIS?

這裏是我的(大)注意事項:

  1. 我沒有權限修改php.ini中。所以我不能使用auto_prepend功能。
  2. 我在Windows上使用IIS,所以我不能使用.htaccess。
  3. 我沒有任何PHP「footer」在所有腳本上被調用。實際上,很多頁面都是靜態的HTML!

有什麼辦法可以使用IIS將白名單IP?

好消息是我有一個靜態IP列表白名單,所以我不需要輕易改變它們。

回答

4

您可以在IIS中將IP地址列入白名單,這應該會爲您提供所需的結果。

  • 在IIS 6.0中,右鍵單擊您的網站並選擇屬性。
  • 轉到目錄安全性選項卡。
  • 單擊編輯爲「IP地址和域名限制」
  • 單擊「拒絕訪問」單選按鈕。
  • 輸入您想要的任何IP地址。
2

您可以使用URL重寫器,如IIRF來做到這一點。插入規則以返回404或任何你喜歡的來自不允許的IP的請求。這將適用於任何Web應用程序平臺:PHP,Java,ASP.NET,RoR,靜態html或圖像,無論如何。

自述給出這樣一個例子:

RewriteCond %{REMOTE_ADDR} ^(?!127.0.0.1)([0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3})(.*)$ 
RewriteRule ^/(?!redirected.htm)(.*)$  /redirected.htm 

和它說:

上述條件評估爲真時,服務器變量「REMOTE_ADDR」的計算結果爲,其是IP地址NOT 127.0.0.1。 ?!是一個零寬度的負向預測,並且正則表達式末尾的(。*)用於捕獲有時出現在該變量中的垃圾。條件之後的規則說,對於任何不是「redirected.htm」的URL,都將其映射到「redirected.htm」。這可以防止無盡的重寫。 (你也可以用[L]修飾符標誌防止無限重寫)。

這RewriteCond + RewriteRule重定向任何外部發起的請求到IIS服務器。對於一組特定的白名單IP,您可以做類似的事情。

IIRF是用C語言編寫的ISAPI過濾器,在哲學上與mod_rewrite類似。它適用於IIS5,6或7。您需要管理員權限才能設置它。你不需要「編程」,但是有一個與.htaccess語法相似的ini文件(專門用於mod_rewrite規則)。

IIRF是免費且開源的。

相關問題