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

如何彻底验证请求是否来自官方网站?防范钓鱼网站盗用认证接口

解决方案:针对钓鱼站伪造认证请求的防护方案

你的问题本质是钓鱼站窃取用户凭证后,通过模拟合法环境调用你的认证接口,核心痛点是之前的防护都依赖前端可篡改的逻辑,以下是后端主导的可行方案:

1. 强制启用SameSite Cookie隔离

  • 将认证相关的Cookie设置为SameSite=Strict; Secure; HttpOnly:
    • SameSite=Strict会让浏览器仅在用户主动访问你的域名时才携带该Cookie,钓鱼站发起的跨域请求无法带上认证Cookie;
    • Secure确保Cookie仅通过HTTPS传输;
    • HttpOnly防止前端JS读取Cookie,避免钓鱼站通过脚本窃取。
  • 对比你之前的CSRF Token方案:CSRF Token依赖前端携带,钓鱼站可通过爬虫或模拟页面获取,但SameSite是浏览器层面的强制控制,钓鱼站无法绕过。

2. 后端严格校验Origin/Referer头

  • 后端在处理认证请求时,直接校验请求头中的Origin或Referer,仅允许你的合法域名列表(比如https://yourdomain.com):
    • Origin是浏览器在跨域请求中自动添加的头部,钓鱼站无法伪造——即使使用代理,浏览器也会发送真实的请求发起源,代理只能转发无法篡改;
    • 若担心部分场景下Origin缺失,可结合Referer做 fallback,但需注意过滤掉非法的Referer值。

3. 会话绑定的一次性授权令牌

  • 后端在用户登录或每次页面加载时,生成与当前Session ID绑定的一次性令牌,存储在HttpOnly Cookie或你的域名下的Session中;
  • 认证接口要求请求携带该令牌,后端校验令牌与Session的绑定关系,且令牌只能使用一次;
  • 钓鱼站就算拿到用户凭证,也无法获取该令牌——因为令牌仅存在于你的域名上下文,跨域无法访问。

4. 替换为WebAuthn无密码认证

  • 使用WebAuthn(比如指纹、硬件密钥)替代传统账号密码认证:
    • WebAuthn的认证流程由浏览器原生管控,挑战请求只能由你的后端生成,且必须在你的域名下完成用户交互;
    • 钓鱼站无法模拟WebAuthn的认证过程,因为浏览器会严格校验请求发起的域名与注册时的域名一致。

关于你之前方案失效的补充说明

你之前的所有尝试都依赖前端逻辑生成校验信息,但前端代码本身可被反编译、篡改,甚至通过无头浏览器模拟执行,所以无法从根本上防护。而上述方案都是后端主导+浏览器原生安全机制,钓鱼站无法突破浏览器的同源策略和安全限制。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 23:27:44