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

Google翻译API v2指定域名调用的安全配置及防伪造问题

如何限制Google翻译API v2仅允许指定域名调用,同时防止Referer伪装?

问题背景

我正在使用Google翻译API v2,通过AJAX调用/translate接口,但这样我的API密钥会对所有人可见。我在Google凭据的API密钥限制里设置了HTTP referrers(网站)为www.aliceandbob.com,但出现了问题:

  • 当手动在请求中设置Referer头时,API返回200 OK;
  • 移除手动设置的Referer后,收到403错误:403 Forbidden Requests from referer <empty> are blocked。

核心疑问:怎么实现仅允许指定域名调用API,同时防止他人手动设置Referer伪装成该域名?


问题根源:Referer头的本质局限性

首先得明确:Referer头是完全可以被伪造的——不管是通过curl、Postman还是自定义前端脚本,任何人都能轻易修改这个头的值来绕过你的域名限制。单纯依赖HTTP Referrer限制是无法防止伪造的,这是HTTP协议本身的特性决定的。


可行解决方案

1. 改用服务器端代理(最推荐,从根源解决问题)

不要让前端直接调用Google翻译API,而是在你的www.aliceandbob.com服务器上搭建一个代理接口:

  • 前端向你自己的服务器接口发送翻译请求(全程不暴露Google API密钥);
  • 你的服务器接收到请求后,再调用Google翻译API(此时可以安全使用API密钥,还能在服务器端做额外验证);
  • 服务器把Google的响应返回给前端。

这种方案的优势:

  • API密钥完全隐藏在服务器端,不会泄露给前端;
  • 你可以在自己的服务器上添加更严格的验证逻辑(比如检查请求Origin头、添加自定义签名、限制请求频率等),从根本上杜绝伪造请求;
  • 完美适配Google的Referer限制要求,服务器端调用时可以稳定设置合法的Referer值。

基于你提供的代码,修改后的PHP代理示例:

// 你的服务器代理接口,比如 /api/translate.php
function proxyTranslate($text, $targetLang) {
    // 这里可以添加自定义验证逻辑,比如检查请求是否来自你的前端
    // 例如验证请求的Origin头,或者校验前端传递的签名参数
    
    $apiKey = "你的Google API密钥"; // 安全存储在服务器端,绝不暴露给前端
    $data = array(
        'q' => $text,
        'target' => $targetLang,
        'key' => $apiKey
    );
    
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, "https://translation.googleapis.com/language/translate/v2");
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
    // 设置合法的Referer,符合Google的限制要求
    curl_setopt($ch, CURLOPT_REFERER, "https://www.aliceandbob.com");
    $result = curl_exec($ch);
    curl_close($ch);
    
    return $result;
}

// 处理前端POST请求
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $text = $_POST['q'] ?? '';
    $target = $_POST['target'] ?? 'en';
    echo proxyTranslate($text, $target);
}

2. 结合其他API密钥限制增强安全性

如果你暂时无法搭建代理,可以配合Google提供的其他限制方式降低风险:

  • IP地址限制:如果你的服务器有固定公网IP,可以在API密钥的限制中添加该IP,确保只有你的服务器能调用API(配合代理使用效果最佳);
  • 请求配额限制:设置每日请求配额,即使密钥被伪造使用,也能控制损失范围;
  • 启用API监控:在Google Cloud控制台开启API使用监控,及时发现异常请求并调整限制策略。

总结

单纯依赖HTTP Referrer限制无法防止伪造请求,最安全的方案是将API调用转移到服务器端,隐藏API密钥并添加自定义验证逻辑。这样既符合Google的API限制要求,又能从根本上解决伪造问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 03:56:33