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

使用PHP替代JavaScript实现Firebase Phone Authentication管控恶意请求

方案说明

该需求完全可以实现,核心逻辑是将发送验证码的权限收口到PHP后端,避免前端直接调用Firebase接口暴露可被恶意刷的入口,具体可按以下步骤落地:

1. 调整原有调用逻辑,废弃前端直接发验证码的方式

原有前端直接调signInWithPhoneNumber的逻辑要全部下线,改成先请求自有PHP后端接口,校验通过后再由PHP后端调用Firebase Admin SDK触发验证码发送。
调整后的前端示例逻辑:

// 先调用自己的PHP接口提交手机号+人机校验参数
fetch('/php/send_verify_sms.php', {
  method: 'POST',
  headers: {'Content-Type': 'application/json'},
  body: JSON.stringify({
    phone: phoneNumber,
    // 可选带人机校验token,比如滑块、图文验证码的校验结果
    captcha_token: captchaResult
  })
}).then(res => res.json()).then(data => {
  if(data.code === 0) {
    log('SMS sent');
    window.confirmationResult = data.confirmation_result;
  } else {
    log('Error : SMS not sent ' + data.msg);
  }
}).catch(err => log('请求失败'+err));

2. PHP后端做多层限流校验

PHP侧对接收到的验证码发送请求做多重校验,只要有一项不通过就直接拒绝请求:

  • 手机号维度限流:同一个手机号1分钟内最多请求1次,1小时内最多请求5次,24小时内最多请求10次,请求记录可存在Redis或者MySQL中
  • IP维度限流:同一个IP1小时内最多请求20次,防止攻击者用不同手机号批量刷取
  • 人机校验校验:如果前端传了人机校验的token,后端先校验token有效性,通过才走后续流程,能挡住90%以上的机器自动刷请求
  • 异常手机号拦截:可内置规则拦截明显的虚拟号段、不符合手机号格式的请求

3. PHP后端调用Firebase Admin SDK发验证码

校验全部通过后,用PHP的Firebase Admin SDK调用发送验证码的接口,拿到confirmationResult后返回给前端即可,PHP侧的示例代码逻辑:

<?php
// 初始化Firebase Admin SDK,需提前安装firebase/php-admin-sdk依赖
use Kreait\Firebase\Factory;

$factory = (new Factory)->withServiceAccount('/path/to/firebase_credentials.json');
$auth = $factory->createAuth();

// 上面提到的各类校验逻辑此处省略
// 校验通过后调用Firebase发验证码
$phoneNumber = $_POST['phone'];
$appVerifier = $_POST['recaptcha_token']; // 对应前端的reCAPTCHA token

try {
    $confirmationResult = $auth->signInWithPhoneNumber($phoneNumber, $appVerifier);
    echo json_encode([
        'code' => 0,
        'msg' => '发送成功',
        'confirmation_result' => $confirmationResult
    ]);
} catch (Exception $e) {
    echo json_encode([
        'code' => 1,
        'msg' => $e->getMessage()
    ]);
}
?>

临时轻量化备选方案

如果暂时不想调整前后端交互逻辑,也可以在Nginx层先做接口限流,针对Firebase认证接口的调用路径做IP和请求频率限制,不过这种方式的防护能力比后端收口的方案弱,仅适合作为临时过渡方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 18:27:03