PHP如何实现只允许特定域名访问网站?域名访问限制技巧

在PHP中限制特定域名访问网站,可以通过检查HTTP请求头中的HTTP_REFERERHTTP_ORIGIN字段实现,以下是两种常用方法:

php限制域名访问网站


方法1:验证 Referer(适用于页面跳转)

// 允许访问的域名列表
$allowedDomains = [
    'example.com',
    'subdomain.example.com'
];
// 获取Referer并提取域名
$referer = $_SERVER['HTTP_REFERER'] ?? '';
$domain = parse_url($referer, PHP_URL_HOST);
// 验证
if (empty($referer) || !in_array($domain, $allowedDomains)) {
    http_response_code(403); // 禁止访问
    exit('Access Denied: Domain not allowed.');
}
// 正常执行业务代码...

方法2:验证 Origin(适用于AJAX/API请求)

// 允许访问的域名列表
$allowedOrigins = [
    'https://example.com',
    'https://subdomain.example.com'
];
// 获取Origin头
$origin = $_SERVER['HTTP_ORIGIN'] ?? '';
// 验证
if (!in_array($origin, $allowedOrigins)) {
    http_response_code(403);
    exit('Access Denied: Invalid origin.');
}
// 可选:设置CORS响应头(用于AJAX)
header("Access-Control-Allow-Origin: $origin");
header("Access-Control-Allow-Credentials: true");

重要注意事项:

  1. 安全性

    • RefererOrigin可被伪造,不能依赖其做敏感操作的安全验证
    • 关键操作(如支付、账户修改)应使用服务端会话(Session)或Token验证。
  2. 适用场景

    • Referer:普通页面跳转、资源防盗链(图片/文件)。
    • Origin:AJAX请求、API接口跨域控制。
  3. 直接访问处理

    php限制域名访问网站

    • 直接输入URL访问时Referer为空,需根据需求决定是否允许(示例代码中禁止了空Referer)。
  4. 通配符支持

    • 如需泛域名匹配(如*.example.com),可用正则:
      $pattern = '/.example.com$/';
      if (!preg_match($pattern, $domain)) { ... }
  5. 性能优化

    将域名列表缓存或存储在配置文件中,避免每次请求重复定义。

    php限制域名访问网站


完整示例(结合两种方法):

$allowedDomains = ['example.com', 'api.example.com'];
$refererDomain = parse_url($_SERVER['HTTP_REFERER'] ?? '', PHP_URL_HOST);
$origin = $_SERVER['HTTP_ORIGIN'] ?? '';
// 验证Referer(非AJAX)或Origin(AJAX)
$isValid = in_array($refererDomain, $allowedDomains) || 
           in_array(parse_url($origin, PHP_URL_HOST), $allowedDomains);
if (!$isValid) {
    http_response_code(403);
    exit('Domain not permitted.');
}

提示:对于生产环境,建议结合Web服务器(如Nginx/Apache)的访问控制,效率更高且减少PHP处理压力。

图片来源于AI模型,如侵权请联系管理员。作者:酷小编,如若转载,请注明出处:https://www.kufanyun.com/ask/289540.html

(0)
上一篇 2026年2月9日 18:27
下一篇 2026年2月9日 18:39

相关推荐

  • php网站程序源码怎么用?免费下载安装教程

    PHP网站程序源码的选择与应用,直接决定了网站的性能上限、安全等级以及后续的运维成本,核心结论在于:一套优质的PHP源码,必须具备清晰的MVC架构、严格的输入过滤机制以及完善的缓存策略,企业在部署时不应仅关注功能堆砌,更应从代码执行效率与安全合规性角度进行深度评估,结合高性能的云基础设施,才能构建出既稳定又安全……

    2026年3月13日
    0925
  • php网站漏洞在线扫描工具有哪些?php网站漏洞扫描工具推荐

    PHP网站漏洞在线扫描工具是保障Web应用安全的核心防线,其核心价值在于能够自动化检测代码逻辑缺陷、配置错误及已知CVE漏洞,将被动防御转变为主动排查,对于运维人员而言,选择一款具备深度检测能力且误报率低的扫描工具,并建立定期的扫描机制,是降低企业数据泄露风险的最优解,PHP应用面临的安全挑战与扫描工具的必要性……

    2026年3月16日
    0914
  • php网站建设平台搭建,如何搭建php网站平台

    PHP网站建设平台搭建的核心在于构建一套高性能、高可用且易于维护的技术栈架构,这不仅仅是代码的堆砌,而是对服务器环境、数据库设计、框架选择及安全防护的综合考量,一个优秀的PHP建设平台,必须在开发效率与系统负载能力之间找到完美的平衡点,通过容器化部署与OPcache加速技术,实现毫秒级响应与高并发处理能力, 这……

    2026年3月20日
    0765
    • 服务器间歇性无响应是什么原因?如何排查解决?

      根源分析、排查逻辑与解决方案服务器间歇性无响应是IT运维中常见的复杂问题,指服务器在特定场景下(如高并发时段、特定操作触发时)出现短暂无响应、延迟或服务中断,而非持续性的宕机,这类问题对业务连续性、用户体验和系统稳定性构成直接威胁,需结合多维度因素深入排查与解决,常见原因分析:从硬件到软件的多维溯源服务器间歇性……

      2026年1月10日
      020
  • PHP负载均衡怎么计算,PHP负载均衡算法有哪些?

    实现PHP应用的高性能与高可用,其核心在于构建科学的负载均衡体系,结论先行:PHP负载均衡并非简单的流量分发,而是基于反向代理层、应用层及数据层的协同调度机制,通过Nginx作为反向代理入口,结合加权轮询或最少连接算法分发请求,并利用Redis实现Session共享、通过共享存储解决文件一致性问题,是应对高并发……

    2026年2月27日
    0882

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注