Linux学习总结(三十六)lamp之配置防盗链

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux学习总结(三十六)lamp之配置防盗链相关的知识,希望对你有一定的参考价值。

一配置防盗链

  • referer,中文释义为来源,也就是在说网站从哪里访问过来,在访问日志里,它指的是不同网站之间的跳转链接信息。也就是跳转源的网址。
    虽然直接在浏览器输入某个站点,跟从其他网站打开该网站,我们感受到的效果没有差别,但是服务器端会记录一个跳转信息,他就是一个referer,如果没有经过跳转,则是一个空的referer。这样我们统计该referer信息,就能统计出某个网站对于我们网站的流量贡献。
  • 防盗链机制就是通过referer的控制,拒绝跳转访问我们自己认为的稀缺资源。比如,淘宝网商之间,既有互相打广告的合作,又有对市场份额的竞争。这时我们可以把我们网站的主页,挂在其他店铺,但是我又不允许其他店铺直接链接我辛苦拍来的产品照片,(这个链接很容易获取)就可以针对该图片做一个防盗链。
    通过限制referer来实现防盗链的功能
    配置虚拟主机为下面的样子。为了节省空间,看起来有清晰,删掉了之前的配置。
    <VirtualHost *:80>
    DocumentRoot "/data/wwwroot/www.123.com"
    ServerName www.123.com
    ServerAlias 123.com
    <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)">
            Order Allow,Deny
            Allow from env=local_ref
        </filesmatch>
    </Directory>
    </VirtualHost>

    curl -e "http://www.aminglinux.com/123.html" 自定义referer,注意该referer的格式
    针对php文件和图片我们分别作带referer和不带referer的测试:
    curl -x127.0.0.1:80 123.com/admin.php -I
    curl -x127.0.0.1:80 -e "http://www.baidu.com" 123.com/admin.php -I
    技术分享图片
    curl -x127.0.0.1:80 123.com/images/1.jpg -I
    curl -x127.0.0.1:80 -e "http://www.baidu.com" 123.com/images/1.jpg -I
    技术分享图片

二 限制ip访问

对于一些比较重要的网站,除了我们前面提到的使用用户认证限制访问之外,还可以通过限制访问ip实现访问控制。比如涉及后台的访问,我们可以只开放内网ip或这极少数ip。我们可以指定限制访问的目录或者是某类文件。
访问控制Directory
核心配置文件内容

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

-t graceful 后,我们分别用127.0.0.1和本机ens33 ip 192.168.226.130进行测试
curl -x127.0.0.1:80 123.com/admin/admin.php -I
技术分享图片
curl -x192.168.226.130:80 123.com/admin/admin.php -I
技术分享图片
curl -x192.168.226.130:80 123.com/admin.php -I
技术分享图片
访问控制FilesMatch
核心配置文件内容

<Directory /data/wwwroot/www.123.com>
    <FilesMatch  "admin.php(.*)">
        Order deny,allow
        Deny from all
        Allow from 127.0.0.1
    </FilesMatch>
</Directory>

-t graceful 后继续测试
curl -x127.0.0.1:80 123.com/admin.php -I
技术分享图片
curl -x192.168.226.130:80 123.com/admin.php -I
技术分享图片
curl -x192.168.226.130:80 123.com/345.php -I
技术分享图片
filematch 匹配amin.php 字段,包含该字段则只允许127.0.0.1这个ip访问。
最后总结:
我们发现防盗链和后面的访问控制 order 这一行有区别。 防盗链中是这样的,Order Allow,Deny 意思先执行允许,再执行拒绝。先允许所有的访问,再拒绝filematch匹配的文件的带refer访问。 访问控制中是这样的,Order deny,allow 意思是针对目录或者文件,先拒绝所有ip访问,再放行指定ip。

以上是关于Linux学习总结(三十六)lamp之配置防盗链的主要内容,如果未能解决你的问题,请参考以下文章

Linux学习总结(三十三)lamp之httpd关联php

Linux学习总结(三十七)lamp之禁止php解析 user_agent 访问控制 php相关配置

Linux学习总结(三十四)lamp之用户认证和域名跳转

Linux学习总结(三十八)lamp之php扩展模块安装

Linux 学习总结(三十)lamp之mysql安装

Linux学习总结(三十二)lamp之php安装