Rails中的匿名用户 - 安全考虑因素?

时间:2009-01-07 18:29:37

标签: ruby-on-rails ruby security anonymous-users

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

现在,我认为这很简单。在User模型中有一个is_anonymous字段,并使用类似的东西来访问当前登录的用户:

def find_user
  session[:user_id] ||= create_new_anonymous_user.id
end

假设会话持续了一段合理的时间,并且会话cookie没有过期,那应该可以保证一切顺利进行。

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

谢谢!

4 个答案:

答案 0 :(得分:4)

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

您的系统意味着拥有特定Cookie的任何人都可以访问该网站。不一定是大问题,但它实际上取决于用户提供的信息类型。

我过去做过类似的事情(在我的情况下,我是通过网站跟踪进度,当用户登录或注册时,我将“访客”数据附加到他们的帐户。当您进行切换时,请确保你删除匿名记录以防止进一步访问,它应该没问题。

答案 1 :(得分:2)

我刚刚使用Authlogic找到了一个非常酷的“试用用户”示例:http://github.com/gisikw/authlogic_trial

答案 2 :(得分:0)

  

假设某些会话持续存在   合理的一段时间,和   会话cookie没有过期,那   应该保持一切运行   顺利进行。

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

答案 3 :(得分:0)

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

如果你真的想要这样做,我认为你拥有的是体面的。您可能正在创建一个真实的用户,标记为“访客”(或其他),一旦用户想要真正注册,他们就会被提示输入其他信息并且没有标记。您应该为来宾与非来宾等添加访问控制。