今天在看網站流量報表的時候, 差點以為自己眼花了... 四月份才剛開始, 怎麼訪客數已經超越了三月份整個月的記錄呢? 再仔細看, 的確是四月份的報表沒錯, 才發現 4/2 和 4/3 這兩天的流量爆增, 而且大部份都是從某些特定網站連入的... 原來, 是某些熱心的網友, 把小弟的文章轉貼到別人的板板裡了.

雖然很高興能讓更多網友享用本站的資源, 可惜這個小站對外頻寬並不大, 短短兩天 700MB 的傳輸量對本站來說是沉重了些, 所以本站的部份檔案 (.jpg, .gif, .png, .wma, .mrm) 已禁止從外部網頁連入, 想要下載相關檔案的朋友, 請直接連入本站進行下載, 3Q~~

順便把 apache http server 防止盜連的方法記載下來, 有興趣的網友也可以參考看看:


方法: 在 .htaccess 或 httpd.conf 中, 輸入以下敘述:

SetEnvIfNoCase Referer "^http://your.domain.name.tw/" ref=1
SetEnvIfNoCase Referer "^http://202.43.196.230/" ref=1

<FilesMatch ".(jpg|gif|png|wma|mrm)$">

Order allow,deny
Allow from env=ref
Allow from 127.0.0.1

</FilesMatch>

其中, 第二行的 http://202.43.196.230/ 是為了讓 Yahoo! 奇摩的『庫存網頁』能順利參照到限制的檔案, 如果您想開放更多的搜尋引擎庫存網頁可以參照進來, 請從 Log 檔中找出相關位址, 依此類推.


【教學】避免網站內容被人盜連
註:以下說明對於WIN+IIS架站的人,是無效的,不要一直問我為什麼無效...@@

以下是以UNIX(FREEBSD..LINUX等)+APACHE架站的人適用
只要設定1次,就不需再去設別的資料,
你也不需要1個1個去擋盜連來源的IP,這樣開站豈不是太累人了???
一天到晚要去檢查LOG...@@

首先在你的網站根目錄下開個.htaccess這個檔案,裡面寫下面資料:
以下是用PCZONE當例子,請換成你自己的網址
(如果你不是實體主機,沒有自己的固定IP,下面第3列的IP資料就不用去設定ㄛ)

SetEnvIfNoCase Referer "^http://www.pczone.com.tw/" local_ref=1
SetEnvIfNoCase Referer "^http://pczone.com.tw/" local_ref=1
SetEnvIfNoCase Referer "^http://202.43.85.163/" local_ref=1
<FilesMatch ".(txt|doc|gif|jpg|mp3)"> <--這邊隨你喜好自己設
Order Allow,Deny
Allow from env=local_ref
Allow from 127.0.0.1
</FilesMatch>


當你這樣寫好後,把檔案擺到網站的根目錄就OK
你網站上的檔案(凡是上面有設定到的,像TXT、DOC...)只能從站內被取用,
如果有人的來源是其它網站,因為來源IP不是你所允許的127.0.0.1主機內部,
因此在你主機空間被你設定的檔案、圖片、MP3就不會被人順利盜連了....

只要是經過你按上面步驟指名要求到的檔案
不管是GIF圖檔、影音檔、壓縮檔、程式..還是其他有的沒的..
只要你在.htaccess有設定到
全部、統統都有防止盜連的效果
這樣你的主機頻寬就不會被人給佔光或搞到流量破表被主機公司追債

只要你設定過,訪客就無法直接盜連(除非用軟體抓網站,但這應該是叫做"下載"網站檔案..)
.htaccess這9個字已經是完整的檔名,他沒有副檔名,千萬不要自己亂加副檔名,
開頭的.號代表是隱藏檔的意思!

經站友新的回報:WIN+APACHE可以使用上面的方法防止盜連

-----------------------------------------------------------------

3月30日再補充以下教學:

有人問說,如果要開放某些站台可以直接連結自己網站內的資料,該怎麼辦?

例如你想開放pczone.com.tw站上的貼圖,可以直接從自己的網站被連結使用,
那麼請在.htaccess檔案加入下面這新的3行字:

(以下這樣設定代表:除了自己網站以及PCZONE網站,其他網站仍無法盜連你站內的資料)

