设置防盗链,访问控制

来源:互联网 发布:在线字体生成网站源码 编辑:程序博客网 时间:2024/05/18 01:54

设置防盗链

防盗链的作用是,我们网站的图片,只能通过我们自己的网站去访问,其他网站借用不行。
比如:我们的网站,被用户上传了很多图片,而用户又在他自己的网站上加上了我们网站图片的链接,就直接能访问了。
这样可以节省他网站的带宽

一、图片防盗链原理
http标准协议中有专门的字段记录referer
一来可以追溯上一个入站地址是什么
二来对于资源文件,可以跟踪到包含显示他的网页地址是什么
因此所有防盗链方法都是基于这个Referer字段

如果是直接在浏览器上输入地址,回来进来,则没有referer头。

这也是:为什么服务器知道我们的图片是从哪儿引用的,也知道我们的客户从哪个网站链接点击过来的

referer防盗链的配置文件:

  <Directory /data/wwwroot/www.123.com>//用来定义那个目录,就是站点所在目录        SetEnvIfNoCase Referer "http://www.123.com" local_ref //定义referer的白名单        SetEnvIfNoCase Referer "http://123.com" local_ref //定义referer的白名单        SetEnvIfNoCase Referer "^$" local_ref //定义referer的白名单(空的referer,直接输入网址进去的,没经过其他网站跳转)        <filesmatch "\.(txt|doc|mp3|zip|rar|jpg|gif)"> //定义规则,针对那些访问做防盗链            Order Allow,Deny //定义访问控制的            Allow from env=local_ref //允许白名单的referer        </filesmatch>    </Directory>

在Apache设置防盗链:

打开虚拟配置文件:

[root@shuai-01 ~]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf <VirtualHost *:80>    DocumentRoot "/data/wwwroot/111.com"    ServerName 111.com    ServerAlias www.111.com www.example.com    <Directory /data/wwwroot/111.com>        SetEnvIfNoCase Referer "http://111.com" local_ref        SetEnvIfNoCase Referer "http://111.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>        SetEnvIf Request_URI ".*\.gif$" img        SetEnvIf Request_URI ".*\.jpg$" img        SetEnvIf Request_URI ".*\.png$" img        SetEnvIf Request_URI ".*\.bmp$" img        SetEnvIf Request_URI ".*\.swf$" img        SetEnvIf Request_URI ".*\.js$" img        SetEnvIf Request_URI ".*\.css$" img    ErrorLog "logs/111.com-error_log"    CustomLog "|/usr/local/apache2.4/bin/rotatelogs -l logs/111.com-access_%Y%m%d.log 86400" combined env=!img</VirtualHost>

保存退出,检查配置文件语法并重新加载配置文件

[root@shuai-01 ~]# /usr/local/apache2.4/bin/apachectl -t

Syntax OK

[root@shuai-01 ~]# /usr/local/apache2.4/bin/apachectl graceful

这是只有通过referer白名单的才能访问:

用curl测试:
curl -e 可以指定referer:在白名单里

[root@shuai-01 ~]# curl -e "http://111.com/123.txt" -x127.0.0.1:80 111.com/logo.png -IHTTP/1.1 200 OKDate: Mon, 25 Dec 2017 09:33:36 GMTServer: Apache/2.4.29 (Unix) PHP/5.6.30Last-Modified: Thu, 21 Dec 2017 14:12:26 GMTETag: "1914-560da4a1b6680"Accept-Ranges: bytesContent-Length: 6420Content-Type: image/png

不在白名单里的

[root@shuai-01 ~]# curl -e "http://www.qq.com/123.txt" -x127.0.0.1:80 111.com/logo.png -IHTTP/1.1 403 ForbiddenDate: Mon, 25 Dec 2017 09:36:02 GMTServer: Apache/2.4.29 (Unix) PHP/5.6.30Content-Type: text/html; charset=iso-8859-1

用浏览器测试:

在白名单里的(这里是空的referer)

