十一周一次课(3月6日)
11.25 配置防盗链 11.26 访问控制Directory 11.27 访问控制FilesMatch
11.25 配置防盗链
通过限制referer来实现防盗链的功
防盗链,通俗讲,就是不让别人盗用你网站上的资源。这个资源,通常指的是图片、视频、歌曲、文档等。referer是指:你通过A网站的一个页面http://a.com/a.html里面的链接去访问B网站的的一个页面http://b.com/b.html,那么这个B网站页面的referer就是http://a.com/a.html。也就是说,一个referer其实就是一个网址,即前一个被访问页面的 URL,是来源网址
编辑虚拟机主机配置文件:vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
<Directory /data/wwwroot/111.com> //定义防盗链目录:本站点
SetEnvIfNoCase Referer "http://111.com" local_ref //定义Referer白名单:111.com
SetEnvIfNoCase Referer "http://aaa.com" local_ref
SetEnvIfNoCase Referer "^$" local_ref //"^$"表示空,当直接在浏览器里输入图片地址去访问它时,它的referer就为空。定义空也是白名单
<filesmatch "\.(txt|doc|mp3|zip|rar|jpg|gif|png)"> //定义需要保护的文件类型,当访问这些类型的文件时就会被限制。
Order Allow,Deny //定义访问控制的顺序,先允许后拒绝
Allow from env=local_ref //允许白名单的referer,其它deny
</filesmatch>
</Directory>
测试:用curl命令
-e/--referer <URL> 为 HTTP 数据包指定 Referer Page 信息,即前一个被访问页面的 URL。通常这个信息被服务器用于判断自己是否被盗链,如果发现服务器端有这样的检测机制,则可以使用该参数绕过检测。
使用-e来定义referer,这个referer一定要以http://开头,否则不管用
-I/--head 只接收 response数据包中 header 字段的内容。即只显示 HTTP 头,而不显示文件内容
不在白名单里网址:使用非允许的referer会返回403的状态码
在白名单里网址:
查看日志:tail /usr/local/apache2.4/logs/111.com-access_20180306.log
11.26 访问控制Directory
対于一些比校重要的网站内容,除了可以使用用户认证限制访同之外,込可以通其他一些方法做到限制,比如可以限制IP ,也可以限制user_agent。限制IP指的是限制访问网站的来源IP ,而限制 user-agent ,通常用来限制恶意或者不正常的请求。
<Directory /data/wwwroot/111.com/admin/>
Order deny,allow
Deny from all
Allow from 127.0.0.1
</Directory>
使用くDirectory>来指定要限制访问的目录。order定义控制顺序,哪个在前面就先匹配哪个規則。在本例中deny在前面,所以先匹配Deny from all ,这样所有的来源IP都会被限制,然后匹配Allow from 127.0.0.1 ,这祥又允许了127.0.0.1这个IP。最终的效果是,只允许来源IPカ127.0.0.1的访问。
测试环境:
用curl命令:我们限制的是源IP,而-x后面是目标IP
访问日志
本机有两个IP,一个是192.168.37.101,一个是127.0.0.1,通过这两个IP都可以访问到站点。 而来源IP分别为192.168.37.101和127.0.0.1, 其实和本机IP是一样的。
浏览器访问提示Forbidden, 其实就是403。再来看日志,可以查看到对应的来源IP,192.168.37.1,希望你不要把来源IP和本机IP搞混了。前面的实验中之所以本机IP和来源一样,就是因为它相当于自己访问 自己。而后面用浏览器访问,相当于拿Windows机器访问Linux服务器
curl测试状态码为403则被限制访问了
11.27 访问控制FilesMatch
可以单独针对某个文件来做限制
核心配置文件内容
<Directory /data/wwwroot/111.com>
<FilesMatch "admin.php(.*)">
Order deny,allow
Deny from all
Allow from 127.0.0.1
</FilesMatch>
</Directory>
状态码:404 //没有对admin做限制,所以允许访问,但找不到网页
状态码:403 //无法访问,因为做了限制
上图因为有特殊符号?,所有http://111.com/admin.php?要加上单引号
状态码:404 //127.0.0.1是允许的访问