php 图片防盗链

本文实例讲述了php实现图片文件与下载文件防盗链的方法。分享给大家供大家参考。具体分析如下:

在php中最简单的防盗链办法就是利用php的$_SERVER['HTTP_REFERER']函数来操作了,但是此方法不可靠,我们最终还是需要使用apache,iis来进行操作的,具体的操作方法如下:

php防盗链:

  1.  
    <?php
  2.  
     
  3.  
    session_start();
  4.  
     
  5.  
    session_register('check');
  6.  
     
  7.  
    $_SESSION['check']=true;
  8.  
     
  9.  
    ?>

检查session变数,判断是否造访首页。并且检查他的来源网页参考(HTTP_REFERER)是否来自本地网站的网页。

方法如下:

  1.  
    <?php
  2.  
     
  3.  
    session_start();
  4.  
     
  5.  
    $refs = parse_url($_SERVER['HTTP_REFERER']); //分解参考网页资讯
  6.  
     
  7.  
    //检查首页session及来源主机是否相同
  8.  
     
  9.  
    if(!($_SESSION['check']) || $refs['host'] != $_SERVER['HTTP_HOST'])
  10.  
     
  11.  
    exit;
  12.  
     
  13.  
    ?>

注意:这个只能简单的防盗链了,如果稍懂一点的就可以破解了,

利用服务器来设置php防盗连

apache防盗链:

修改httpd.conf:

  1.  
    SetEnvIfNoCase Referer "^" local_ref=1
  2.  
     
  3.  
    <FilesMatch ".(gif|jpg)">
  4.  
     
  5.  
    Order Allow,Deny
  6.  
     
  7.  
    Allow from env=local_ref
  8.  
     
  9.  
    </FilesMatch>

如果希望显示一张“禁止盗链”的图片,我们可以用mod_rewrite 来实现。
首先在安装 apache 时要加上 --enable-rewrite 参数加载 mod_rewrite 模组。
假设“禁止盗链”的图片为abc.gif,我们在 httpd.conf 中可以这样配置:

  1.  
    RewriteEngine on
  2.  
     
  3.  
    RewriteCond %{HTTP_REFERER} !^$
  4.  
     
  5.  
    RewriteCond %{HTTP_REFERER} !^http://(www.)?www.jb51.net /.*$ [NC]
  6.  
     
  7.  
    RewriteRule .(gif|jpg)$ abc.gif [R,L]
  8.  
     
  9.  
    DocumentRoot "/usr/local/apache/htdocs"
  10.  
     
  11.  
    #设置存放站点html文件的目录。
  12.  
     
  13.  
    <Directory />
  14.  
     
  15.  
    Options FollowSymLinks
  16.  
     
  17.  
    AllowOverride None
  18.  
     
  19.  
    </Directory>

iis防盗链:

执行文件选择 c:RewriteRewrite.dll 即可以了
httpd.ini是配置文件
图片防盗链代码

    1.  
      [ISAPI_Rewrite]
    2.  
       
    3.  
      # 3600 = 1 hour
    4.  
       
    5.  
      CacheClockRate 3600
    6.  
       
    7.  
      RepeatLimit 32
    8.  
       
    9.  
      # Protect httpd.ini and httpd.parse.errors files
    10.  
       
    11.  
      # from accessing through HTTP
    12.  
       
    13.  
      RewriteCond Host: (.+)
    14.  
       
    15.  
      RewriteCond Referer: (?!http://1.*).*
    16.  
       
    17.  
      RewriteRule .*.(?:gif|jpg|png|bmp) /force.gif [I,O]
       

 https://blog.csdn.net/withoutfear/article/details/120235319

posted @ 2018-11-22 14:21  星云惊蛰  阅读(55)  评论(0)    收藏  举报