LAMP架构(配置防盗链,目录访问控制,文件/链接访问控制)
一、配置防盗链 实例: 假如你维护一个免费的论坛网站,是可以免费发图片的,有一个国外的恶意网站,把图片发在你的网站里,且在自己的网站里放入他在你网站发图的链接,这样在他的网站里就可以直接跳转到你的网站来访问图片,这样增加了自己网站的带宽,但是没有实质意义,因为自己的用户量并没有增长,怎么限制这种行为呢,是通过限制Referer(上一次访问的网站)来实现。 修改虚拟配置文件; [root@abc 111.com]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf 增加以下内容 <Directory /data/wwwroot/111.com> (需要定义防盗链的目录) SetEnvIfNoCase Referer "http://111.com" local_ref referer白名单 SetEnvIfNoCase Referer "http://ask.apelearn.com" local_ref SetEnvIfNoCase Referer "^$" local_ref 空referer也设置白名单 <FilesMatch "\.(txt|doc|mp3|zip|rar|jpg|gif)"> 这些访问不要设置白名单 Order Allow,Deny 定义顺序,先允许白名单访问,剩下的给deny掉 Allow from env=local_ref </FilesMatch> </Directory> 检查语法错误且重新启动 [root@abc 111.com]# curl -e "http:www.qq.com/1.txt"-x127.0.0.1:80 111.com/1.png -I HTTP/1.1 403 Forbidden Date: Sun, 26 Nov 2017 08:50:30 GMT Server: Apache/2.4.28 (Unix) PHP/5.6.30 Content-Type: text/html; charset=iso-8859-1 没有设置referer白名单的www.qq.com被403拒绝 [root@abc 111.com]# curl -e "http://ask.apelearn.com"-x127.0.0.1:80 111.com/1.png -I HTTP/1.1 200 OK Date: Sun, 26 Nov 2017 08:50:38 GMT Server: Apache/2.4.28 (Unix) PHP/5.6.30 Last-Modified: Sun, 26 Nov 2017 07:07:52 GMT ETag: "7913-55edd71b4a200" Accept-Ranges: bytes Content-Length: 30995 Content-Type: image/png 设置了http://ask.apelearn.com白名单的被允许访问200 二、目录访问控制 访问控制目录,只有允许的源ip才能打开目录。其他的被deny 修改: [root@abc 111.com]# 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> Order 定义顺序。是先允许还是先访问,如果deny在前,则先执行下面deny开头的,如果allow在前,则执行allow开头的。例如这个配置文件写的是deny全部,如果把deny放在后面,则就算允许了127.0.0.1,后面还是会被deny掉 实验: [root@abc 111.com]# curl -x127.0.0.1:80 111.com/admin/index.php -I HTTP/1.1 200 OK Date: Sun, 26 Nov 2017 09:35:53 GMT Server: Apache/2.4.28 (Unix) PHP/5.6.30 X-Powered-By: PHP/5.6.30 Content-Type: text/html; charset=UTF-8 白名单的127.0.0.1被允许访问 [root@abc 111.com]# curl -x192.168.52.100:80 111.com/admin/index.php -I HTTP/1.1 403 Forbidden Date: Sun, 26 Nov 2017 09:35:54 GMT Server: Apache/2.4.28 (Unix) PHP/5.6.30 Content-Type: text/html; charset=iso-8859-1 没有白名单的192.168.52.100被deny 三、文件/链接访问控制 访问控制除了目录,还可以访问控制一个文件名/链接 修改: [root@abc 111.com]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf <Directory /data/wwwroot/111.com/> <FilesMatch admin.php(.*)> Order deny,allow Deny from all Allow from 127.0.0.1 </FilesMatch> </Directory> 加上FilesMatch admin.php(.*),表示在/data/wwwroot/111.com/ 下匹配到的文件全部被控制访问 测试: [root@abc admin]# curl -x192.168.52.100:80 111.com/admin/index.php -I HTTP/1.1 200 OK Date: Sun, 26 Nov 2017 09:47:09 GMT Server: Apache/2.4.28 (Unix) PHP/5.6.30 X-Powered-By: PHP/5.6.30 Content-Type: text/html; charset=UTF-8 之前控制目录的index.php可以访问 [root@abc admin]# curl -x192.168.52.100:80 '111.com/admin/admin.php?sada' -I HTTP/1.1 403 Forbidden Date: Sun, 26 Nov 2017 09:48:33 GMT Server: Apache/2.4.28 (Unix) PHP/5.6.30 Content-Type: text/html; charset=iso-8859-1 目录下就没有访问的文件,但是显示403权限不够,说明403和404的区别,权限不够时就没有权利匹配或查看,所以不管文件是否真实存在 本文转自 小新锐 51CTO博客,原文链接:http://blog.51cto.com/13407306/2054192,如需转载请自行联系原作者