一配置防盗链

  • 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。