防盗链是指在网站上设置一定的规则,限制只有特定来源的请求才能访问资源,防止其他非法网站盗用资源。
以下是一种常见的PHP防盗链算法:
<?php
// 需要保护的资源路径
$protectedPath = '/path/to/protected/resource.jpg';
// 允许访问的来源域名
$allowedDomains = array(
'example.com',
'subdomain.example.com'
);
// 获取请求的来源域名
$referer = $_SERVER['HTTP_REFERER'];
// 检查来源域名是否在允许访问的域名列表中
if ($referer && !in_array(parse_url($referer, PHP_URL_HOST), $allowedDomains)) {
// 非法来源,返回错误信息或者重定向到其他页面
header('HTTP/1.1 403 Forbidden');
echo 'Access Denied';
exit;
}
// 合法来源,输出资源文件
header('Content-Type: image/jpeg');
readfile($protectedPath);
?>
在上述代码中,首先定义了需要保护的资源路径和允许访问的来源域名列表。然后通过$_SERVER['HTTP_REFERER']获取请求的来源域名,并使用parse_url()函数解析出域名部分。接着检查来源域名是否在允许访问的域名列表中,如果不在列表中,则返回403 Forbidden错误或者重定向到其他页面。如果来源合法,则输出资源文件。
需要注意的是,HTTP Referer是由客户端发送的一个请求头字段,因此可以被伪造。这种方式只是一种简单的防盗链方法,对于一些高级的盗链行为可能不够安全。如果需要更加安全的防盗链方案,可以考虑使用其他技术,如使用签名、Token等方式验证请求的合法性。
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站