日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

配置防盗链、 访问控制Directory 、访问控制FilesMatch

發布時間:2025/3/19 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 配置防盗链、 访问控制Directory 、访问控制FilesMatch 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2019獨角獸企業重金招聘Python工程師標準>>>

5月31日任務

11.25 配置防盜鏈
11.26 訪問控制Directory
11.27 訪問控制FilesMatch
擴展
幾種限制ip的方法?http://ask.apelearn.com/question/6519
apache 自定義header?http://ask.apelearn.com/question/830
apache的keepalive和keepalivetimeout?http://ask.apelearn.com/question/556

?

配置防盜鏈目錄概要

  • 通過限制referer來實現防盜鏈的功能
  • 配置文件增加如下內容
Directory針對目錄進行<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|png)”> //定義規則Order Allow,Deny //定義訪問控制Allow from env=local_ref </filesmatch></Directory>
  • curl -e "http://www.aminglinux.com/123.html" 自定義referer

防盜鏈

  • 防盜鏈的定義
  • 此內容不在自己服務器上,而通過技術手段,繞過別人放廣告有利益的最終頁,直接在自己的有廣告有利益的頁面上向最終用戶提供此內容。 常常是一些名不見經傳的小網站來盜取一些有實力的大網站的地址(比如一些音樂、圖片、軟件的下載地址)然后放置在自己的網站中,通過這種方法盜取大網站的空間和流量。
  • 為什么會產生盜鏈
  • 一般瀏覽有一個重要的現象就是一個完整的頁面并不是一次全部傳送到客戶端的。如果請求的是一個帶有許多圖片和其它信息的頁面,那么最先的一個Http請求被傳送回來的是這個頁面的文本,然后通過客戶端的瀏覽器對這段文本的解釋執行,發現其中還有圖片,那么客戶端的瀏覽器會再發送一條Http請求,當這個請求被處理后那么這個圖片文件會被傳送到客戶端,然后瀏覽器會將圖片安放到頁面的正確位置,就這樣一個完整的頁面也許要經過發送多條Http請求才能夠被完整的顯示。基于這樣的機制,就會產生一個問題,那就是盜鏈問題:就是一個網站中如果沒有起頁面中所說的信息,例如圖片信息,那么它完全可以將這個圖片的連接到別的網站。這樣沒有任何資源的網站利用了別的網站的資源來展示給瀏覽者,提高了自己的訪問量,而大部分瀏覽者又不會很容易地發現,這樣顯然,對于那個被利用了資源的網站是不公平的。一些不良網站為了不增加成本而擴充自己站點內容,經常盜用其他網站的鏈接。一方面損害了原網站的合法利益,另一方面又加重了服務器的負擔。

配置防盜鏈

  • 打開虛擬主機配置文件
  • 需要添加的配置文件
Directory針對目錄進行<Directory /data/wwwroot/www.111.com> //用于定義作用于哪個目錄,配置防盜鏈,就是定義本站點SetEnvIfNoCase Referer “http://www.111.com” local_ref //定義Referer白名單SetEnvIfNoCase Referer “http://aaa.com” local_ref //定義白名單SetEnvIfNoCase Referer “^$” local_ref //定義空的Referer頁面為白名單<filesmatch “.(txt|doc|mp3|zip|rar|jpg|gif|png)”> //定義規則,這里的filesmatch中f 和 m 可以大寫可以小寫Order Allow,Deny //定義訪問控制,order用來定義訪問順序Allow from env=local_ref </filesmatch></Directory>
  • 未更改前的配置文件
