Linux學習總結(三十六)lamp之配置防盜鏈
- referer,中文釋義為來源,也就是在說網站從哪裏訪問過來,在訪問日誌裏,它指的是不同網站之間的跳轉鏈接信息。也就是跳轉源的網址。
雖然直接在瀏覽器輸入某個站點,跟從其他網站打開該網站,我們感受到的效果沒有差別,但是服務器端會記錄一個跳轉信息,他就是一個referer,如果沒有經過跳轉,則是一個空的referer。這樣我們統計該referer信息,就能統計出某個網站對於我們網站的流量貢獻。 - 防盜鏈機制就是通過referer的控制,拒絕跳轉訪問我們自己認為的稀缺資源。比如,淘寶網商之間,既有互相打廣告的合作,又有對市場份額的競爭。這時我們可以把我們網站的主頁,掛在其他店鋪,但是我又不允許其他店鋪直接鏈接我辛苦拍來的產品照片,(這個鏈接很容易獲取)就可以針對該圖片做一個防盜鏈。
配置虛擬主機為下面的樣子。為了節省空間,看起來有清晰,刪掉了之前的配置。<VirtualHost *:80> DocumentRoot "/data/wwwroot/www.123.com" ServerName www.123.com ServerAlias 123.com <Directory /data/wwwroot/www.123.com> SetEnvIfNoCase Referer "http://www.123.com" local_ref SetEnvIfNoCase Referer "http://123.com" local_ref SetEnvIfNoCase Referer "^$" local_ref <filesmatch "\.(txt|doc|mp3|zip|rar|jpg|gif)"> Order Allow,Deny Allow from env=local_ref </filesmatch> </Directory> </VirtualHost>
curl -e "http://www.aminglinux.com/123.html" 自定義referer,註意該referer的格式
針對php文件和圖片我們分別作帶referer和不帶referer的測試:curl -x127.0.0.1:80 123.com/admin.php -I
curl -x127.0.0.1:80 -e "http://www.baidu.com" 123.com/admin.php -I
curl -x127.0.0.1:80 123.com/images/1.jpg -I
curl -x127.0.0.1:80 -e "http://www.baidu.com" 123.com/images/1.jpg -I
二 限制ip訪問
對於一些比較重要的網站,除了我們前面提到的使用用戶認證限制訪問之外,還可以通過限制訪問ip實現訪問控制。比如涉及後臺的訪問,我們可以只開放內網ip或這極少數ip。我們可以指定限制訪問的目錄或者是某類文件。
訪問控制Directory
核心配置文件內容
<Directory /data/wwwroot/www.123.com/admin/>
Order deny,allow
Deny from all
Allow from 127.0.0.1
</Directory>
-t graceful 後,我們分別用127.0.0.1和本機ens33 ip 192.168.226.130進行測試curl -x127.0.0.1:80 123.com/admin/admin.php -I
curl -x192.168.226.130:80 123.com/admin/admin.php -I
curl -x192.168.226.130:80 123.com/admin.php -I
訪問控制FilesMatch
核心配置文件內容
<Directory /data/wwwroot/www.123.com>
<FilesMatch "admin.php(.*)">
Order deny,allow
Deny from all
Allow from 127.0.0.1
</FilesMatch>
</Directory>
-t graceful 後繼續測試curl -x127.0.0.1:80 123.com/admin.php -I
curl -x192.168.226.130:80 123.com/admin.php -I
curl -x192.168.226.130:80 123.com/345.php -I
filematch 匹配amin.php 字段,包含該字段則只允許127.0.0.1這個ip訪問。
最後總結:
我們發現防盜鏈和後面的訪問控制 order 這一行有區別。 防盜鏈中是這樣的,Order Allow,Deny 意思先執行允許,再執行拒絕。先允許所有的訪問,再拒絕filematch匹配的文件的帶refer訪問。 訪問控制中是這樣的,Order deny,allow 意思是針對目錄或者文件,先拒絕所有ip訪問,再放行指定ip。
Linux學習總結(三十六)lamp之配置防盜鏈