SetEnvIfNoCase Referer "^http://www.pczone.com.tw/" local_ref=1
SetEnvIfNoCase Referer "^http://pczone.com.tw/" local_ref=1
SetEnvIfNoCase Referer "^http://自己網站的舊資料/" local_ref=
<FilesMatch ".(txt|doc|gif|jpg|mp3)"> 
Order Allow,Deny
Allow from env=local_ref
Allow from 127.0.0.1
Allow from 202.43.85.163 <-這個IP,是PCZONE網站的固定IP,一定要打進去!
</FilesMatch>


記錄盜用請求

如 果想知道自己網站的藝術品是否被盜,可以嘗試使用同樣的偵測和環境變數來記錄可疑請求。例如,在httpd.conf檔中添加如下命令,那麼會在 /usr/local/web/apache/logs/poachers_log檔中記錄所有具有非法的Referer頭資訊的訪問請求:

代碼:

SetEnvIfNoCase Referer      "!^http://my.apache.org/" not_local_ref=1
SetEnvIfNoCase Request_URI  ".(gif|jpg)"               is_image=1
RewriteEngine  On
RewriteCond    ${ENV:not_local_ref} =1
RewriteCond    ${ENV:is_image}      =1
RewriteRule    .*                   -     [Last,Env=poach_attempt:1]
CustomLog logs/poachers_log         CLF   env=poach_attempt


在上面代碼中,頭兩行為條件設置標記(也就是沒有正確的本地Referer的圖片檔),RewriteCond檢測是否該標記被設置,然後RewriteRule設置第三個標記,最後一行使得這樣的訪問請求被記錄在特定的檔中。


重點:httpd.conf  內站台目錄的 AllowOverride 必須為 AllowOverride ALL 這樣, .htaccess  才能夠起作用



  1. Options
    表示這個目錄內能夠進行的動作,亦即是權限設定啦!主要的設定值:
  2. Indexes
    如果在此目錄下找不到『首頁檔案』時, 就顯示整個目錄下的檔案名稱,『首頁檔案』與 DirectoryIndex 設定值有關。
  • FollowSymLinks
    讓 在此目錄下的連結檔可以連結出此目錄外。 一般來說被 chroot 的程式將無法離開其目錄,也就是說預設的情況下,你在 /var/www/html 底下的連結檔只要連結到非此目錄的其他地方,則該連結檔預設是失效的。 但使用此設定即可讓連結檔有效的離開本目錄。
  • ExecCGI
    讓此目錄具有執行 CGI 程式的權限,非常重要!舉例來說,目前常見的 OpenWebMail 使用了很多的 perl 的程式, 你要讓 openwebmail 可以執行,就得要在 openwebmail 程式所在目錄 擁有 ExecCGI 的權限。注意,不要讓所有目錄均可使用 ExecCGI
  • Includes
    讓一些 Server-Side Include 程式可以運作。建議可以加上去!
  • MultiViews
    這 玩意兒有點像是多國語言的支持,與語系資料 (LanguagePriority) 有關。最常見在錯誤訊息的回報內容,在同一部主機當中, 可以依據用戶端的語系而給予不同的語言顯示呢!預設在錯誤回報訊息當中存在, 你可以檢查一下 /var/www/error/ 目錄下的資料喔!
  1. AllowOverride
    表 示是否允許額外設定檔 .htaccess 的權限複寫?我們可以在 httpd.conf 內設定好所有的權限,不過如此一來若使用者自己的個人網頁想要修改權限時將會對管理員造成困擾。因此 Apache 預設可以讓使用者以目錄底下的 .htaccess 檔案內複寫 <Directory> 內的權限設定。 這個項目則是在規定 .htaccess 可以複寫的權限類型有哪些。常見的有:
  2. ALL:全部的權限均可被複寫;
  • AuthConfig:僅有網頁認證 (帳號密碼) 可複寫;
  • Indexes:僅允許 Indexes 方面的複寫;
  • Limits:允許使用者利用 Allow, Deny 與 Order 管理可瀏覽的權限;
  • None:不可複寫,亦即 .htaccess 檔案失效去!
  1. Order
    決定是否可被瀏覽的權限設定啦!主要有兩種方式:
  2. deny,allow:以 deny 優先處理,但沒有寫入規則的則預設為 allow 喔。
  • allow,deny:以 allow 為優先處理,但沒有寫入規則的則預設為 deny 喔。
  1. 所以在預設的環境中,因為是 allow,deny 所以預設為 deny (不可瀏覽), 不過在下一行有個 Allow from all ,allow 優先處理,因此全部(all) 用戶端皆可瀏覽啦!這部份我們會在進階安全設定當中再提及低。
arrow
arrow
    全站熱搜

    kevin0523 發表在 痞客邦 留言(0) 人氣()