<VirtualHost *:80>DocumentRoot "/data/wwwroot/abc.com"ServerName abc.comServerAlias www.abc.com www.123.comErrorLog "logs/abc.com-error_log"CustomLog "logs/abc.com-access_log" common </VirtualHost><VirtualHost *:80>DocumentRoot "/data/wwwroot/111.com"ServerName 111.comServerAlias www.example.com 2111.com.cn# <Directory /data/wwwroot/111.com> # <FilesMatch 123.php># AllowOverride AuthConfig# AuthName "111.com user auth"# AuthType Basic# AuthUserFile /data/.htpasswd# require valid-user# </FilesMatch>#</Directory><IfModule mod_rewrite.c>RewriteEngine onRewriteCond %{HTTP_HOST} !^111.com$RewriteRule ^/(.*)$ http://111.com/$1 [R=301,L] </IfModule> <IfModule mod_expires.c>ExpiresActive onExpiresByType image/gif "access plus 1 days"ExpiresByType image/jpeg "access plus 24 hours"ExpiresByType image/png "access plus 24 hours"ExpiresByType text/css "now plus 2 hour"ExpiresByType application/x-javascript "now plus 2 hours"ExpiresByType application/javascript "now plus 2 hours"ExpiresByType application/x-shockwave-flash "now plus 2 hours"ExpiresDefault "now plus 0 min" </IfModule><Directory /data/wwwroot/www.111.com>SetEnvIfNoCase Referer "http://www.111.com" local_refSetEnvIfNoCase Referer "http://111.com" local_ref# SetEnvIfNoCase Referer "^$" local_ref<filesmatch "\.(txt|doc|mp3|zip|rar|jpg|gif)">Order Allow,DenyAllow from env=local_ref</filesmatch></Directory>ErrorLog "logs/111.com-error_log" SetEnvIf Request_URI ".*\.gif$" imgSetEnvIf Request_URI ".*\.jpg$" imgSetEnvIf Request_URI ".*\.png$" imgSetEnvIf Request_URI ".*\.bmp$" imgSetEnvIf Request_URI ".*\.swf$" imgSetEnvIf Request_URI ".*\.js$" imgSetEnvIf Request_URI ".*\.css$" img CustomLog "|/usr/local/apache2.4/bin/rotatelogs -l logs/123.com-access_%Y%m%d.log 86400" combined env=!img </VirtualHost>
  • 更改后的配置文件,并將空的Referer頁面為白名單 注釋掉
    • 將# SetEnvIfNoCase Referer "^$" local_ref
[root@yong-02 ~]# vim /usr/local/apache2/conf/extra/httpd-vhosts.conf<VirtualHost *:80>DocumentRoot "/data/wwwroot/abc.com"ServerName abc.comServerAlias www.abc.com www.123.comErrorLog "logs/abc.com-error_log"CustomLog "logs/abc.com-access_log" common </VirtualHost><VirtualHost *:80>DocumentRoot "/data/wwwroot/111.com"ServerName 111.comServerAlias www.example.com 2111.com.cn# <Directory /data/wwwroot/111.com> # <FilesMatch 123.php># AllowOverride AuthConfig# AuthName "111.com user auth"# AuthType Basic# AuthUserFile /data/.htpasswd# require valid-user# </FilesMatch>#</Directory><Directory /data/wwwroot/111.com>SetEnvIfNoCase Referer "http://www.111.com" local_refSetEnvIfNoCase Referer "http://aaa.com" local_ref# SetEnvIfNoCase Referer "^$" local_ref<filesmatch "\.(txt|doc|mp3|zip|rar|jpg|gif|png)">Order Allow,DenyAllow from env=local_ref</filesmatch></Directory>ErrorLog "logs/111.com-error_log" SetEnvIf Request_URI ".*\.gif$" imgSetEnvIf Request_URI ".*\.jpg$" imgSetEnvIf Request_URI ".*\.png$" imgSetEnvIf Request_URI ".*\.bmp$" imgSetEnvIf Request_URI ".*\.swf$" imgSetEnvIf Request_URI ".*\.js$" imgSetEnvIf Request_URI ".*\.css$" img CustomLog "|/usr/local/apache2/bin/rotatelogs -l logs/123.com-access_%Y%m%d.log 86400" combined env=!img </VirtualHost>
  • 檢查配置文件是否存在語法錯誤,并重新加載配置文件
[root@yong-02 111.com]# /usr/local/apache2/bin/apachectl -t Syntax OK [root@yong-02 111.com]# /usr/local/apache2/bin/apachectl graceful
  • 用瀏覽器訪問111.com/images/baidu.png圖片,會顯示Forbidden

  • 這時在論壇創建一個帖子,將連接放進帖子中,再去訪問,會看到還是Forbidden,這是因為Referer是ask.apelearn.com
  • 若是想在帖子中正常訪問圖片,可以將ask.apelearn.com加入到白名單中
