2

我们希望 AutoLogin 功能允许用户使用链接直接登录到我们的 Web 应用程序。实现这一目标的最佳方法是什么?

我们有以下方法。

1) 将用户凭据(用户名/密码)存储在 cookie 中。发送 cookie 进行身份验证。

例如 http://www.mysite.com/AutoLogin (这里的用户名/密码将在 cookie 中传递)

或在链接 URL 中传递用户凭据。

http://www.mysite.com/AutoLogin?userid=<>&password=<>

2)生成随机令牌并将用户随机令牌和用户IP存储在服务器端数据库中。

当用户使用链接登录时,验证服务器上的令牌和用户 IP。

例如

http://www.mysite.com/AutoLogin?token=<>

第一种方法的问题是,如果黑客将链接/cookie 从用户机器复制到他可以登录的另一台机器。

第二种方法的问题是代理后面同一组织的所有用户的用户 ip 都是相同的。

从安全角度来看,哪一个更好?如果有比上述更好的解决方案,请告诉我们。

4

2 回答 2

2

唯一安全的“自动登录”是在正常登录后设置的 cookie,并在用户返回站点时进行验证。cookie 应在合理的时间后过期。您的第一种方法与此类似,但您首先没有解释他们的用户名和密码是如何存储在 cookie 中的。与其以明文形式存储,不如存储一系列至少包含以下内容的 cookie:

  1. 他们的用户名
  2. 过期时间
  3. 先前项目的签名哈希。签名意味着哈希包含一个只有站点知道的秘密,并且从不泄露给任何人。当 cookie 返回给您时,重新签署前两项,并将签名与他们 cookie 中的签名进行比较。如果匹配,您就知道它来自您并且没有被篡改,因此您可以让他们进入。
于 2010-06-02T13:49:45.380 回答
0

Which one is better from above from security perspective?

两者都不好,但是以明文形式存储密码是一种罪过。请不要考虑它。

If there is better solution which is other than mentioned above, please let us know.

不要实现自动登录。它永远不会是安全的。

于 2010-06-02T13:43:42.033 回答