<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,表面容许访问了