我在用户控制器中有一个名为“contact”的自定义操作。访客帐户将访问此操作,访客帐户只读访问用户设置的某些内容。视图应仅显示用户的某些属性 - 例如他们的名称,而不是他们更私密的详细信息。我正在使用CanCan&设计认证&授权。
我在用户模型中将名称,密码等设置为attr_accessible。所以,我的问题是,什么是阻止访客访问他们链接到的用户的所有属性?我的“联系人”视图只有@ user.name - 黑客是否有办法刷新页面,例如@ user.private_details,还是不可能?
如果有可能,我该如何抵消这种情况 - 有没有办法可以将控制器操作改为只调用数据库中的某些参数,例如:
@user = User.find(params[:id]), :only => (:first_name, :last_name)
非常感谢任何建议,谢谢!
答案 0 :(得分:0)
攻击者无法控制哪个模板用于响应(除非您的控制器可能根据用户输入切换使用哪个模板)
然而,他们可以以不同的格式请求响应,例如,他们可以请求文档的JSON表示,脚手架轨道显示操作将响应。您当然可以覆盖返回的json。最后,为了回答原始问题,select
允许您控制从数据库中提取的内容,例如
User.select(:first_name, :last_name).find(params[:id])