这里写图片描述

不在白名单里:

这里写图片描述

问题1:

查看日志的时候,明明访问了多次站点,却没有日志。

原因:这里由于访问的是图片,由于以前做过日志不记录静态文件,配置文件没有更改或删除,访问.png时,就没记录。

更改配置文件,将其注释掉。

访问控制

访问控制和用户认证其实是不一样的,用户认证是通过用户名密码的方式允许访问,访问认证是通过允许IP白名单允许访问。

访问控制的配置文件:

  <Directory /data/wwwroot/www.123.com/admin/> //针对admin目录        Order deny,allow        Deny from all        Allow from 127.0.0.1  </Directory>

order用来定义顺序,是先deny(不允许),allow(允许)。

        Order deny,allow        Deny from all        Allow from 127.0.0.1

这里先所有都不允许,在只允许127.0.0.1 。执行完后才生效。
如果:

        Order allow,deny        Deny from all        Allow from 127.0.0.1

先allow在deny。就所有都不允许了。

设置admin文件的访问控制:

打开虚拟配置文件

[root@shuai-01 ~]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf //设置访问控制  <Directory /data/wwwroot/111.com/admin/>        Order deny,allow        Deny from all        Allow from 127.0.0.1  </Directory>//设置防盗链    <Directory /data/wwwroot/111.com>        SetEnvIfNoCase Referer "http://111.com" local_ref        SetEnvIfNoCase Referer "http://weibo.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>

保存退出,检查配置文件语法并重新加载配置文件

[root@shuai-01 ~]# /usr/local/apache2.4/bin/apachectl -t

Syntax OK

[root@shuai-01 ~]# /usr/local/apache2.4/bin/apachectl graceful

创建admin文件:

[root@shuai-01 ~]# cd /data/wwwroot/111.com/[root@shuai-01 111.com]# mkdir admin/[root@shuai-01 111.com]# touch admin/index.php[root@shuai-01 111.com]# echo '121212' > admin/index.php [root@shuai-01 111.com]# cat admin/index.php 121212

通过curl进行测试:

自测试:

[root@shuai-01 111.com]# curl -x127.0.0.1:80 111.com/admin/index.php -IHTTP/1.1 200 OKDate: Mon, 25 Dec 2017 10:27:40 GMTServer: Apache/2.4.29 (Unix) PHP/5.6.30X-Powered-By: PHP/5.6.30Content-Type: text/html; charset=UTF-8[root@shuai-01 111.com]# curl -x192.168.176.135:80 111.com/admin/index.php -IHTTP/1.1 403 ForbiddenDate: Mon, 25 Dec 2017 10:28:56 GMTServer: Apache/2.4.29 (Unix) PHP/5.6.30Content-Type: text/html; charset=iso-8859-1

前面访问控制是目录,它还能是一个文件。

<Directory /data/wwwroot/www.123.com> //在那个目录下    <FilesMatch  "admin.php(.*)">    //对于那些文件        Order deny,allow        Deny from all        Allow from 127.0.0.1    </FilesMatch></Directory>

关于Apache的访问限制:
https://jingyan.baidu.com/article/4b07be3c193d1648b380f3a9.html

阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 异界烽火贰烽云起 烽禾影城 烽烟天下 烽烟乱世遇佳人全文免费阅读 烽烟乱世遇佳人全文免费 烽火逃兵 烽火漫天 烽火通信 烽火 烽火中文 烽火烟波楼 烽火男儿行 烽火台 烽火科技 南京烽火 武汉烽火 烽火中文网 烽火电子 烽火网 烽火集团 烽火光猫 淘宝烽火 烽火光缆 烽火戏 烽火星空 烽火公司 烽火民国 烽火战线 烽火戏诸 烽火网站 烽火不息 烽火中学 烽火众智 烽火山林 烽火买鞋 烽火陕甘 明末烽火 烽火家人 漫天烽火 烽火通讯 烽火边城