安全

常见风险

短信验证码、AI 额度、垃圾表单、上传滥用、支付通知和密钥泄露的常见后果

你真正会遇到什么

很多早期产品不会一上来就遇到复杂攻击,但很容易遇到“被批量调用”的问题。对个人开发者来说,这类问题的伤害更直接:账单变高、服务变慢、后台数据变脏、用户被骚扰。

下面这些场景比抽象的安全术语更值得先理解。

短信验证码被刷

短信验证码是最容易产生真实成本的入口。攻击者不断请求发送验证码,哪怕他并不真的登录,也会让你的短信服务商一直扣费,还可能让很多手机号收到骚扰短信。

你应该做:

  • 同一个手机号一段时间内只能发送有限次数。
  • 同一个访问来源一段时间内只能发送有限次数。
  • 失败请求也要计入次数,不能只限制成功发送。
  • 出现异常时再开启人机验证,不要只靠前端按钮倒计时。

AI 额度被刷

如果你的产品接了 AI 聊天、图片生成、视频生成或总结功能,攻击者可以反复请求这些接口,把模型额度刷完。结果可能不是网站立刻崩掉,而是第二天你发现账单异常,正常用户也用不了。

你应该做:

  • AI 相关接口单独限流,不能只用全站统一限制。
  • 登录后才能使用高成本能力。
  • 用积分、套餐或每日额度限制生成次数。
  • 服务端保存真实调用记录,方便发现异常用户。

垃圾表单和垃圾反馈

公开反馈表单、联系表单、评论区、报名表都可能被脚本批量提交。后果是后台塞满垃圾数据,邮箱收到大量无意义通知,真正的用户反馈被淹没。

你应该做:

  • 表单提交要有限流。
  • 加一个隐藏字段拦截简单机器人。
  • 对高频提交加人机验证。
  • 后台保留来源、时间和用户信息,方便拉黑和清理。

上传入口被当成免费网盘

只要你开放头像、附件、作品集、PDF、压缩包或图片上传,就要假设有人会上传超大文件、重复文件,甚至违规文件。对象存储和带宽都可能产生费用。

你应该做:

  • 限制单个文件大小。
  • 限制允许上传的文件类型。
  • 限制每个用户一段时间内的上传次数。
  • 对产品级上传再加总容量配额,比如免费用户最多多少 MB。

登录被批量试密码

攻击者可能拿其他网站泄露的邮箱和密码来尝试登录你的站点。这叫撞库。你的数据库没有泄露,也可能因为用户复用密码而被登录成功。

你应该做:

  • 登录失败次数要有限制。
  • 管理员账号开启双因素认证。
  • 异常登录时要求人机验证。
  • 不要把管理员入口当成“没人知道就安全”。

支付成功通知被伪造

支付系统通常会给你的网站发一个“这笔订单已经支付成功”的通知。如果你不验证这个通知是不是支付平台真的发来的,就可能出现用户没付款但系统给他发货、开通会员、增加积分的情况。

你应该做:

  • 只相信支付平台签名验证通过的通知。
  • 检查订单金额、币种、订单号和支付状态。
  • 同一笔订单重复通知时只处理一次。
  • 发货或开通权限前再读一次订单状态。

API key 泄露

AI、短信、邮件、对象存储、支付渠道通常都有 secret key。只要这些 key 进了前端代码、公开仓库、截图或日志,就要当作已经泄露处理。

你应该做:

  • 真实密钥只放部署平台的环境变量或 Secret 管理里。
  • 前端只能放明确允许公开的 site key 或 publishable key。
  • 提交前运行安全检查。
  • 发现泄露后立刻到服务商后台轮换密钥。

下一步