Session 使用ColdFusion创建持久登录系统

Session 使用ColdFusion创建持久登录系统,session,cookies,login,coldfusion,coldfusion-10,Session,Cookies,Login,Coldfusion,Coldfusion 10,今天,我需要设计一个持久的登录系统。我关注了这个博客, 基本上按照这个博客,整个系统包括3个步骤 如果用户在登录时检查记住我,则用户ID的加密格式将存储在Cookie中 现在,当用户在会话过期的1/2天后访问站点时,将检查cookie。 如果发现userid cookie,那么它将被解密并存储在会话中以强制登录 现在在onRequest()方法会话中,检查userid以检查登录状态 直到这一切看起来都很好 但我所做的是,我从firefox复制了cookie并在chrome中创建。现在我可以 在

今天,我需要设计一个持久的登录系统。我关注了这个博客,

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

  • 如果用户在登录时检查
    记住我
    ,则用户ID的加密格式将存储在Cookie中

  • 现在,当用户在会话过期的1/2天后访问站点时,将检查cookie。 如果发现userid cookie,那么它将被解密并存储在会话中以强制登录

  • 现在在
    onRequest()
    方法
    会话中,检查userid
    以检查登录状态

  • 直到这一切看起来都很好

    但我所做的是,我从firefox复制了cookie并在chrome中创建。现在我可以 在chrome中以该用户身份成功登录。这不是一个大的安全问题吗


    有谁能建议我们应该做些什么来防止这种情况发生吗?

    是的,这是一种安全风险

    持久登录功能有点像雷区,任何东西都无法100%抵御攻击

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

    关于如何最好地处理持久登录,有几个学派的观点,这个问题已经讨论过了

    有几个要点:

    • cookie本身与密码一样敏感,不应在没有散列的情况下存储在DB中

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

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

    • 使用持久cookie登录的用户对您的系统的访问应该仍然有限。特别敏感的信息或操作仍应锁定在登录质询之后

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


    我非常推荐你读一些关于这个主题的书,以了解最佳实践。登录功能很容易实现,而且非常复杂。是的,这是一个安全问题,但是持久登录本身就是一个安全问题。您可以在cookie值中使用一些浏览器用户代理字符串或类似内容来检查它是否是同一个浏览器,等等。。。但这并不能起到很大的作用。实际上,这取决于应用程序和登录需要的安全程度,例如,登录背后的数据有多敏感。如果它非常敏感,那么首先就不应该允许持久登录。