2008-09-18 75 views
2

由於我不想進入的原因,我希望禁止整個公司訪問我的網站。使用gethostbyaddr()在php中檢查遠程主機名是有效的,但這會減慢頁面加載的速度。大型組織(例如hp.com或microsoft.com)通常具有IP地址塊。無論如何,我收到完整列表,或者我堅持使用緩慢的反向DNS查找?如果是這樣,我可以加快速度嗎?如何從我的網站禁止整個公司?

編輯:好吧,現在我知道我可以使用.htaccess文件來禁止範圍。現在,我如何才能弄清楚給定組織的範圍?

回答

11

怎麼樣一個.htaccess:

Deny from x.x.x.x 

如果你需要否認範圍說:192.168.0。然後你會使用

Deny from 192.168.0 

,並同樣適用於主機名:

Deny from sub.domain.tld 

,或者如果你想有一個PHP的解決方案

$ips = array('1.1.1.1', '2.2.2.2', '3.3.3.3'); 
if(in_array($_SERVER['REMOTE_ADDR'])){die();} 

有關htaccess的方法的詳細信息請參見this頁。

我們確定的範圍將是艱難,大多數公司(除非他們是大corperate)將有一個動態的IP就像你和我。
這是一個問題,我不得不處理前,最好的方法是要麼禁止的主機名,或整個範圍,例如,如果他們是在192.168.0.123然後禁止192.168.0.123,不幸的是,你會得到幾個無辜的人用任何一種方法。

+0

如果我正在閱讀OP權限,他想要根據DNS名稱(而不是IP地址)進行禁止。 – 2008-09-18 02:37:41

0

您是否有權訪問實際的服務器配置?如果是這樣,取決於服務器,你可以在配置中完成。

請參閱this有關某些可能有用的信息的線索。

2

繼續使用gethostbyaddr(),但緩存後面。你只需要每個IP地址解決一次,然後這不會是一個重大的性能問題。如果您願意,請從服務器日誌填充緩存,以便返回的用戶甚至不會遇到一次性減速。

4

如果你正在練習安全的網絡主機,那麼你有一個防火牆。用它。

大公司擁有IP地址塊,但即使是較小的公司也很少更改其IP。因此,有一種簡單的方法可以在不降低性能的情況下執行此操作:

每個月都會對日誌中的所有IP執行反向查找,然後將該公司在防火牆中使用的所有IP都視爲拒絕。

過了一段時間你會開始看到他們是否有動態地址。如果他們這樣做,那麼你可能不得不爲每個連接嘗試進行反向查找,但除非他們是一個小公司,否則不應該擔心。

1

首先在whois.net上搜索該公司。如果您知道他們只是一個域名,請執行whois查詢。否則,請按關鍵字搜索他們擁有的域。

您可以通過whois查詢找到分配給公司的主要IP範圍,然後相應地構建您的拒絕規則。

1

我知道WikiScanner允許您搜索公司或其他組織,然後列出屬於他們的IP地址範圍。舉個例子,至少根據WikiScanner的說法,這裏是所有的IP addresses belonging to Google

根據HowStuffWorks,他們使用了一種名爲「IP2Location」的東西。

2

如果您的目標是讓公司的人訪問您的網站時略微不方便,請按照上述建議操作。但是,您將無法完全確保您阻止了每次訪問,因爲他們始終可以通過代理進行訪問。如果其他公衆可以訪問,則需要擔心archive.org,搜索引擎緩存等。

可能不是您要找的答案,但它是準確的。

0

加載不應該放在網絡服務器上,你應該把它放在防火牆上。

0

請注意,使用上述技術將永遠不可能完全禁止特定公司訪問您的網站。他們仍然可以使用代理服務器或從家中查看您的網站。

如果您絕對想要控制誰有權訪問,您應該只允許通過身份驗證和授權的用戶訪問您的網站。

相關問題