2014-07-17 105 views
0

假設我想禁止訪問整個域名(+所有包含的子域)的特定IP地址。起初,我開始與下面的代碼段以下行添加到.htaccess文件:什麼是限制IP地址的最佳方式?

$info = 'Order Deny,Allow 
Deny from' . IPtoBlock(); 

if (getIP()){ 
    $htaccess = fopen('.htaccess', 'r+'); 
    fwrite($htaccess, $info); 
    fclose($htaccess); 
} 

但它是更相關的用戶重定向到別的東西?畢竟,儘管立即重定向,他仍然可以向服務器發出請求。

$deny = array('192.168.1.0', '192.168.1.1', '192.168.1.2'); 
if (in_array ($_SERVER['REMOTE_ADDR'], $deny)) { 
    header("location: http://www.google.com/"); 
} 

或者乾脆殺掉頁面?

$deny = array('192.168.1.0', '192.168.1.1', '192.168.1.2'); 
if (in_array ($_SERVER['REMOTE_ADDR'], $deny)) { 
    die('Access restricted'); 
} 

解決此問題的最佳方法是什麼?

+0

不要在php級別執行此操作。至少在網絡服務器級別執行此操作。或者更好,在防火牆/路由器級別。如果你不想讓別人訪問你的東西,不要讓他們進入前門。 –

+0

我會堅持使用.htaccess。然後你可以用'ErrorDocument 403 forbidden.html'設計一個自定義的403頁面。但是,如果你只想向他們展示一個錯誤,如果他們有足夠的危險來禁止整個網站,也許他們是危險的,以禁止在整個網絡層面(udp,tcp等)。 –

+0

這是有道理的,但我並不總是控制服務器的人,我想確保某些頁面不公開。 –

回答

2

在怨婦.htaccess

Order Allow,Deny 
Allow from all 
Deny from 123.123.123.123 

用戶與IP 123.123.123.123將有403

如果你想重定向到一個特定的頁面,添加:

ErrorDocument 403 /forbidden.php 

編輯:對於從htaccess中的文本文件禁止IP,看看這裏:Ban IPs from text file using htaccess

+0

這是否意味着.htaccess上的'fwrite()'是個好主意?因爲我想使它動態而不是手動添加IP。 –

+0

看看這裏http://stackoverflow.com/questions/13008242/ban-ips-from-text-file-using-htaccess –

0

在你.htacces文件:

Order Deny,Allow 
Deny from all 
Allow from xx.xx   // This will be your local IP address 
Allow from yy.yy.yy.yy  // Your server IP address 

除了從這些方案中,沒有人可以訪問你的網站。

0

最好的辦法是在它到達你的網絡服務器之前阻止這個嘗試。這意味着阻止在像iptables(防火牆;或者如果你不能這樣做,並使用負載均衡器,然後阻止它)的級別。

相關問題