SetEnvIfNoCase Referer "http://ask.apelearn.com" local_ref
  • 然后檢查配置文件是否存在語法錯誤,并重新加載配置文件
[root@yong-02 111.com]# /usr/local/apache2/bin/apachectl -t Syntax OK [root@yong-02 111.com]# /usr/local/apache2/bin/apachectl graceful
  • 這時再來在帖子中訪問圖片,會看到正常訪問

  • 若是想要直接就可以在瀏覽器中訪問,則只需要去虛擬主機配置文件中打開空的Referer
[root@yong-02 ~]# vim /usr/local/apache2/conf/extra/httpd-vhosts.conf更改前,去除前面的注釋符# SetEnvIfNoCase Referer "^$" local_ref 更改后 SetEnvIfNoCase Referer "^$" local_ref
  • 然后檢查配置文件語法錯誤,并重啟配置文件
  • 這時候在瀏覽器中訪問訪問圖片就會正常顯示

用curl測試

  • 用curl命令去訪問圖片
[root@yong-02 111.com]# curl -x127.0.0.1:80 111.com/images/baidu.png -I HTTP/1.1 200 OK Date: Thu, 31 May 2018 15:01:30 GMT Server: Apache/2.4.33 (Unix) PHP/7.1.6 Last-Modified: Wed, 30 May 2018 13:46:34 GMT ETag: "a46d-56d6c9435c280" Accept-Ranges: bytes Content-Length: 42093 Content-Type: image/png
  • 當然也可以用curl去模擬Referer,使用 -e 參數指定Referer
[root@yong-02 111.com]# curl -e "http://www.qq.com/123.txt" -x127.0.0.1:80 111.com/images/baidu.png -I HTTP/1.1 403 Forbidden Date: Thu, 31 May 2018 15:04:21 GMT Server: Apache/2.4.33 (Unix) PHP/7.1.6 Content-Type: text/html; charset=iso-8859-1[root@yong-02 111.com]# curl -e "http://111.com/123.php" -x127.0.0.1:80 111.com/images/baidu.png -I HTTP/1.1 200 OK Date: Thu, 31 May 2018 15:04:41 GMT Server: Apache/2.4.33 (Unix) PHP/7.1.6 Last-Modified: Wed, 30 May 2018 13:46:34 GMT ETag: "a46d-56d6c9435c280" Accept-Ranges: bytes Content-Length: 42093 Content-Type: image/png
  • curl -e 格式
    • curl -e "http://"

?

訪問控制 – Directory目錄概要

  • 核心配置文件內容
<Directory /data/wwwroot/111.com/admin/>Order deny,allowDeny from allAllow from 127.0.0.1</Directory>
  • curl測試狀態碼為403則被限制訪問了

訪問控制

  • 打開虛擬主機配置文件
  • Order,用來定義順序,是先deny,還是allow
    • 若是先deny,就先執行deny的語句
    • 若是先allow,就先執行allow的語句
    • 特殊性:
      • 不管IP是否匹配到,它都會從頭到尾執行完
[root@yong-02 ~]# vim /usr/local/apache2/conf/extra/httpd-vhosts.conf將代碼放在防盜鏈代碼上面,防止沖突<Directory /data/wwwroot/111.com/admin/>Order deny,allowDeny from allAllow from 127.0.0.1</Directory>
  • 創建一個admin目錄,并新建一個index.php文件,內容為121212
[root@yong-02 111.com]# mkdir admin [root@yong-02 111.com]# cd admin/ [root@yong-02 admin]# touch index.php [root@yong-02 admin]# echo "12113414123">index.php [root@yong-02 admin]# cat index.php 12113414123
  • 檢查語法錯誤,并重新加載配置文件
