你是要限制外面不能访问你里面?还是要限制里面不能访问外面?? 如果,是你的内网有 N多 Web Server 要由这个网关发布到 Internet ,要限制部分用户对内网Web Server 的访问的话,建议使用 Apache 的 反向代理功能。并且修改 APACHE的配置以达到权限控制。如果你是要限制 内网用户对外网的 Web Server 的访问的话。 建议你使用代理软件。现在N多代理软件都有 黑白名单的功能。我真的看不明白你到底需要什么~~~~
我是限制外面用户访问里面,我现在用APACHE上用PHP 做的一个<?phpinclude "./include/db.inc.php"; include "./include/proxy.inc.php"; //get the information log into the database$remote_ipaddr=$_SERVER[REMOTE_ADDR]; $request_hostname=$_SERVER[SERVER_NAME]; $request_file=$_SERVER[REDIRECT_URL]; $request_time=time(); $request_success=""; $status=true; $tablename="log"; $url=$request_hostname;//decide whether forbid the request $sql_role="select * from filter"; $dbo_role=new database(); $result_role=$dbo_role->query_db($sql_role); $array_role=mysql_fetch_array($result_role); $num=$dbo_role->record_count('filter');for($i=0;$i<$num;$i++) { if($url.$request_file==$array_role[filter_url]) { $status=false; break; } else { $array_role=mysql_fetch_array($result_role); } } if($status) { $request_success="yes"; } else { $request_success="no"; }$dbo=new database();$fieldname=array("remote_ipaddr","request_hostname","request_file","request_time","request_success"); $fieldvalue=array($remote_ipaddr,$request_hostname,$request_file,$request_time,$request_success);$dbo->insert_record($fieldname,$fieldvalue,$tablename);if($status) { if($_SERVER[REDIRECT_URL]!="") { $url="http://".$request_hostname.$_SERVER[REDIRECT_URL]; } else { $url="http://".$request_hostname; } $handle = fopen ($url, "rb"); if(!$handle) { echo "your request page is not exist!!!!"; exit(); } $contents = ""; do { $data = fread($handle, 8192);
我个人觉得这个用程序过滤很不可靠,这样第一个要在所有程序中都要加上这一段,很影响效率,而且也容易出问题.
如果是一些比较简单的过滤,可以在apache里面设置
1、如果是,转向别的域名或者拒绝连接。
2、如果不在,那么就要检查内容,如果网站内容中有被禁止的关键字存在,那么也拒绝连接,将该网站加入黑名单(可先作为待管理员检查记录)
iptables 做ip过滤比较好。也可以结合起来过滤一个网段。
如果,是你的内网有 N多 Web Server 要由这个网关发布到 Internet ,要限制部分用户对内网Web Server 的访问的话,建议使用 Apache 的 反向代理功能。并且修改 APACHE的配置以达到权限控制。如果你是要限制 内网用户对外网的 Web Server 的访问的话。 建议你使用代理软件。现在N多代理软件都有 黑白名单的功能。我真的看不明白你到底需要什么~~~~
include "./include/proxy.inc.php";
//get the information log into the database$remote_ipaddr=$_SERVER[REMOTE_ADDR];
$request_hostname=$_SERVER[SERVER_NAME];
$request_file=$_SERVER[REDIRECT_URL];
$request_time=time();
$request_success="";
$status=true;
$tablename="log";
$url=$request_hostname;//decide whether forbid the request
$sql_role="select * from filter";
$dbo_role=new database();
$result_role=$dbo_role->query_db($sql_role);
$array_role=mysql_fetch_array($result_role);
$num=$dbo_role->record_count('filter');for($i=0;$i<$num;$i++)
{
if($url.$request_file==$array_role[filter_url])
{
$status=false;
break;
}
else
{
$array_role=mysql_fetch_array($result_role);
}
}
if($status)
{
$request_success="yes";
}
else
{
$request_success="no";
}$dbo=new database();$fieldname=array("remote_ipaddr","request_hostname","request_file","request_time","request_success");
$fieldvalue=array($remote_ipaddr,$request_hostname,$request_file,$request_time,$request_success);$dbo->insert_record($fieldname,$fieldvalue,$tablename);if($status)
{
if($_SERVER[REDIRECT_URL]!="")
{
$url="http://".$request_hostname.$_SERVER[REDIRECT_URL];
}
else
{
$url="http://".$request_hostname;
} $handle = fopen ($url, "rb");
if(!$handle)
{
echo "your request page is not exist!!!!";
exit();
}
$contents = "";
do {
$data = fread($handle, 8192);
echo $data;
if (strlen($data) == 0) {
break;
}
$contents .= $data;} while(true);
fclose ($handle);
}
else
{
echo "<p align='center'><font size='18' color='red'>your request the page is forbided</font?</p>";
exit();
}?>