|
先說(shuō)說(shuō)正向代理的概念:
正向代理,也就是傳說(shuō)中的代理,他的工作原理就像一個(gè)跳板。簡(jiǎn)單的說(shuō),我是一個(gè)用戶(hù),我訪問(wèn)不了某網(wǎng)站,但是我能訪問(wèn)一個(gè)代理服務(wù)器。這個(gè)代理服務(wù)器呢,他能訪問(wèn)那個(gè)我不能訪問(wèn)的網(wǎng)站,于是我先連上代理服務(wù)器,告訴他我需要那個(gè)無(wú)法訪問(wèn)網(wǎng)站的內(nèi)容,代理服務(wù)器去取回來(lái),然后返回給我。從網(wǎng)站的角度,只在代理服務(wù)器來(lái)取內(nèi)容的時(shí)候有一次記錄,有時(shí)候并不知道是用戶(hù)的請(qǐng)求,也隱藏了用戶(hù)的資料,這取決于代理告不告訴網(wǎng)站。
結(jié)論就是,正向代理是一個(gè)位于客戶(hù)端和原始服務(wù)器(origin server)之間的服務(wù)器,為了從原始服務(wù)器取得內(nèi)容,客戶(hù)端向代理發(fā)送一個(gè)請(qǐng)求并指定目標(biāo)(原始服務(wù)器),然后代理向原始服務(wù)器轉(zhuǎn)交請(qǐng)求并將獲得的內(nèi)容返回給客戶(hù)端。客戶(hù)端必須要進(jìn)行一些特別的設(shè)置才能使用正向代理。
那么反向代理的概念呢?
比如用戶(hù)訪問(wèn) http://www.nowamagic.NET/librarys/veda 這個(gè)頁(yè)面,但www.nowamagic.NET實(shí)際上并不存在這個(gè)頁(yè)面,他是偷偷從另外一臺(tái)服務(wù)器上取回來(lái),然后作為自己的內(nèi)容吐給用戶(hù)。
但用戶(hù)并不知情,這很正常,用戶(hù)一般都很笨。這里所提到的 www.nowamagic.NET 這個(gè)域名對(duì)應(yīng)的服務(wù)器就設(shè)置了反向代理功能。
結(jié)論就是反向代理正好相反,對(duì)于客戶(hù)端而言它就像是原始服務(wù)器,并且客戶(hù)端不需要進(jìn)行任何特別的設(shè)置。客戶(hù)端向反向代理 的命名空間(name-space)中的內(nèi)容發(fā)送普通請(qǐng)求,接著反向代理將判斷向何處(原始服務(wù)器)轉(zhuǎn)交請(qǐng)求,并將獲得的內(nèi)容返回給客戶(hù)端,就像這些內(nèi)容原本就是它自己的一樣。
惡意反向代理的危害
網(wǎng)站被惡意反向代理有什么危害呢?這里列舉一下:
•首先肯定會(huì)占用服務(wù)器資源,網(wǎng)站打開(kāi)速度受影響。
•其次,別人通過(guò)代理盜用你的網(wǎng)站數(shù)據(jù),對(duì)用戶(hù)與不是那么智能的搜索引擎而言,相當(dāng)于建了一個(gè)與你一模一樣的站點(diǎn),那么很有可能你的站點(diǎn)會(huì)進(jìn)搜索引擎沙箱,甚至被降權(quán)。
•如果被惡意代理的頁(yè)面,還掛有你的聯(lián)盟廣告(比如Adsense),這就十分危險(xiǎn)了,如果有人點(diǎn)擊了上面的廣告,很容易被Adsense封號(hào)。
•還有很多危害,讀者可以自行腦補(bǔ)……
js 級(jí)別的解決方案
復(fù)制代碼 代碼如下:
<script type="text/Javascript">
if (document.domain != 'nowamagic.NET' && document.domain != 'www.nowamagic.NET'){
window.location.href='http://www.nowamagic.NET/';
}
</script>
腳本很簡(jiǎn)單,如果地址欄中的網(wǎng)址不是 nowamagic.NET 和 www.nowamagic.NET 中的任何一個(gè),那么就把地址欄轉(zhuǎn)向 http://www.nowamagic.NET/ 。這段代碼同樣可以避免被人使用反向代理技術(shù)“偽造”一個(gè)跟自己一模一樣的網(wǎng)站。
題外話:如何防止網(wǎng)站被iframe嵌入。有些人用iframe做了個(gè)框架,把我們網(wǎng)站嵌入其中,訪客來(lái)瀏覽的時(shí)候,好像是在瀏覽他自己的網(wǎng)站一樣,那么如何解決呢?以下方法可破:
復(fù)制代碼 代碼如下:
<script type="text/Javascript">
<!--
if (top.location != self.location)top.location=self.location;
// -->
</script>
php 級(jí)別的解決方案
js 級(jí)別的解決方案雖然能夠讓惡意代理頁(yè)面跳回來(lái),但是對(duì)搜索引擎不怎么友好。下面是服務(wù)器端(php)的解決方案,代碼比較簡(jiǎn)單,就不多說(shuō)了。
復(fù)制代碼 代碼如下:
$proxy_rs = $this -> proxy_filter();
if( $proxy_rs != 'nowamagic.NET' || $proxy_rs != 'www.nowamagic.NET' )
{
echo '非法反向代理訪問(wèn)';
//header('Location: http://www.nowamagic.NET/');
exit;
}
public function proxy_filter()
{
/*
$svrUrl = 'http://' . $_SERVER['SERVER_NAME'].$_SERVER["php_SELF"];
if (!empty($_SERVER["QUERY_STRING"]))
{
$svrUrl .= "?".$_SERVER["QUERY_STRING"];
}
return $svrUrl;
*/
return $_SERVER['SERVER_NAME'];
}
htaccess 級(jí)別的解決方案
.htaccess
復(fù)制代碼 代碼如下:
RewriteEngine On
RewriteBase /
php_value auto_append_file proxy.php
proxy.php
復(fù)制代碼 代碼如下:
<?php
$f = getenv("HTTP_X_FORWARDED_FOR");
$server = getenv("HTTP_HOST");
if (($f!="")&&($server!="nowamagic.NET")&&($server!="www.nowamagic.NET")){
echo '本服務(wù)器禁止惡意反向代理!';
}
?>
這個(gè)由于我網(wǎng)站的特殊性,沒(méi)試驗(yàn)過(guò),但是網(wǎng)上常用這種方法。
Apache httpd.conf 級(jí)別的解決方案
這個(gè) Apache 上如何禁止我還沒(méi)搗鼓出來(lái), Nginx 倒可以,但是我用的是 Apache,如果你知道,請(qǐng)告訴我下~
php技術(shù):如何阻止網(wǎng)站被惡意反向代理訪問(wèn)(防網(wǎng)站鏡像),轉(zhuǎn)載需保留來(lái)源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。