PHP如何防止图片盗用?

如今的互联网,采集网站非常多,很多网站都喜欢盗链/盗用别人网站的图片,这样不仅侵犯网权,还导致被盗链的网站消耗大量的流量,给服务器造成比较大的压力,本文向大家介绍php开发中防止图片盗用/盗链的两种方法,需要的朋友可以参考一下。

1. Apache图片重定向方法

2. 设置images目录不充许http访问

Apache服务器下防止图片盗链的办法

如果你的网站以图片为主,哪天发现月底没到流量就快用光了,那就可以利用图片转向,在不修改网页的前提下,把图片下载请求转向到其它空间(比如试用主机),临时过渡。

下面开始讲解,比如你的图片都在img目录下,那就在该目录下放一个名为 .htaccess 的文件,内容如下:

RewriteEngine on

RewriteCond %{HTTP_REFERER} !^$ [NC]

RewriteCond %{HTTP_REFERER} !linuxidc.cn [NC]

RewriteCond %{HTTP_REFERER} !google.com [NC]

RewriteCond %{HTTP_REFERER} !baidu.com [NC]

RewriteRule .(jpg|gif|png|bmp|swf|jpeg) /image/replace.gif [R,NC,L]

RewriteRule ^(.*)$ http://image.linuxidc.cn/image/$1 [L]

大概解释下:

RewriteCond %{HTTP_REFERER} !^$ [NC]

RewriteCond %{HTTP_REFERER} !linuxidc.com [NC]

RewriteCond %{HTTP_REFERER} !google.com [NC]

RewriteCond %{HTTP_REFERER} !baidu.com [NC]

这部分是判断是否盗链,如果以上条件都成立(即访问图片的请求,既不是直接输入网址,也不是来自linuxidc.com,也不是来自google.com,也不是来自baidu.com的话),就执行下列转向:

RewriteRule .(jpg|gif|png|bmp|swf|jpeg) /image/replace.gif [R,NC,L]

意思是让所有盗链 img 目录下 jpg、gif、png、bmp、swf、jpeg 文件的网页,显示的图片都用 image 目录下的 replace.gif图片替换掉。注意替换显示的图片不要放在设置防盗链的 img 目录下。如果照上面的规则判断出图片请求不是盗链的,就执行以下转向:

RewriteRule ^(.*)$ http://image.linuxidc.com/image/$1 [L]

意思是对 img 目录下所有的请求都转向到目标服务器,比如有个图片原来的 url 是http://www.linuxidc.com/img/linuxidc.jpg ,现在就会转到 http://image.linuxidc.com/image/linuxidc.jpg 去。当然了你得先把原服务器 img 目录下的文件统统拷贝到临时服务器的 image 目录下,转向才会真正可用。起到的效果就是把原服务器图片下载所占用的流量统统省下,让临时服务器来承受了.

设置images目录不充许http访问

把images目录设置成不充许http访问(把图片目录的:读取、目录浏览 两个权限去掉)。

用一个PHP文件,直接用file函数读取这个图片。在这个PHP文件里进行权限控制。

apache环境中,在你的图片目录中加上下面这个文件即可。

文件名 .htaccess

文件内容如下

# options the .htaccess files in directories can override.

# Edit apache/conf/httpd.conf to AllowOverride in .htaccess

# AllowOverride AuthConfig

# Stop the directory list from being shown

Options -Indexes

# Controls who can get stuff from this server.

Order Deny,Allow

Deny from all

Allow from localhost

其他web环境如iss,nginx也类似。

class imgdata{

public $imgsrc;

public $imgdata;

public $imgform;

public function getdir($source){

$this->imgsrc = $source;

}

public function img2data(){

$this->_imgfrom($this->imgsrc);

return $this->imgdata=fread(fopen($this->imgsrc,’rb’),filesize($this->imgsrc));

}

public function data2img(){

header(“content-type:$this->imgform”);

echo $this->imgdata;

//echo $this->imgform;

//imagecreatefromstring($this->imgdata);

}

public function _imgfrom($imgsrc){

$info=getimagesize($imgsrc);

//var_dump($info);return $this->imgform = $info[’mime’];

}

}

$n = new imgdata;

$n -> getdir(“1.jpg”); //图片路径,一般存储在数据库里,用户无法获取真实路径,可根据图片ID来获取

$n -> img2data();

$n -> data2img();

这段代码是读取图片,然后直接输出给浏览器,在读取和输出之前,进行用户权限判断。

这里说的PHP读取图片,不是指读取路径,而是指读取图片的内容,然后通过

Header();输入图片类型,比如 gif png jpg等,下面输出图片的内容,所以用到了fread()

实际上,你看到 image.php?id=100 就是显示这张图片在浏览器上,而你查看源文件,看到的不会是图片的路径,而是乱码似的图片内容。

类似于qq空间的加密相册,只有输入密码才能访问,并且直接在浏览器输入 加密相册中的相片地址也是无法访问。我目前的想法是 图片的地址是一个php文件,通过 php 验证权限 ,读取图片,并输出,不知道除了这样的方法还有更简单高效的做法没有?比如生成临时的浏览地址,使用一些 nginx 的一些防盗链插件?

你可以利用ngx_http_auth_basic_module来完成。

修改配置文件

