<Directory /data/wwwroot/www.111.com>php
SetEnvIfNoCase Referer 「http://111.com」 local_refhtml
SetEnvIfNoCase Referer 「http://aaa.com」 local_reflinux
SetEnvIfNoCase Referer 「^$」 local_refapache
<filesmatch 「.(txt|doc|mp3|zip|rar|jpg|gif|png)」>vim
Order Allow,Deny瀏覽器
Allow from env=local_refcurl
</filesmatch>測試
</Directory>網站
防盜鏈:通俗來講,就是不讓別人盜用你網站上的資源。url
打開虛擬主機配置文件 vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf,增長內容以下,保存退出
SetEnvIfNoCase Referer 「http://111.com」 local_ref和SetEnvIfNoCase Referer 「aaa.com」 local_ref,定義白名單;SetEnvIfNoCase Referer 「^$」 local_ref ,定義空的頁面的白名單(這裏先註釋掉)
<filesmatch 「.(txt|doc|mp3|zip|rar|jpg|gif|png)」>定義規則
Order Allow,Deny定義訪問控制,order用來定義訪問順序
檢查配置文件是否有語法錯誤,並從新加載配置文件
在瀏覽器中訪問111.com/qq.png,會顯示Forbidden
測試:咱們能夠在論壇發一個帖子,發帖內容就是要訪問的連接(作成超連接),而後點擊連接進行訪問,發現仍是顯示Forbidden
這時,咱們能夠打開虛擬主機配置文件,將http://ask.apelearn.com加入到白名單中
而後,再點擊帖子中的連接,就能夠訪問了
若是咱們想要直接在瀏覽器中訪問111.com/qq.png,能夠將虛擬主機配置文件中空referer行前的註釋符去掉
而後檢查配置文件是否有語法錯誤,並從新加載配置文件
這樣就能夠在瀏覽器中正常訪問了
curl測試:
用curl模擬referer,-e指定referer
查看訪問日誌
<Directory /data/wwwroot/111.com/admin/>
Order deny,allow
Deny from all
Allow from 127.0.0.1
</Directory>
打開虛擬主機配置文件,增長內容以下(紅色方框區域),保存退出
Order 定義訪問順序,先執行deny後執行allow
建立admin目錄,新建一個index.php文件,內容位121212
# mkdir admin/
# cd admin/
# touch index.php
# echo "121212" > index.php
檢查語法是否有錯誤,並從新加載配置文件
訪問測試:
curl -x127.0.0.1:80 111.com/admin/index.php -I,-x指定的是目標IP 127.0.0.1,限制的源IP也是127.0.0.1,也能夠訪問內容
改變目標IP,源IP也會改變
查看訪問日誌
在瀏覽器中訪問111.com/admin/,顯示Forbidden
<Directory /data/wwwroot/www.123.com>
<FilesMatch "admin.php(.*)">
Order deny,allow
Deny from all
Allow from 127.0.0.1
</FilesMatch>
</Directory>
訪問控制除了目錄的形式以外,也能夠去匹配連接;
相似於以上中的連接,咱們能夠用FilesMatch去匹配
打開虛擬主機配置文件,增長內容以下,保存退出
檢查語法是否有錯誤,並從新加載配置文件
作訪問測試,出現403
更改目標IP,出現404,表面容許訪問了