Firebase Cloud Messaging应用连接信息隐藏及安全防护咨询
FCM安全防护方案:隐藏配置与攻击防范
一、关于firebaseConfig和vapidKey的处理
- firebaseConfig本质是客户端公开配置,Firebase设计上就允许前端暴露,核心安全靠后端规则和服务端密钥撑着。真要减少暴露,就把初始化逻辑移到后端API,前端只调用后端接口拿令牌,别在前端硬写firebaseConfig。
- vapidKey是公钥,本身就是用来公开的(给客户端和FCM服务器做加密通信),完全没必要藏。真正要捂紧的是对应的私钥,这个必须存在后端,绝对不能碰前端代码。
二、防范批量发送通知
- 所有发通知的请求必须走自己的后端,不能让前端直接调FCM API。后端要加请求频率限制,比如给每个用户/IP设个每分钟请求上限,堵死批量发送的路子。
- 后端得先验证发送者身份,比如用用户登录的JWT会话确认只有合法用户能发,而且只能发给属于自己的目标用户,不能瞎发。
- 用Firebase云函数处理发送逻辑,配合Firebase Auth验身份,别直接把服务端密钥暴露出去。
三、防范接收他人私人通知
- 每个FCM设备令牌必须和用户账号绑定,后端存令牌的时候要关联用户ID。发通知的时候,只给目标用户绑定的令牌发。
- 客户端用户注销账号时,调用
deleteToken()删掉当前设备的令牌,同时通知后端把这个令牌的绑定关系移除,防止退登后还收到旧账号的通知。 - 如果用主题通知,要做订阅验证,后端控制用户只能订阅自己有权限的主题,比如只能订自己的个人主题,不能乱订别人的。
四、额外安全加固
- 开Firebase Auth的安全规则,确保只有认证过的用户才能碰FCM相关功能。
- 定期轮换FCM服务端密钥,要是怀疑密钥泄露,立刻去Firebase控制台重新生成。
- 后端发通知的接口要做参数校验,比如检查目标令牌格式对不对,过滤无效请求。
内容的提问来源于stack exchange,提问作者Vivien
相关产品推荐
相关产品推荐

