Ruby on rails Rails中的匿名用户——安全注意事项?

Ruby on rails Rails中的匿名用户——安全注意事项?,ruby-on-rails,ruby,security,anonymous-users,Ruby On Rails,Ruby,Security,Anonymous Users,我正在考虑在Rails中实现某种形式的匿名用户系统。我需要让人们做一些事情(创建记录、查看他们创建的内容等),而不需要实际创建帐户。一旦他们创建了一个帐户,一切都会持续,不会因为清除cookies或其他东西而失去它 现在,我觉得这很简单。在用户模型中有一个is_匿名字段,并使用类似的方式访问当前登录的用户: def find_user session[:user_id] ||= create_new_anonymous_user.id end 假设会话持续一段合理的时间,并且会话cooki

我正在考虑在Rails中实现某种形式的匿名用户系统。我需要让人们做一些事情(创建记录、查看他们创建的内容等),而不需要实际创建帐户。一旦他们创建了一个帐户,一切都会持续,不会因为清除cookies或其他东西而失去它

现在,我觉得这很简单。在用户模型中有一个is_匿名字段,并使用类似的方式访问当前登录的用户:

def find_user
  session[:user_id] ||= create_new_anonymous_user.id
end
假设会话持续一段合理的时间,并且会话cookie没有过期,那么应该可以保持一切顺利运行

然而,我的这一部分确信我遗漏了一些与安全相关的东西。以前有人做过这样的事吗?我是不是错过了一些非常明显的东西

谢谢

假设会话持续一段时间 合理的时间段,以及 会话cookie不会过期,即 我们应该保持一切正常 顺利


也许您应该为新用户设置一个单独的长寿命cookie,这样他们就可以有多个会话(至少从该浏览器中)。

唯一真正的安全问题是这些匿名用户是否可以执行关键操作

您的系统意味着任何拥有特定cookie的人都可以访问该站点。这不一定有什么大不了的,但这实际上取决于用户提供的信息类型


我过去也做过类似的事情(在我的例子中,我通过一个站点跟踪进度,当用户登录或注册时,我附加了“guest”将数据添加到他们的帐户。当您进行切换时,请确保删除匿名记录以防止进一步访问,这样就可以了。

您确定要让人们创建绑定到可能不存在的帐户的对象吗?不幸的是,我不太了解您的应用程序实际上在做什么,但我认为这是正确的沿着这条路走下去可能会给你留下一堆孤立的对象,而这些对象并不是真正的用户“拥有”的


如果你真的想这样做,我认为你所拥有的是不错的。你可以创建一个真正的用户,标记为“来宾”(或其他什么),一旦用户想要真正注册,他们就会被提示输入其他信息,并且没有任何标记。你应该为来宾和非来宾添加访问控制,等等。

我刚刚发现了一个非常酷的示例使用Authlogic:

的“试用用户”:目的是在最后一次访问n天后删除所有匿名帐户及其相关记录,其中n是会话cookie过期前的天数。我希望使用的障碍尽可能小。link似乎已失效。您知道这是否已被移动?