English 中文(简体)
Rails中的匿名用户 - 安全考虑?
原标题:
  • 时间:2009-01-07 18:29:36
  •  标签:

我正在考虑在Rails中实现某种匿名用户系统。我需要让人们能够进行某些操作(创建记录,查看他们创建的内容等),而不用真正创建一个帐户。一旦他们创建了帐户,所有内容都会持久化,不会因为清除cookie或其他原因而丢失。

我现在认为这非常简单。在用户模型中设置一个is_anonymous字段,并使用类似以下的方式访问当前登录的用户:

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

假定会话持续一段合理的时间,并且会话 cookie 没有过期,那么应该可以使所有的操作平稳运行。

然而,有一个部分的我确信自己在关注安全方面漏掉了什么。有没有人之前做过这样的事情?我漏掉了什么非常明显的东西吗?

谢谢!

最佳回答

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

你的系统意味着任何带有特定 cookie 的人都将获得访问该站点的权限。这并不一定是大问题,但这确实取决于你的用户提供的信息类型。

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

问题回答

我刚刚发现了一种很酷的“试用用户”使用Authlogic的例子:http://github.com/gisikw/authlogic_trial

Assuming the session persists for some reasonable period of time, and the session cookie doesn t expire, that should keep everything running smoothly.

也许你应该为新用户设置一个单独的长时间存储的 cookie,以便他们可以有多个会话(至少从该浏览器)。

你确定你想允许人们创建绑定到可能不存在的帐户的对象吗?不幸的是,我不太清楚你的应用程序实际上在做什么,但我想这样做可能会让你拥有一堆孤立的对象,不是真正由任何真实用户“拥有”。

如果您真的想要这样做,我认为您所拥有的是不错的。您可以创建一个名为“访客”(或其他)的真实用户,一旦用户真正想要注册,他们将被提示提供其他信息并取消标记。您应该添加访客与非访客等访问控制。





相关问题
热门标签