我们有一种设计方法,该方法正在为每个注册用户创建一个主题。
- 创建新用户
- 使用生成的令牌将其保存到我们的数据库
- 在Android上的用户登录时订阅
/topics/{user-token}
或iOS设备。
因此,如果用户有多个设备,并且如果要发送特定的用户通知,我们只将其发送到/topics/{user-token}
,因此所有设备都会收到。
我们尚未遇到一些用户的任何问题,但是Firebase限制是否可以,这是一个很好的方法吗?
(我正在将我的评论转移到答案中)
大多数情况下,每个用户创建一个FCM主题不是一个好主意。
发送到FCM主题的消息是公开的。任何用户(甚至来自 不同的应用程序)可以订阅/topics/{user-name}并接收这些 消息。
示例:
另一个开发人员可以从您的APK复制Google-services.json文件。
然后他可以订阅任何主题。
要拦截您的用户消息,攻击者仍然需要猜测{用户名}或您使用的任何其他标识符。但是,如果您认为这可能发生,那么问题很大,因为您永远不会知道某人是否正在收到您的消息的副本,并且通常永远不会更改{user-name}。
这不是FCM的安全问题。这是主题API设计的一部分。
如果您需要安全的消息,则可以将它们直接发送到设备令牌。
如果您仍然想每个用户执行一个主题,请注意不要发送敏感数据或不应被第三方拦截的数据。