我正在创建一个应用程序,客户可以在其中为活动添加电子邮件地址。这意味着每个电子邮件地址在添加到列表时通过电子邮件发送2个网址,1个网址接受,另一个网址拒绝。网址由许多查询参数,id等组成。
我遇到的问题是我想要防止有人可以“猜测”其他人网址的情况 - 就像这样的客人参数组合等等。虽然这种情况不太可能,但我仍然希望阻止这样做。
我已经看过几个有助于防止这种情况的场景,即。添加哈希值,加密网址等。但我正在寻找最安全和最佳实践的方法,并希望任何可能的反馈。
顺便说一下,我在C#中进行编码,但我不相信解决方案是针对特定语言的。
提前致谢。
答案 0 :(得分:0)
我同意这不是语言特定的。在过去的几年里,我的情况与此非常相似。由于儿童和父母接收通信,因此需要非常安全。最快的解决方案如下:
GUID非常难以猜测,并且猜测实际可用的GUID的可能性太小,几乎不可能。
答案 1 :(得分:0)
我猜你正在某处保存这些电子邮件地址。因此,为每个条目制作安全标识符非常容易。无论是散列还是某种加密技术,都无关紧要。但我想哈希更容易实现,实际上意味着这项工作。
所以你散列例如emailaddress,记录的PK值,加上它的时间戳,以及一些真的不可能猜盐。只需将各个字段连接在一起并散列它们即可。
最后,您只向服务器发送散列密钥。因此,当您发送这两个链接时,它们可能如下所示:
http://www.url.com/newsletter/acceptsubscription.aspx?id=x1r15ff2svosdf4r2s0f1
http://www.url.com/newsletter/cancelsubscription.aspx?id=x1r15ff2svosdf4r2s0f1
当用户单击此类链接时,您的服务器会在数据库中查找包含所提供密钥的记录。易于实施,如果做得对,真的很安全。在地狱里没有人可以猜到另一个人的关键。在使用散列处理时,请记住标准事物。如:
我不是这方面的专家,所以可能还有改进的余地。但是我认为这应该指向正确的方向。
修改:我必须添加; Tim C提供的解决方案也很好。对于像这样的情况,GUID确实非常有用,并且与上面的哈希解决方案一样有效地工作。