security - 如何在 OneSignal 中安全地 setExternalUserId()?
问题描述
我正在我的网站上设置 OneSignal。
据我所知,有两种方法可以将推送订阅与我的用户 ID 相关联:
- 我可以调用
OneSignal.getUserId()
,它返回一个 UUID,并对我的 Web 服务器进行经过身份验证的调用,以将此 UUID 与我服务器上的登录用户相关联 - 我可以调用
setExternalUserId()
发送登录的用户 ID 并将其与OneSignal 服务器上的订阅相关联
第一个选项非常安全,因为只能劫持我的客户端代码以发送无效的订阅 ID(或他们创建的另一个有效订阅 ID),这没什么大不了的。
但是,第二种选择感觉完全不安全:任何人都可以劫持客户端代码以发送任何有效的用户 ID 并将其与其订阅相关联,从而代表另一个用户接收通知。
有没有一种方法可以setExternalUserId()
在防止用户将其订阅与其他用户关联的同时安全使用?
我能想到的唯一安全方案是,如果我的用户也有 UUID,而不是顺序 ID,并且这些 UUID 是保密的(即从未在网站上公开公开)。
我能想到的任何其他情况听起来都很不安全。
我错过了什么?
解决方案
推荐阅读
- object - 有没有办法将 Map() 对象传递给不同屏幕中的不同状态小部件?
- mysql - 选择唯一的一对字符串,无论顺序如何
- gremlin - Tinkergraph 遍历在我的图表上返回一个空数组 []
- php - 检查与 AJAX 和 PHP 的重叠
- python - 使用带有自定义 app_name 的 PasswordResetDoneView 时找不到“password_reset_confirm”的反向
- .net - 我们可以通过Powershell加密由密码组成的环境变量吗
- python - Pandas - 在 groupby() 和 sum() 之后产生 JSON 响应
- python - Django / 在 ListView 中获取特定的查询集
- github - 如何在步骤之间秘密传递变量?
- java - 无法获取 (Mongodb/Morphia) 的引用