爲何要設置防盜鏈或者在什麼狀況夏會用到防盜鏈?
若是你的網站有不少漂亮的圖片,好比你網站域名 www.123.com,圖片地址爲 www.123.com/image/111.jpg,那麼其它人就能夠直接把這個地址放到他本身的網站上,他的用戶能夠直接從他網站查看這張圖片,而實際圖片是從你的網站訪問的,所產生的帶寬消耗對你沒有任何意義,應該對這些圖片限制一下,凡是在第三方站點上,嚴禁訪問你站點的圖片,如何配置呢?php
方法:
• 經過限制referer來實現防盜鏈的功能html
• 配置文件增長以下內容linux
<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>
測試:
• curl -e "http://www.aminglinux.com/123.html" 自定義referer
curl -e "http://111.com/" -x192.168.88.129:80 111.com/1.jpg -I
apache
解釋:nocase不區分大小寫
^$空referer,直接訪問圖片路徑vim
網站受到攻擊,能夠將IP加入黑名單,禁止訪問咱們的網站curl
編輯虛擬主機配置文件ide
[root@localhost ~]# vim /usr/local/apache2/conf/extra/httpd-vhosts.conf 加入下面代碼; <Directory "data/www"> AllowOverride None Options None Order allow,deny Allow from all Deny from 127.0.0.1 </Directory>
allow 容許 ;deny 禁止
order allow,deny 這裏規則看誰在前面誰在後面,和上下不要緊 。測試
不想其餘人訪問網站中特定的頁面,好比管理中心;加入下面代碼;網站
<filesmatch "(.*)admin(.*)"> Order deny,allow Deny from all Allow from 127.0.0.1 </filesmatch>
<Directory "data/www"> AllowOverride None Options None Order allow,deny Allow from all Deny from 127.0.0.1 </Directory> <filesmatch "(.*)admin(.*)"> Order deny,allow Deny from all Allow from 127.0.0.1 </filesmatch>
爲何配置文件中同時有這兩個,就容許127.0.0.1了,那麼前面的拒絕就沒有用了,是否是說白名單的優先級高於黑名單。
假如 admin.php 被兩個配置段都匹配了的話,那就選精準度更高的。
你這兩個就是下面這個filesmatch 精準度高,因此以它爲準。url
針對請求的URL去限制
這裏用到了filesmatch語法,表示匹配的意思。
<Directory /data/wwwroot/www.123.com> <FilesMatch "admin.php(.*)"> Order deny,allow Deny from all Allow from 127.0.0.1 </FilesMatch> </Directory>