Board logo

標題: Apache 防盜連說明 [列印本頁]

作者: Linux0911    時間: 2007-5-12 01:49 PM     標題: Apache 防盜連說明

from: http://www.discuz.net/thread-462466-1-1.html

Apache 防盜連說明

Apache 防盜連說明
最近,大家都比較關心防盜連的問題,擔心安裝了 SupeSite/X-Space 之後,開通博客的朋友多了
他們上傳的圖片被盜連會造成伺服器無謂的負擔,現在我給大家講解一下如何利用 Apache 本身來防盜連 :)

首先,找到您的 apache 設置文件,
一般情況下在 /usr/local/apache/conf/httpd.conf
或者 apache 2.2 的 /usr/local/apache2/conf/extra/httpd-vhost.conf
您可以酌情找到自己的 conf 文件,windows 和 freebsd 下也一樣,然後找到類似如下內容
引用:
這個是帶 rewrite 的

<VirtualHost *:80>
    DocumentRoot /home/www
    ServerName www.yourdomin.com
   <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteRule ^/supesite/([0-9]+)/spacelist(.*)$ /supesite/index.php?$1/action_spacelist$2
    RewriteRule ^/supesite/([0-9]+)/viewspace_(.+)$ /supesite/index.php?$1/action_viewspace_itemid_$2
    RewriteRule ^/supesite/([0-9]+)/viewbbs_(.+)$ /supesite/index.php?$1/action_viewbbs_tid_$2
    RewriteRule ^/supesite/([0-9]+)/(.*)$ /supesite/index.php?$1/$2
    RewriteRule ^/supesite/([0-9]+)$ /supesite/index.php?$1
    RewriteRule ^/supesite/action_(.+)$ /supesite/index.php?action_$1
    RewriteRule ^/supesite/category_(.+)$ /supesite/index.php?action_category_catid_$1
    RewriteRule ^/supesite/itemlist_(.+)$ /supesite/index.php?action_itemlist_catid_$1
    RewriteRule ^/supesite/viewnews_(.+)$ /supesite/index.php?action_viewnews_itemid_$1
    RewriteRule ^/supesite/viewthread_(.+)$ /supesite/index.php?action_viewthread_tid_$1
    RewriteRule ^/supesite/index([\.a-zA-Z0-9]*)$ /supesite/index.php
</IfModule>
</VirtualHost>
引用:
這個是不帶 rewrite 的

<VirtualHost *:80>
    DocumentRoot /home/www
    ServerName www.yourdomin.com
</VirtualHost>
在其中加入一段,具體內容如下:
引用:
SetEnvIfNoCase Referer "^http://www.yourdomin.com" local_ref=1
SetEnvIfNoCase Referer "^http://yourdomin.com" local_ref=1
<FilesMatch "\.(txt|doc|mp3|zip|rar|jpg|gif)">
Order Allow,Deny
Allow from env=local_ref
</FilesMatch>
其中紅色的是您的網址,如果有多個,就加多行
綠色的是您需要防盜連的檔案副檔名,中間用 | 隔開

還一種寫法,是用正則的,這種寫法在各個版本的 apache 比較通用。

寫法是
引用:
SetEnvIfNoCase Referer "^http://.*\.yourdomin\.com" local_ref=1
SetEnvIfNoCase Referer ".*\.yourdomin\.com" local_ref=1
<FilesMatch "\.(txt|doc|mp3|zip|rar|jpg|gif)">
Order Allow,Deny
Allow from env=local_ref
</FilesMatch>
其中紅色的部分有一點區別,用正則寫法,  \ 符號代表轉義,因為.本身在正則中有自己的作用。


最終改完就變成了
引用:
<VirtualHost *:80>
    DocumentRoot /home/www
    ServerName www.yourdomin.com
    SetEnvIfNoCase Referer "^http://www.yourdomin.com" local_ref=1
    SetEnvIfNoCase Referer "^http://yourdomin.com" local_ref=1
   <FilesMatch "\.(txt|doc|mp3|zip|rar|jpg|gif)">
       Order Allow,Deny
       Allow from env=local_ref
   </FilesMatch>
   <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteRule ^/supesite/([0-9]+)/spacelist(.*)$ /supesite/index.php?$1/action_spacelist$2
    RewriteRule ^/supesite/([0-9]+)/viewspace_(.+)$ /supesite/index.php?$1/action_viewspace_itemid_$2
    RewriteRule ^/supesite/([0-9]+)/viewbbs_(.+)$ /supesite/index.php?$1/action_viewbbs_tid_$2
    RewriteRule ^/supesite/([0-9]+)/(.*)$ /supesite/index.php?$1/$2
    RewriteRule ^/supesite/([0-9]+)$ /supesite/index.php?$1
    RewriteRule ^/supesite/action_(.+)$ /supesite/index.php?action_$1
    RewriteRule ^/supesite/category_(.+)$ /supesite/index.php?action_category_catid_$1
    RewriteRule ^/supesite/itemlist_(.+)$ /supesite/index.php?action_itemlist_catid_$1
    RewriteRule ^/supesite/viewnews_(.+)$ /supesite/index.php?action_viewnews_itemid_$1
    RewriteRule ^/supesite/viewthread_(.+)$ /supesite/index.php?action_viewthread_tid_$1
    RewriteRule ^/supesite/index([\.a-zA-Z0-9]*)$ /supesite/index.php
