IP分析
在PHP下做IP偵測及分析過濾
在本文一開始 ,要先來個免責聲明: 本內容是我在替學校做報修系統時,從多個網站學習組合而來,理論上可行,是否會被攻破不知~~~
今天我替學校做的報修系統,遭人閒閒沒事丟資料進去,為了避免以後的麻煩,就加上了 IP 過濾的功能,雖然這個項目是本來就預定要有的,但是是在所有測試都OK後才以 apache 的設定上 過濾。
程式碼 我是參考一些別人寫的code 加以改寫後 以functuon 的方式處理
抓取IP資訊,這似乎增加了 如果用proxy 仍可抓取正確IP
function getIP()
{
if (!empty($_SERVER[‘HTTP_CLIENT_IP’]))
return $_SERVER[‘HTTP_CLIENT_IP’];
else if (!empty($_SERVER[‘HTTP_X_FORWARDED_FOR’]))
return $_SERVER[‘HTTP_X_FORWARDED_FOR’];
else
return $_SERVER[‘REMOTE_ADDR’];
}
再來是簡單的 IP 分析,取得IP後 分割成四份,這只是簡單的方法,如果有必要可以做出 白名單 黑名單的方式,不過我不需要,以後再說
function checkIP()
{
$IP=getIP();
list($ip1, $ip2, $ip3,$ip4) = sscanf($IP,"%d.%d.%d.%d");
if($ip1==xxx && $ip2==yyy) return true; //這裡放分析條件
else return false;
}
之後再要做IP 分析的地方加入
if(checkIP()==false)
{
header('Location: falseIP.php');
exit;
}
讓只要是不允許的IP 通通倒到另一個頁面
最後說明一下
我們都知道 apache 可以做IP 過濾的功能,但是如果是只針對特定頁面的話,不易設定,而且如果是租用的server 有時無法做設定,所以還是需要用PHP做分析