0

我的网络应用程序通过外部来源接收电子邮件地址和一些用户信息,验证该信息,然后应发送一封电子邮件,其中包含该用户的链接。该链接具有少量价值,因此它应该是安全的。

使用长度为 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 所困扰。

4

1 回答 1

1

除非电子邮件被截获,否则我认为您正在(实际上)采取一切措施来防止攻击。但是,薄弱环节是电子邮件被拦截的可能性。确保您的邮件服务器通过 TLS(传输层安全性)连接到收件人的邮件服务器,如果收件人的邮件服务器支持 TLS,将有所帮助 - 否则邮件会以未加密的方式发送。如果您通过远程邮件服务器发送这些邮件,那么出于同样的原因,您可能还希望确保您的应用程序也通过 SSL 或 TLS 连接到该邮件服务器。

于 2013-07-12T16:24:26.647 回答