11.25 配置防盜鏈,訪問控制Directory ,訪問控制FilesMatch

設置防盜鏈

爲何要設置防盜鏈或者在什麼狀況夏會用到防盜鏈?
若是你的網站有不少漂亮的圖片,好比你網站域名 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


訪問控制directory

網站受到攻擊,能夠將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


訪問控制filesmatch

針對請求的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>
相關文章
相關標籤/搜索