我的网络应用程序通过外部来源接收电子邮件地址和一些用户信息,验证该信息,然后应发送一封电子邮件,其中包含该用户的链接。该链接具有少量价值,因此它应该是安全的。
使用长度为 200 的 64 个字符的字符串来防止对网站的任何攻击就足够了吗?
伪代码:
id = '';
length = 200;
characters = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_-';
for (i = 0; i < length; i++) {
id += characters[random(characters.length)];
}
link = WEB_URL + "?" + id;
// create this url with valuable information on the server
// email link with id appended in URL fragment to user
为了解决冲突,我计划使用sha512
将 URL 的哈希值存储到带有电子邮件地址的数据库中以进行查找。我假设使用盐会过大。无论如何,暴力破解 id 并不是很容易。
使用这种方法会遇到任何安全问题吗?我想避免用户被登录屏幕或 cookie 所困扰。