// ========== 防盗链代码(修复版,不影响主页)==========
// 主域名(用于通配匹配)
$main_domain = '740474.xyz';
// 允许的跨域站点(不同主域的域名)
$allowed_cross_domains = array(
'demo.volcvideo.com',
'tcplayer.vcube.tencent.com'
);
// 禁止直接访问
$allow_direct = false;
$request_uri = $_SERVER['REQUEST_URI'] ?? '';
// 【重要】排除主页、目录和预览页面
if ($request_uri === '/' || $request_uri === '' || strpos($request_uri, '?preview') !== false) {
// 主页、根目录或预览页面直接放行,不进行防盗链检查
} else {
$ok = false;
// 1. 检查 Origin
$origin = $_SERVER['HTTP_ORIGIN'] ?? '';
if (!empty($origin)) {
$origin_host = parse_url($origin, PHP_URL_HOST);
// 检查是否属于主域名(任何 .740474.xyz 子域名都通过)
if (strpos($origin_host, '.' . $main_domain) !== false || $origin_host === $main_domain) {
$ok = true;
}
// 检查是否在跨域列表中
if (!$ok && in_array($origin_host, $allowed_cross_domains)) {
$ok = true;
}
}
// 2. 检查 Referer
if (!$ok) {
$referer = $_SERVER['HTTP_REFERER'] ?? '';
if (!empty($referer)) {
$referer_host = parse_url($referer, PHP_URL_HOST);
// 检查是否属于主域名
if (strpos($referer_host, '.' . $main_domain) !== false || $referer_host === $main_domain) {
$ok = true;
}
// 检查是否在跨域列表中
if (!$ok && in_array($referer_host, $allowed_cross_domains)) {
$ok = true;
}
}
}
// 3. 检查 Sec-Fetch-Site
if (!$ok) {
$sec_fetch_site = $_SERVER['HTTP_SEC_FETCH_SITE'] ?? '';
if ($sec_fetch_site === 'same-origin' || $sec_fetch_site === 'same-site') {
$host = $_SERVER['HTTP_HOST'] ?? '';
// 当前请求的域名必须属于主域名
if (strpos($host, '.' . $main_domain) !== false || $host === $main_domain) {
$ok = true;
}
}
}
// 如果不是允许的来源,返回404并显示警告语
if (!$ok) {
header('HTTP/1.1 404 Not Found');
header('Content-Type: text/plain; charset=utf-8');
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'] ?? $_SERVER['REMOTE_ADDR'] ?? '未知IP';
die("非法访问已记录IP:{$ip},将上报安全中心");
}
}
// ========== 防盗链代码结束 ==========
在index.php文件前面加上这些代码 即可实现防盗链
请注意 部署OneManager的域名 无法实现子域名禁止访问 也就是说 用那个域名架设OneManager 其所有的子域名都可以访问 无法实现子域名禁止访问
允许其他站点使用 仅需要在 允许的跨域站点(不同主域的域名)下面 添加新域名即可。