php 图片防盗链怎么做
-
要实现PHP图片防盗链,可以通过以下几个步骤进行操作:
1. 判断请求来源
首先,我们需要判断用户请求图片的来源是否合法。通常,HTTP请求的`Referer`头部字段会包含请求的来源网址。我们可以通过`$_SERVER[‘HTTP_REFERER’]`获取该字段的值。如果该值为空或者不包含我们允许的合法来源,则认为是非法请求。“`php
$allowed_referer = array(‘http://www.example.com’, ‘http://example.com’);
if(!in_array($_SERVER[‘HTTP_REFERER’], $allowed_referer)){
// 非法请求
exit(“403 Forbidden”);
}
“`2. 修改图片URL
为了防止盗链,我们可以将图片URL进行修改,使其只能在我们指定的合法来源下显示。可以将图片路径中的一部分修改为动态生成的token或者一串随机字符,然后在PHP中将这个token或者随机字符与图片资源映射起来。“`php
$image_path = ‘path/to/image.jpg’;
$token = ‘abcdefg’; // 或者随机生成一串字符
$protected_url = ‘http://www.example.com/protect.php?img=’ . urlencode($image_path) . ‘&token=’ . $token;
“`3. 创建保护脚本
在上一步中,我们创建了一个保护图片的URL,这个URL指向一个PHP脚本。在该脚本中,我们可以获取传递的参数,并进行防盗链的验证。“`php
$image_path = $_GET[‘img’];
$token = $_GET[‘token’];$allowed_referer = array(‘http://www.example.com’, ‘http://example.com’);
if(!in_array($_SERVER[‘HTTP_REFERER’], $allowed_referer)){
// 非法请求
exit(“403 Forbidden”);
}// 输出图片
header(“Content-Type: image/jpeg”);
readfile($image_path);
“`在这个PHP脚本中,我们首先检查请求的来源是否合法,如果不合法则返回403 Forbidden错误。然后,我们设置Content-Type头部为图片类型,并输出图片。
这样,只有在合法的来源网址下访问这个保护脚本的URL,才能成功获取到图片资源。其他非法的请求来源将被拒绝访问。
在实际应用中,你可以根据自己的需求进行修改和扩展。以上是一种基本的实现方法,希望对你有帮助。
2年前 -
防止图片被其他网站盗链是一项常见的安全操作,以下是几种常见的方法可以用来防止PHP图片盗链:
1. 通过HTTP引用检查:在PHP脚本中,在输出图片之前检查`$_SERVER[‘HTTP_REFERER’]`变量来验证是否从有效的站点引用了该图片。如果`$_SERVER[‘HTTP_REFERER’]`不存在或者不是从你的站点访问的,可以选择不输出图片,或者输出一张替代图片。
“`php
“`2. 使用PHP的GD库生成临时图片: 使用GD库载入原始图片,然后再将其输出,这样即使图片被其他网站盗链,实际上他们只能获取到由PHP生成的临时图片。下面是一个示例:
“`php
“`3. 使用.htaccess文件:你可以使用.htaccess文件来阻止其他网站直接访问你的图片目录。在你的图片目录下创建一个名为”.htaccess”的文件,并加入以下内容:
“`
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?yourdomain.com/ [NC]
RewriteRule \.(jpg|jpeg|png|gif)$ – [NC,F,L]
“`这段代码将阻止除了你的域名以外的网站访问你的图片目录下的图片文件。
4. 使用过期时间检查: 为你的图片设置过期时间,当过期时间到达后,图片将无法在其他网站上显示。在PHP脚本中,可以使用`header()`函数来设置响应头信息中的 “Expires” 字段,如下所示:
“`php
“`5. 使用验证码或登录验证: 可以通过为访问图片的用户添加验证码或登录验证来防止盗链。这样只有通过验证码或登录验证的用户才能访问到图片。
以上是一些常见的方法来防止PHP图片盗链,可以根据你的实际需求和情况选择合适的方法来保护你的图片资源。
2年前 -
PHP图片防盗链是一种常见的保护图片资源的方法,可以防止其他网站盗用你的图片资源。下面我将介绍两种常用的方法来实现PHP图片防盗链。
方法一:通过referer来实现图片防盗链
1. 创建一个PHP文件,命名为”image.php”。
2. 使用以下代码来判断请求是否来自合法的网站:
“`php
“`
3. 在allowed_referers数组中添加允许引用的网站,即可防止其他网站的盗链。方法二:通过htaccess文件来实现图片防盗链
1. 打开文本编辑器,创建一个名为”.htaccess”的文件(需要注意文件名无后缀)。
2. 输入以下代码:
“`htaccess
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yourdomain.com [NC]
RewriteRule \.(png|jpe?g|gif)$ – [NC,F,L]
“`
3. 替换”yourdomain.com”为你的域名,然后保存文件。
4. 将.htaccess文件上传到你想保护的图片目录中。以上就是两种常用的方法来实现PHP图片防盗链的操作流程,你可以根据实际需求选择其中一种方法进行使用。注意,在实际应用中可能还需要根据具体情况进行一些调整和优化。
2年前