Security 如何在OneSignal中安全地设置ExternalUserId()?
我正在我的网站上设置OneSignal 就我所见,有两种方法可以将推送订阅与我的用户ID关联:Security 如何在OneSignal中安全地设置ExternalUserId()?,security,push-notification,onesignal,web-push,Security,Push Notification,Onesignal,Web Push,我正在我的网站上设置OneSignal 就我所见,有两种方法可以将推送订阅与我的用户ID关联: 我可以调用OneSignal.getUserId(),它返回一个UUID,并对我的web服务器进行身份验证调用,将此UUID与我在服务器上登录的用户关联 我可以调用setExternalUserId()发送登录的用户ID,并将其与OneSignal服务器上的订阅相关联 第一个选项是完全安全的,因为只有劫持我的客户端代码才能发送无效的订阅ID(或他们创建的另一个有效订阅ID),这不是什么大问题 不过
- 我可以调用
,它返回一个UUID,并对我的web服务器进行身份验证调用,将此UUID与我在服务器上登录的用户关联OneSignal.getUserId()
- 我可以调用
发送登录的用户ID,并将其与OneSignal服务器上的订阅相关联setExternalUserId()
setExternalUserId()
,同时防止用户将其订阅与其他用户关联?
我能想到的唯一安全场景是,如果我的用户也有UUID,而不是顺序ID,并且这些UUID是保密的(即从未在网站上公开)
我能想到的任何其他场景听起来都很不安全
我遗漏了什么吗?我认为您的推理是正确的,确保
setExternalUserId()
安全的唯一选择是使用长随机标记。然而,我认为更好的选择是使用加密签名来设置用户ID:我是Pushpad的创始人,事实上,对于我们的服务,我们总是需要签名来设置用户ID。默认情况下,我们的方法是安全的,您可以使用实际的用户ID(而不是长的随机令牌)您可以通过撤销/替换一个主密钥(而不是数百万个用户ID)轻松地使所有签名无效。这是真的,pushpad做得很好。不过,如果你只有40个用户,你就必须每月支付10美元。。。。因此,我认为在这种情况下,如果用户少于5000,Onesignal值得冒险。