location / {

root /usr/local/nginx/html;

auth_basic “Auth”;

auth_basic_user_file /usr/local/nginx/conf/htpasswd;

index index.php index.htm;

}

auth_basic “Auth”中的Auth是弹出框(输入用户名和密码)的标题

auth_basic_user_file /usr/local/nginx/conf/htpasswd; 中的/usr/local/nginx/conf/htpasswd是保存密码的文件

文章来源:Linux公社

时间: 2024-10-15 15:16:36

PHP如何防止图片盗用?的相关文章

php如何防止图片盗用/盗链的两种方法(转)

图片防盗链有什么用? 防止其它网站盗用你的图片,浪费你宝贵的流量.本文章向大家介绍php防止图片盗用/盗链的两种方法 Apache图片重定向方法 设置images目录不充许http访问 Apache服务器下防止图片盗链的办法 如果你的网站以图片为主,哪天发现月底没到流量就快用光了,那就可以利用图片转向,在不修改网页的前提下,把图片下载请求转向到其它空间(比如试用主机),临时过渡. (详细请点击)http://www.cnblogs.com/myhomepages/p/6017867.html

php如何防止图片盗用/盗链的两种方法

如今的互联网,采集网站非常多,很多网站都喜欢盗链/盗用别人网站的图片,这样不仅侵犯网权,还导致被盗链的网站消耗大量的流量,给服务器造成比较大的压力,本文章向大家介绍php如何防止图片盗用/盗链的两种方法,需要的朋友可以参考一下. 图片防盗链有什么用? 防止其它网站盗用你的图片,浪费你宝贵的流量.本文章向大家介绍php防止图片盗用/盗链的两种方法 Apache图片重定向方法 设置images目录不充许http访问 Apache服务器下防止图片盗链的办法 如果你的网站以图片为主,哪天发现月底没到流量

图片保护

登陆后,点击左上角的"图片使用者",然后看"限期整改","保护声明"等. 淘宝的"保护声明"内的列表与软件的实拍保护(详情图)内的列表是一致的,可以在软件里点"立即下架宝贝"及"删除已下架商品"按钮来处理盗图. 淘宝的"限期整改"内的列表与软件的主图保护(限时)内的列表是一致的,可以在软件里点"立即下架宝贝"及"删除已下架商品"

怎样防止自己网站上的图片被盗取查看

图片防盗: 是不想自己的图片被别人使用. 图片防盗链: 是不想自己的图片被别人使用,且消耗的是自己的服务器流量. 图片防盗是困难的,完美的图片防盗那几乎是不可能的.但还是有很多方法能够减少图片盗用,下面是10种,选一种你喜欢的吧. 隐藏图片 使用空白图片覆盖真实图片 这个方法可以让别人无法获取真实的图片,除非查看源代码. 你可以把真实的图片做为背景图片,而使用一张透明图片匹配尺寸并覆盖到真实图片上面. 例如: <div id="image1" style="backgr

图片相识度对比程序引出的基础知识

最近由于项目提出需要一个可以识别房源图片盗用问题,由此想到需要一个图片相识度识别的程序,所以百度一番,找个一段图片相识度识别的代码(引用地址:https://blog.csdn.net/chengmodelong/article/details/24521295). 研究一番,在此做下代码原理说明: 第一步 缩小图片尺寸 将图片缩小到8x8的尺寸, 总共64个像素. 这一步的作用是去除各种图片尺寸和图片比例的差异, 只保留结构.明暗等基本信息. 第二步 转为灰度图片 将缩小后的图片, 转为64级

软件的实拍保护2

登陆地址:https://tupian.taobao.com 登陆后,点击左上角的"图片使用者",然后看"限期整改","保护声明"等. 淘宝的"保护声明"内的列表与软件的实拍保护(详情图)内的列表是一致的,可以在软件里点"立即下架宝贝"及"删除已下架商品"按钮来处理盗图. 淘宝的"限期整改"内的列表与软件的主图保护(限时)内的列表是一致的,可以在软件里点"立

防止图片被盗用

当一个图片网站有图片被其他网站引用时,这个图片网站会被大量访问,导致这个网站的带宽被大量使用,我们可以用图片防盗链来防止. 首先我们要用到.htaccess来定义哪个网站可以引用图片. <IfModule mod_rewrite.c> //开启工程 RewriteEngine On //定义哪些文件类型,如果文件类型为下面这些再判断路径 RewriteCond %{REQUEST_FILENAME} .*\.(jpg|png|jpeg|gif) [NC] //如果路径不为http://loca

python批量给图片添加log

直接上代码 from PIL import Image import os all_path=[] dirName = os.getcwd() file_dir = os.path.join(dirName,'file_log') #创建目录保存处理后的图片 try: os.mkdir('file_log') except FileExistsError: print('dir Exists ') #获取当前目录下所有的jpeg格式文件路径 for root, dirs, files in os

图片缓存的方案

下载 下载的话,我查阅了很多人写的,像SDWebImage,使用的是NSURLConnection,但是我这里准备使用NSURLsession,使用NSURLSessionDataDelegate的代理方法实现下载数据. 说点题外话:我为什么选择NSURLsession二部选择NSURLConnection.因为iOS9之前在做网络连接的时候,我们使用的时NSURLConnection,但是iOS9之后NSURLConnection宣布被弃用了,在2013年的WWDC大会上,苹果就已经设计出NS