当前位置:首页 > PHP

php实现域名授权

2026-01-30 07:59:29PHP

域名授权的基本原理

域名授权通常用于限制PHP脚本只能在特定域名下运行,防止未经授权的域名调用脚本。实现方式包括验证HTTP请求中的域名信息、服务器变量检查或结合加密验证。

验证HTTP_HOST

通过检查$_SERVER['HTTP_HOST']$_SERVER['SERVER_NAME']获取当前访问域名,与授权域名列表比对:

$allowedDomains = ['example.com', 'sub.example.com'];
$currentDomain = $_SERVER['HTTP_HOST'];

if (!in_array($currentDomain, $allowedDomains)) {
    header('HTTP/1.1 403 Forbidden');
    exit('Domain access denied');
}

使用加密签名

生成包含域名的加密令牌,客户端需携带该令牌验证合法性:

$secretKey = 'your_secret_key';
$authorizedDomain = 'example.com';
$token = md5($authorizedDomain . $secretKey);

// 客户端请求需携带token参数
if ($_GET['token'] !== $token) {
    die('Invalid domain authorization');
}

结合数据库验证

存储授权域名到数据库,动态验证请求来源:

$db = new PDO('mysql:host=localhost;dbname=auth_db', 'user', 'pass');
$stmt = $db->prepare("SELECT 1 FROM allowed_domains WHERE domain = ?");
$stmt->execute([$_SERVER['HTTP_HOST']]);

if (!$stmt->fetch()) {
    header('Location: https://error.com/unauthorized');
    exit;
}

通过.htaccess限制

Apache服务器可通过配置文件限制访问来源:

RewriteEngine On
RewriteCond %{HTTP_HOST} !^(www\.)?example\.com$ [NC]
RewriteRule ^ - [F]

动态脚本授权

对于API或远程调用场景,使用时间戳+域名生成动态签名:

php实现域名授权

$domain = $_SERVER['HTTP_HOST'];
$timestamp = time();
$validWindow = 300; // 5分钟有效期
$signature = hash_hmac('sha256', $domain.$timestamp, 'secret_key');

if (abs(time() - $_GET['timestamp']) > $validWindow 
    || $_GET['sign'] !== $signature) {
    die('Authorization failed');
}

注意事项

  • HTTP_HOST可能被伪造,需结合其他验证手段
  • 考虑使用HTTPS防止中间人攻击
  • 重要系统建议结合IP白名单验证
  • 定期更新加密密钥增强安全性

标签: 域名php
分享给朋友:

相关文章

php实现搜索功能

php实现搜索功能

实现基本的搜索功能 在PHP中实现搜索功能通常涉及数据库查询。以下是一个简单的实现方式,假设使用MySQL数据库: <?php // 连接数据库 $conn = new mysqli('loc…

php 购物车实现

php 购物车实现

数据库设计 购物车功能通常需要设计数据库表存储商品和用户信息。常见的表包括products(商品表)、users(用户表)和cart(购物车表)。cart表通常包含字段:id(主键)、user_id(…

php实现跳转

php实现跳转

PHP 实现页面跳转的方法 在 PHP 中实现页面跳转有多种方式,以下是常见的几种方法及其适用场景: 使用 header() 函数 通过 header() 函数发送 HTTP 头部信息实现跳转。注意…

php 函数实现

php 函数实现

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

php数组实现

php数组实现

PHP 数组的基本实现 PHP 数组是一种非常灵活的数据结构,可以存储多个值,并且支持多种类型的键(整数或字符串)。PHP 数组实际上是有序映射(ordered map),可以看作是列表(vector…

php https实现

php https实现

PHP 中实现 HTTPS 的方法 在 PHP 中实现 HTTPS 主要通过配置服务器和编写代码来确保通信的安全性。以下是几种常见的方法: 配置服务器支持 HTTPS 确保服务器已安装 SSL/T…