使用ColdFusion创建持久登录系统

时间:2015-02-25 13:54:47

标签: session cookies login coldfusion coldfusion-10

今天我需要设计一个持久的登录系统。我关注过这个博客, http://www.bennadel.com/blog/1213-creating-a-remember-me-login-system-in-coldfusion.htm

基本上按照这篇博客,整个系统包含3个步骤,

  1. 如果用户在登录时检查Remember Me,则用户ID的加密格式将存储在Cookie中。

  2. 现在,当用户在会话过期后的1/2天内访问该网站时,将检查Cookie。 如果找到了userid cookie,那么它将被解密并存储在SESSION中以强制登录。

  3. 现在在onRequest()方法SESSION.userid中检查登录状态。

  4. 直到这一切看起来都不错。

    但我做的是,我从firefox复制了cookie并用chrome创建了。而现在我能够 在chrome中成功登录该用户。这不是一个很大的安全问题吗?

    有人可以建议我们应该采取什么措施来防止这种情况发生?

1 个答案:

答案 0 :(得分:2)

是的,这是一个安全风险。

持久登录功能有点像雷区,没有任何东西可以100%抵抗攻击。

您可以通过将持久性Cookie视为单次使用密码来缓解此问题。如果我理解正确,您的系统将散列用户的ID,这意味着cookie将无限期地保持相同的值。相反,它应该是加密强大的随机字符串,在每次认证时都会重新生成。

关于如何最好地处理持久登录有几种思路,我们已经讨论了这个问题many times before

一些要点:

  • Cookie本身与密码一样敏感,不应在未经过哈希处理的情况下存储在数据库中。

  • 当用户使用cookie进行身份验证时,您将其从数据库中删除并发布一个新的。

  • Cookie应该只通过HTTPS发送,这意味着您的整个网站都需要在HTTPS下运行,或者您可以使用第二个 cookie来简单地告诉系统一个安全的持久性cookie存在,并且可以强制重定向到安全页面进行身份验证。

  • 使用持久性Cookie登录的用户仍应对您的系统进行有限的访问。特别敏感的信息或操作仍应锁定在登录挑战之后。

  • 持久性Cookie应仅在固定时间段内有效。这需要多长时间取决于应用程序的敏感性。

我非常建议你做一些关于这个主题的阅读,以了解最佳实践。登录功能非常容易实现,而且正确非常复杂。