我的网络应用程序通过外部来源接收电子邮件地址和一些用户信息,验证该信息,然后应发送一封电子邮件,其中包含指向该用户的链接。该链接具有少量价值,因此它应该是安全的。
使用长度为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感到困扰。
答案 0 :(得分:1)
除非电子邮件被截获,否则我认为您正在做的事情(实际上)可以做些什么来防止攻击。但是,薄弱环节是电子邮件被截获的可能性。如果收件人的邮件服务器支持TLS,请确保您的邮件服务器通过TLS(传输层安全性)连接到收件人的邮件服务器,这将有所帮助 - 否则邮件将以未加密的方式发送。如果您通过远程邮件服务器发送这些邮件服务器,那么您可能还需要确保您的应用程序也通过SSL或TLS连接到该邮件服务器,原因相同。