[root@yong-02 admin]# /usr/local/apache2/bin/apachectl -t Syntax OK [root@yong-02 admin]# /usr/local/apache2/bin/apachectl graceful
  • 限制的原 IP
  • curl -x127.0.0.1:80 111.com/admin/index.php -I
    • 127.0.0.1是目標 IP ,而要訪問的IP,也要使用127.0.0.1去訪問,最終就是目標IP和原IP是同一個IP,自己和自己通信,限制IP是 原 IP
    • -x指定的是目標IP
[root@yong-02 admin]# curl -x127.0.0.1:80 111.com/admin/index.php -I HTTP/1.1 200 OK Date: Thu, 31 May 2018 15:21:22 GMT Server: Apache/2.4.33 (Unix) PHP/7.1.6 X-Powered-By: PHP/7.1.6 Content-Type: text/html; charset=UTF-8
  • 在更換目標IP,那么原IP也會跟著變化
[root@yong-02 admin]# curl -x192.168.180.135:80 111.com/admin/index.php -I HTTP/1.1 403 Forbidden Date: Thu, 31 May 2018 15:24:48 GMT Server: Apache/2.4.33 (Unix) PHP/7.1.6 Content-Type: text/html; charset=iso-8859-1
  • 瀏覽器訪問111.com/admin/index.php會顯示forbidden

  • 訪問控制是用目錄的形式來做的,首先規定一個目錄訪問到哪里去的(目錄必須使用絕對路徑),然后是Oerder,控制的對象就是來源IP

訪問控制 – FilesMatch目錄概要

  • 核心配置文件內容
<Directory /data/wwwroot/www.123.com> //功能作用目錄<FilesMatch "admin.php(.*)"> //針對admin.php(.*)這個類型的文件,進行控制Order deny,allowDeny from allAllow from 127.0.0.1</FilesMatch> </Directory>

訪問控制 – FilesMatch

  • 訪問控制,除了目錄形式,還是文件名去匹配(或鏈接)
  • 打開虛擬主機配置文件
    • 首先定義一個Directory,然后在下面在定義一個FilesMatch
[root@yong-02 admin]# vim /usr/local/apache2/conf/extra/httpd-vhosts.conf <Directory /data/wwwroot/111.com><FilesMatch "admin.php(.*)">Order deny,allowDeny from allAllow from 127.0.0.1</FilesMatch></Directory>
  • 檢查語法錯誤,并重新加載配置文件
[root@yong-02 admin]# /usr/local/apache2/bin/apachectl -t Syntax OK [root@yong-02 admin]# /usr/local/apache2/bin/apachectl graceful
  • 測試
這里沒有對admin目錄做任何限制,做的FilesMatch跟這個不匹配,沒有遇到控制語句,所以訪問是404 [root@yong-02 admin]# curl -x192.168.180.135:80 111.com/admin/fasdfasdf -I HTTP/1.1 404 Not Found Date: Thu, 31 May 2018 15:36:57 GMT Server: Apache/2.4.33 (Unix) PHP/7.1.6 Content-Type: text/html; charset=iso-8859-1有特殊符號需要用 ” 單引號括起來 [root@yong-02 111.com]# curl -x192.168.180.135:80 'http://111.com/admin.php?fasdfasdf' -I HTTP/1.1 403 Forbidden Date: Thu, 31 May 2018 15:44:16 GMT Server: Apache/2.4.33 (Unix) PHP/7.1.6 Content-Type: text/html; charset=iso-8859-1[root@yong-02 111.com]# curl -x127.0.0.1:80 'http://111.com/admin.php?fasdfasdf' -I HTTP/1.1 404 Not Found Date: Thu, 31 May 2018 15:44:45 GMT Server: Apache/2.4.33 (Unix) PHP/7.1.6 Content-Type: text/html; charset=iso-8859-1

總結

  • Directory和FilesMatch 功能是一樣的,只不過有時僅僅想針對一個訪問的鏈接去做控制,那么再去控制目錄則不太合適,FilesMatch可以滿足一些比較個性化的需求

?

轉載于:https://my.oschina.net/u/3791387/blog/1822158

總結

以上是生活随笔為你收集整理的配置防盗链、 访问控制Directory 、访问控制FilesMatch的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。