【发布时间】:2011-07-24 13:27:19
【问题描述】:
所以,这是一个 Rails 应用程序,但实际上更像是一个普通的 ruby 问题:
我有一个具有多个范围的模型。例如:
Photo.recent
Photo.popular
Photo.featured
我的应用中有一个“浏览照片”视图,我希望能够传递一个参数并让用户指定他们想要查看的范围,即:
example.com/photos/browse?view=recent
这给了我 params[:view],我需要将其作为 Photo 上的方法调用附加。
所以我的第一个问题是,你怎么能在 Ruby 中做这种事情?
其次,如果我不能限制输入,这可能是一个安全风险,如果我只附加 Photo.whatever the user types in the url 那么我就有黑客说example.com/photos/browse?view=delete_all 的风险,这显然是个坏主意.
所以我的第二个问题是,我怎样才能创建一个白名单或可以调用的东西 - 或者更好地设置某种可以安全地接受来自 URL 的参数并且仅在用户请求时才返回信息的方法一个有效的命名范围。
最后,我有一些仅供管理员使用的范围。我定义了用户权限(使用 CanCan),因此我可以查询 current_user.has_role? 以检查用户是否被授权执行任何操作,但有没有办法将权限与范围相关联?
谢谢!
【问题讨论】:
标签: ruby-on-rails ruby security variables methods