当前位置:首页 > PHP

php实现盗链

2026-03-12 22:09:15PHP

PHP实现防盗链的方法

防盗链(Hotlinking Protection)用于防止其他网站直接引用本站资源(如图片、视频、文件等)。以下是几种PHP实现防盗链的方案:

检查HTTP_REFERER

通过检查$_SERVER['HTTP_REFERER']判断请求来源是否合法。若来源非允许的域名,则拒绝访问或返回错误。

$allowedDomains = ['example.com', 'trusted-site.com'];
$referer = parse_url($_SERVER['HTTP_REFERER'], PHP_URL_HOST);

if (!in_array($referer, $allowedDomains)) {
    header('HTTP/1.1 403 Forbidden');
    exit('Access denied - Hotlinking not allowed');
}

动态生成资源链接

使用PHP脚本动态输出资源,而非直接暴露静态文件URL。每次请求时验证权限。

$filePath = '/path/to/secret-image.jpg';
if (userHasAccess()) { // 自定义权限验证逻辑
    header('Content-Type: image/jpeg');
    readfile($filePath);
} else {
    header('HTTP/1.1 403 Forbidden');
}

使用Token验证

为资源URL添加时效性Token参数,服务器端验证Token有效性。

$secretKey = 'your-secret-key';
$expires = time() + 3600; // 1小时有效期
$token = md5($secretKey . $expires . $requestedFile);

// 生成的URL格式:/file.jpg?token=XXX&expires=XXX

Nginx/Apache配合PHP

通过Web服务器规则实现高效防盗链,例如Nginx的valid_referers指令:

location ~* \.(jpg|png|gif)$ {
    valid_referers none blocked example.com *.example.com;
    if ($invalid_referer) {
        return 403;
    }
}

替代内容展示

对于图片资源,可检测盗链后返回替代图片(如提示版权信息的水印图)。

php实现盗链

if (isHotlinking()) {
    header('Content-Type: image/jpeg');
    readfile('watermark.jpg');
    exit;
}

注意事项

  • HTTP_REFERER可能被伪造或缺失,需结合其他方法增强安全性
  • 动态资源输出会增加服务器负载
  • 对于CDN资源需额外配置CDN端的防盗链规则
  • 大规模文件建议使用服务器模块(如mod_rewrite)优化性能

标签: 盗链php
分享给朋友:

相关文章

php实现博客

php实现博客

使用PHP实现博客系统 数据库设计 创建数据库表存储博客文章和用户信息。常见的表包括posts(文章)和users(用户)。 CREATE TABLE users ( id INT AUTO…

php 函数实现

php 函数实现

PHP 函数实现基础 PHP 函数的定义使用 function 关键字,后跟函数名和参数列表。函数名不区分大小写,但建议保持一致。 function functionName($param1, $p…

php 无限分类的实现

php 无限分类的实现

无限分类的实现方法 无限分类通常用于构建树形结构数据,如商品分类、多级菜单等。以下是几种常见的实现方式: 邻接列表模型(Adjacency List) 邻接列表是最简单的实现方式,通过在每个节点中存…

php实现短信验证

php实现短信验证

PHP实现短信验证的步骤 选择合适的短信服务提供商 国内常见的短信服务提供商包括阿里云短信、腾讯云短信、云片等。注册账号并获取API密钥和签名模板是第一步。这些平台通常提供详细的开发文档和SDK。…

php array实现

php array实现

PHP 数组实现 PHP 数组是一种灵活的数据结构,可以存储多个值。以下是几种常见的实现方式: 索引数组 索引数组使用数字作为键名,默认从0开始递增。 $fruits = array("Apple…

php无法实现

php无法实现

PHP 是一种功能强大的服务器端脚本语言,能够实现多种功能,包括动态网页开发、数据库交互、文件操作等。如果遇到“无法实现”的问题,通常是由于以下原因之一: 环境配置问题 确保 PHP 环境正确安装和…