PhpWind教程:Apache下如何實(shí)現(xiàn)防盜鏈、限制客戶端下載線程數(shù)、限制下載帶寬_PhpWind教程
防盜鏈原理:
http標(biāo)準(zhǔn)協(xié)議中有專門的字段記錄referer
一來可以追溯上一個(gè)入站地址是什么;
二來對于資源文件,可以跟蹤到包含顯示他的網(wǎng)頁地址是什么。
因此所有防盜鏈方法都是基于這個(gè)Referer字段,主要有兩種方法實(shí)現(xiàn):
第一種:使用FilesMatch
ServerAdmin [email protected]
DocumentRoot D:/www/www.chinahtml.com
ServerName www.aaa.com
ServerName aaa.com
盜用連接指定顯示的頁面。也可以不用此項(xiàng),這樣盜用連接也可無法使用。
ErrorDocument 404 http://www.chinahtml.com/error.html
允許www.aaa.com的網(wǎng)站使用
SetEnvIfNoCase Referer "^http://www.aaa.com" local_ref=1
允許 aaa.com 的網(wǎng)站使用
SetEnvIfNoCase Referer "^http://aaa.com" local_ref=1
定義防盜文件的擴(kuò)展名
Allow from env=local_ref 允許上面指定域名
防盜鏈設(shè)置樣本:使用正則表達(dá)式
SetEnvIf Referer "^http://(.)+\.ilinux\.cn/" local_ref=1
SetEnvIf Referer "^http://(.)+\.isql\.cn/" local_ref=1
#SetEnvIf Referer "^http://(.)+\.other\.org\.cn/" local_ref=1
SetEnvIf Request_URI "/logo(.)+" local_ref=0
Order Allow,Deny
Allow from env=local_ref
解釋:
1. 藍(lán)色部分,表示設(shè)置允許訪問的referer地址,第一行的意思為所有http協(xié)議訪問,以.ilinux.cn結(jié)尾的域名地址,第二行類似,只是換成 了.isql.cn,表問我前面的鬼符是什么,不懂得可以去翻正則表達(dá)式的研究文獻(xiàn),不想深究的可以照貓畫虎設(shè)置自己的網(wǎng)站。
2. 綠色部分,表示不在上述引用域名范圍內(nèi),但可以被放行的特例,本例中表示網(wǎng)站/目錄,所有以logo開頭的文件(用作允許其它網(wǎng)站的友情連接引用本站logo)。
3. 橙色部分是設(shè)置反盜鏈的關(guān)鍵部分,上面每一個(gè)設(shè)置都聯(lián)系到了local_ref這個(gè)環(huán)境變量,只有這個(gè)變量為1,則允許被引用,否則顯示一個(gè)X。
4. 紫色部分設(shè)置了哪些擴(kuò)展名的文件加入反盜鏈的規(guī)則。
第二種方法:
使用rewirte方式:
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://bbs.ilinux.cn/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://bbs.ilinux.cn$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.ilinux.cn/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.ilinux.cn$ [NC]
RewriteCond %{HTTP_REFERER} !^http://ilinux.cn/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://ilinux.cn$ [NC]
RewriteRule .*\.(gif|jpg|jpeg|avi|bmp|ram|rmvb|rm|rar|zip)$ http://www.ilinux.cn [R,NC]
上面的,需要Rewrite模板。所有指定的文件,如果Referer不是上面的值,將被重定向到首頁。
還有使用.htaccess 文件的方法,不過不推薦使用,影響apache性能。
寫一個(gè).htaccess
包含以下代碼:
SetEnvIfNoCase Referer "^http://google\.com/" local_ref=1
Order Allow,Deny
Allow from env=local_ref
Allow from 127.0.0.1
Allow from 123.123.123.123
如果你的網(wǎng)址是www.myst.cn就改為
SetEnvIfNoCase Referer "^http://www\.myst\.com/" local_ref=1
<FilesMatch "\.(jpg|zip|rar)">
ps:最后一個(gè)不使用區(qū)各線
Allow from 127.0.0.1 這表示允許連結(jié)主機(jī)的IP。
你要是默認(rèn)其他網(wǎng)站可以連結(jié)的話,就填入該主機(jī)IP,把上述的code儲(chǔ)存為.htaccess然后放入你安裝的目錄下即可。
注:*nix系統(tǒng)在apache配置文件里面打開使用.htaccess功能。
下面一一介紹怎么在Apache里面實(shí)現(xiàn)防盜鏈、限制客戶端下載線程數(shù),限制下載帶寬這些功能。
防盜鏈
傳統(tǒng)的防盜鏈都是通過Referer來判斷用戶來路的,不過這樣的方法對于下載工具來說形同虛設(shè),因?yàn)楝F(xiàn)在的下載工具早就能偽造Referer了。
現(xiàn)在一些流行的防盜鏈的方式都是用在瀏覽頁面的時(shí)候產(chǎn)生一個(gè)隨機(jī)驗(yàn)證碼,在用戶點(diǎn)擊連接的時(shí)候服務(wù)器會(huì)驗(yàn)證這個(gè)驗(yàn)證碼是否有效從而決定是否允許下載。或者就是用某些方法把文件實(shí)際地址進(jìn)行偽裝。不過這些都不怎么好用,下面介紹一個(gè)簡單有效的方式來實(shí)現(xiàn)防盜鏈。
其實(shí)就是用Cookie,配合Apache的URL Rewrite模塊很簡單的就能實(shí)現(xiàn)防盜鏈下載。
首先在瀏覽頁面的時(shí)候,會(huì)向客戶端發(fā)送一個(gè)特別的Cookie,例如“Site=jzxue.Com“,盜鏈而來的將沒有這個(gè)Cookie。
在Apache的httpd.conf文件里面搜索:
#LoadModule rewrite_module modules/mod_rewrite.so
把它前面的#去掉,
再找到
# Other configurati**** …
RewriteEngine On # 啟動(dòng)URL Rewrite引擎
RewriteCond %{HTTP_COOKIE} !^.*(?:Site=jzxue.Com).*$ # 對于Cookie里面沒有特殊記錄的請求進(jìn)行重定向
RewriteRule ^.*$ error.html # 將非法訪問重定向到錯(cuò)誤頁面
這樣如果一個(gè)盜鏈而來的請求將會(huì)因?yàn)闆]有特殊Cookie而被重定向到錯(cuò)誤頁面,就算實(shí)際地址暴露也不怕。至于這個(gè)Cookie的內(nèi)容是什么以及有效時(shí)間完全可以由管理員自己來設(shè)定,也就是說下載工具也沒法偽造,從而防止了服務(wù)器資源被盜鏈的危險(xiǎn)。
限制客戶端多線程下載
限制多線程現(xiàn)在需要用到一個(gè)Apache的擴(kuò)展模塊mod_limitipconn,這里是作者的官方網(wǎng)站
http://dominia.org/djao/limitipconn2.html,先下載適合自己版本的模塊文件到Apache安裝目錄下的modules目錄下面,然后在httpd.conf文件中搜索:
#LoadModule status_module modules/mod_status.so
把它前面的#去掉,再加入:
ExtendedStatus OnLoadModule limitipconn_module modules/mod_limitipconn.dll # 如果你下載的不是Win版,請把后面的文件名改為你所下載的文件名。
MaxConnPerIP 2 # 這里表示最多同時(shí)兩個(gè)線程
NoLimit html/* # 這里表示html目錄下不受限制
這樣來自同一客戶端的超過2個(gè)的線程請求將被拒絕,從而限制了客戶端的多線程下載。
限制下載帶寬
這個(gè)同樣需要擴(kuò)展模塊支持,模塊是mod_bw,在作者的官方網(wǎng)站http://ivn.cl/apache/可以下載到。同樣也是放入modules目錄下面,然后在httpd.conf文件中加入:
LoadModule bw_module modules/mod_bw.dll
再找到
# Other configurati**** …
BandwidthModule On # 啟動(dòng)帶寬限制
ForceBandwidthModule On # 啟動(dòng)帶寬限制
MaxConnection all 2000 # 最大連接數(shù)2000
Bandwidth all 200000 # 單個(gè)客戶端最大帶寬200KB
這樣限制了同時(shí)最多2000個(gè)連接數(shù),每個(gè)客戶端最大200KB的下載帶寬。
到此,我們的完美限制的HTTP下載服務(wù)器就配置完成了,重新啟動(dòng)你的Apache這些功能便能生效了。
- PhpWind教程:PHPWind forum V7.5 SP1 使用與修復(fù)說明
- PhpWind教程:PHPWind Forum V7.5 升級教程
- PHPWind7.3 升級7.3.2 圖文教程
- PhpWind教程:sitemap生成問題
- PhpWind教程:熱榜排行 for 75
- PHPwind 6.3.2升級至PHPwind 7.3.2 圖文教程
- PHPWind 7.0 升級至PHPwind 7.3.2 圖文教程
- PHPWind 7.0 升級到PHPwind v7.3 圖文教程
- PHPWind 6.3.2升級到 PHPwind v7.3 圖文教程
- PHPWind6.3.2升級PHPWind7.0說明教程
- PhpWind教程:PHPWind6.3(6.3rc、6.3) to PHPWind6.3.2升級教程
- PhpWind教程:PHPWind6.x(6.0rc、6.0) to PHPWind6.3.2升級教程
PhpWind教程教程Rss訂閱Cms教程搜索
PhpWind教程推薦
- PhpWind教程:sql_config.php文件說明_for all
- PhpWind教程:如何去掉新帖圖標(biāo)_for 7.0
- PhpWind教程:升級后,打開首頁出現(xiàn)http404錯(cuò)誤
- 解除轉(zhuǎn)換后的流量丟失之——全面Rewrite規(guī)則
- Phpwind教程:門戶首頁靜態(tài)化 for PHPwind 7.5
- PhpWind教程:哪種配置環(huán)境,速度更快
- PhpWind教程:Can't create/write to file 'C:\WINDOWS\TEMP\...MYSQL報(bào)錯(cuò)解決
- PHPWind 7.0 升級到PHPwind v7.3 圖文教程
- PhpWind教程:加上百度搜索條
- PhpWind教程:PHPWind 重定向設(shè)置教程
- 相關(guān)鏈接:
復(fù)制本頁鏈接| 搜索PhpWind教程:Apache下如何實(shí)現(xiàn)防盜鏈、限制客戶端下載線程數(shù)、限制下載帶寬
- 教程說明:
PhpWind教程-PhpWind教程:Apache下如何實(shí)現(xiàn)防盜鏈、限制客戶端下載線程數(shù)、限制下載帶寬
。