You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WordPress中如何获取请求发送方hostname?替代req.hostname方案

可靠获取WordPress REST API请求客户端Hostname的方法

Referer请求头确实存在易篡改、可被禁用的问题,无法满足安全需求,以下是几种更可靠的替代方案:

1. 自定义请求头+可信域名验证

让客户端发送自定义请求头(比如X-Client-Hostname),同时在服务端添加可信域名白名单验证,避免伪造。示例代码:

function handle_proxy_request( $request ) {
    // 从服务器变量中获取自定义头(注意HTTP_前缀、大写格式)
    $client_host = $_SERVER['HTTP_X_CLIENT_HOSTNAME'] ?? '';
    
    // 验证客户端hostname是否在可信列表内
    $trusted_hosts = ['your-trusted-domain.com', 'another-allowed-domain.org'];
    if ( !in_array( $client_host, $trusted_hosts ) ) {
        return new WP_Error( 'invalid_host', '不可信的客户端域名', ['status' => 403] );
    }
    
    // 后续业务逻辑
    // ...
}

注意:该方案需要客户端配合发送自定义头,且必须搭配白名单验证,否则仍存在伪造风险。

2. IP反向解析+双向校验

通过客户端IP反向解析hostname,同时校验解析后的IP是否与原客户端IP一致,避免DNS欺骗。示例代码:

function handle_proxy_request( $request ) {
    $client_ip = $_SERVER['REMOTE_ADDR'] ?? '';
    $client_host = gethostbyaddr( $client_ip );
    
    // 反向校验:确保解析出的域名能转回原IP
    $resolved_ip = gethostbyname( $client_host );
    if ( $resolved_ip !== $client_ip ) {
        $client_host = ''; // 解析不可信,清空结果
    }
    
    // 后续业务逻辑
    // ...
}

局限性:并非所有IP都有对应的反向DNS记录,解析结果可能不准确,适合对精度要求不高的场景。

3. 认证凭证绑定域名(最高安全级别)

如果你的API使用API密钥或OAuth认证,可以在后台为每个认证凭证绑定允许的客户端域名。验证时先确认凭证合法性,再取出绑定的域名作为客户端hostname。示例代码:

function handle_proxy_request( $request ) {
    $api_key = $request->get_header( 'X-API-Key' );
    if ( !$api_key ) {
        return new WP_Error( 'missing_key', '需要提供API密钥', ['status' => 401] );
    }
    
    // 从WordPress选项中获取密钥对应的绑定域名(需提前配置)
    $api_keys = get_option( 'custom_api_keys' ) ?? [];
    $key_data = $api_keys[$api_key] ?? null;
    
    if ( !$key_data || empty( $key_data['allowed_host'] ) ) {
        return new WP_Error( 'invalid_key', '无效的API密钥', ['status' => 403] );
    }
    
    $client_host = $key_data['allowed_host'];
    // 后续业务逻辑
    // ...
}

优势:域名与认证凭证绑定,完全避免伪造,适合高安全要求的场景。

内容的提问来源于stack exchange,提问作者muhammed Amr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 09:57:07