</IfModule>
</VirtualHost>
好了,之後您重新啟動 apache,至此您的盜連命運就結束了,呵呵
祝您辦站生涯愉快!!!

作者: a751115    時間: 2007-8-24 12:05 PM

如要有跟其他論壇交換logo
如何設定顯示呢???
今天發現圖片被盜連
想設定只有logo網址允許連結
麻煩教一下
感謝
作者: Linux0911    時間: 2007-8-24 08:00 PM

使用 .htaccess 檔案丟在該附件區限制的資料夾內

修改 png, gif, jpg 等檔案的盜連即可
作者: a751115    時間: 2007-8-24 08:18 PM

引用:
原帖由 Linux0911 於 2007-8-24 08:00 PM 發表
使用 .htaccess 檔案丟在該附件區限制的資料夾內

修改 png, gif, jpg 等檔案的盜連即可
可是我的logo.gif
有在其他站顯示

會不會用了就顯示不出來了
作者: Linux0911    時間: 2007-8-24 08:25 PM

.htaccess 丟在要防盜連的資料夾裡面即可

但不建議放在根目錄, 會造成所有圖示失效

如果 logo 所屬的資料夾沒放 .htaccess 就不會在其他站失效的
作者: a751115    時間: 2007-8-24 11:45 PM

複製內容到剪貼簿
代碼:
SetEnvIfNoCase Referer "^http://.*\.yourdomin\.com" local_ref=1
SetEnvIfNoCase Referer ".*\.yourdomin\.com" local_ref=1
<FilesMatch "\.(txt|doc|mp3|zip|rar|jpg|gif)">
Order Allow,Deny
Allow from env=local_ref
</FilesMatch>
只需改這段.
改成.htaccess 丟在要防盜連的資料夾裡面嗎???
作者: Linux0911    時間: 2007-8-24 11:59 PM

引用:
SetEnvIfNoCase Referer "^http://.*\.yourdomin\.com" local_ref=1
以上這段請修改為你的網址
引用:
SetEnvIfNoCase Referer ".*\.yourdomin\.com" local_ref=1
以上這段是你如果有子域名網址的時候使用, 沒有就可以刪除

自己測試一下先


在別人的站發表一下文章看看是否防盜連有效
作者: a751115    時間: 2007-8-29 12:58 PM

已經改了
放在logo位子測試
其他論壇顯示可以顯示
作者: a751115    時間: 2007-9-1 05:17 PM

請問是放檔名存成 .htaccess 嗎??
那檔名隨意打囉???
改完後放在要防盜連的資料夾理?

論壇的圖片都被複製去了
雖然不是我做的
但也是花時間找來的

作者: Linux0911    時間: 2007-9-1 05:23 PM     標題: 回覆 #9 a751115 的帖子

圖如果不是自己製作的, 最好別拿 (有版權的那種)

.htaccess (沒有檔名, 只有副檔名) 不能在 windows 下產生

不過可以使用 cmd 來產生

開始 → 執行 cmd → edit .htaccess

用滑鼠點選 file save as → 右邊是磁碟機跟資料夾目錄

看你要存在哪裡待會找得到

save 完後就去找那的檔案來編輯就好了
作者: a751115    時間: 2007-9-1 05:42 PM

我是用有人分享的圖...

執行 cmd 是DOS畫面>"<
能不能幫我用= =


有沒有鎖右鍵的那種
看到有論壇在用
無法看到網址

[ 本帖最後由 a751115 於 2007-9-1 05:47 PM 編輯 ]
作者: Linux0911    時間: 2007-9-1 05:47 PM

[attach]5383[/attach]

鎖右鍵沒甚麼用, 網路上看得到的幾乎都取得下來
作者: a751115    時間: 2007-9-1 06:03 PM

可以了~~感動@@"
謝謝
作者: 熾月    時間: 2007-9-1 07:15 PM     標題: 回覆 #12 Linux0911 的帖子

我之前問的問題
都是因為鎖右鍵
所造成的程式錯誤
真是太恐怖了

http://linux0911.no-ip.info/Discuz/thread-8462-1-4.html
http://linux0911.no-ip.info/Discuz/thread-8757-1-6.html
http://linux0911.no-ip.info/Discuz/thread-9031-1-5.html


都是因為我裝了一個鎖右鍵代碼
http://www.alan888.com/Discuz/vi ... 5k%C1%E4&page=1
作者: Linux0911    時間: 2007-9-1 08:55 PM

它那個是直接寫在 javascript 上面, 是全面性的 (有必要嗎?)

如果單就某個點去鎖是可以在那個區域加上語法的~

其實如果你想網站大家瀏覽的話就不要設太多限制

不然就自己欣賞囉~ localhost
作者: 熾月    時間: 2007-9-1 08:59 PM     標題: 回覆 #15 Linux0911 的帖子

我現在文章弄擾亂碼
還是還是被複製
作者: Linux0911    時間: 2007-9-1 09:15 PM     標題: 回覆 #16 熾月 的帖子

聽說有一種去干擾碼的程式




歡迎光臨 Linux0911 Forum (http://linux0911.no-ip.info/Discuz/) Powered by Discuz! 6.0.0