安全风险:通过GET参数自动登录

时间:2011-07-06 03:47:24

标签: web-applications security

我正在建立一个网站,用户可以使用网站的消息系统(基本的电子邮件系统)创建帐户并互相发送消息。如果用户A收到来自另一个用户B的消息,我想通过他/她的电子邮件地址自动通知用户A.此外,我想保存用户A不必输入他/她的登录凭据到网站,以便访问此消息。

通过电子邮件向User-A发送一个自动在网站上记录他/她的特殊链接是不是一个坏主意?例如:“请点击www.domain.com/?message_id=1&hash=abc123”(我可以使用有效值自动将用户A记录到他/她的帐户并查看特定消息)。

电子邮件已包含User-B发送的消息。用户A必须前往该网站才能回复。

我想我的假设是这个链接是安全的,因为它会直接通过电子邮件发送给用户A,用户A应该保护他/她的电子邮件。此外,我可以使哈希仅在一段时间内工作或在第一次点击后等工作

1 个答案:

答案 0 :(得分:2)

此类事情的正常做法是拥有一次性授权页面,用户在第一次点击其中一个链接时将被带到该页面。此授权页面要求用户输入其完整凭据(用户名,密码等),并询问他们是否从可信/永久计算机进行连接。如果他们回答是,那么它会在浏览器中存储一个Cookie,以便让您的应用知道将来访问时浏览器已经过验证属于该用户。

在内部,您需要存储该Cookie的ID和用户ID,以便您可以在回访时验证Cookie是否与用户匹配。

您可能还希望通过注册过程向用户的注册电子邮件地址发送另一封电子邮件,并使用必须用于注册其浏览器的魔术令牌来另外投入一次。这可以防止第三方窃取他们的电子邮件并猜测他们的密码。当然,它并不能防止有实时访问其邮箱的攻击者。