我以Rails教程中关于“跟随用户”的例子为例。
<%= form_for(current_user.relationships.build(followed_id: @user.id)) do |f| %>
<div><%= f.hidden_field :followed_id %></div>
<%= f.submit "Follow", class: "btn btn-large btn-primary" %>
<% end %>这一行:f.hidden_field :followed_id
在浏览器中生成如下内容:
<input type="hidden" value="13">
'13‘表示将要被跟踪的用户的ID。
也许不是所有的网站用户都精通技术,但有些用户可能会找到一种方法来做一些技巧,例如打开Firebug,只需编辑html输入标签,并使用随机数设置值。
在我的控制器中,让一个用户通过以下方式跟踪另一个用户显然是快速和简单的:
def create
@user = User.find(params[:relationship][:followed_id])
current_user.follow!(@user)
end此外,我需要我的模型中的属性可以访问:
attr_accessible :followed_id
然而,让用户轻松地操作这类数据不是太危险了吗?是否有其他解决方案而不像上面的代码那样做?
发布于 2014-04-03 10:37:07
你的解决方案很好。如果有用户可以恶意篡改数据的情况,则需要进行某种类型的服务器端检查。例如,如果用户可能只跟踪某些其他用户,那么您需要检查他们没有篡改该变量,以跟踪他们不允许的用户。这取决于情况。
根据经验,来自用户的数据不应该被认为是可信的。总是假设它可能会被篡改。但是,如果他们不能以一种恶意的方式篡改它(例如,如果用户可能跟踪任何其他用户),那么就不用担心了。
https://stackoverflow.com/questions/22834742
复制相似问题