我正在通过 Emma(第 3 方供应商)发送一封群发电子邮件,其中包含指向登录页面的链接。登陆页面将被个性化并显示一些用户的识别信息(姓名、头衔、电子邮件)。此外,还会有一个表格收集用户的一些偏好,这些偏好将被保存回 Emma 数据库中该用户的记录中。
第 3 方数据库中的用户 ID 列是增量的,因此我显然不能只通过查询字符串附加该值,否则例如用户 522 将获得一个链接,例如www.example.com?landing/?uid=522
允许他(或任何拥有该链接的人)c 获取随意猜测其他值uid
(例如 523... 或 444)并更改其他用户的偏好以及很容易地查看他们的个人数据。
最重要的是,我正在尝试找到一种安全的方式来传递一个 ID(或其他唯一值),我可以通过 API 查找并使用它来动态显示,然后在用户的此登录页面上重新提交个人信息/数据-以用户为基础。
我想在 Emma 的列表中添加一个自定义列作为唯一标识符。然后我会编写一个脚本(访问 Emma 的 API)对 ID(或者可能是电子邮件地址,因为这也是唯一的)进行 BASE64 编码,并将其添加到每个用户的列表中。然后,在我的电子邮件中,我可以将它以 的形式传递到登录页面?xy=ZGF2ZUBidWRvbmsuY29t
,但我知道这是编码而不是加密,所以不是那么安全……或者根本不安全。
据我所知,接收邮件的任何人都没有能力和/或倾向于知道链接中的那些额外字符是什么,BASE64 解码,BASE64 编码另一个电子邮件地址或整数,并使用新的 BASE64 编码发出请求价值,以便以一种意想不到的方式操纵我的系统。
但是出于这个问题的目的,我想知道执行此操作的“正确”方法,或者在类似情况下目前采取的安全级别。我已经阅读了有关 JWT 令牌和一些 OOth 的内容,但我不太确定这是可能的,因为我也有 Emma API 来处理......和/或这是否是矫枉过正。
当用户能够提交“妥协”(有意或无意)表单时,将值传递给页面的适当/标准又用于重新提交表单以及其他用户提供的值最糟糕的是,可能会导致他们的竞争对手有不良偏好并选择在我们的 Emma 邮件列表中保存数据?