Osc*_*nez 0 security ruby-on-rails form-for
我有一个用户模型:name和:is_admin属性.您不应该更改is_admin值.如果您编写的表单中任何用户都可以编辑其名称:
<%= form_for @user %>
<%= f.label :given_name %>
<%= f.text_field :given_name %>
<%= f.submit "Update" %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
你在开辟安全漏洞吗?
亲切的问候,
没有.
这是因为当参数通过Rails中的强参数功能进入控制器时受到保护.在控制器中,您现在可以像这样定义一个create动作:
def create
@user = User.new(user_params)
...
end
Run Code Online (Sandbox Code Playgroud)
该user_params方法如下所示:
def user_params
params.require(:user).permit(:name)
end
Run Code Online (Sandbox Code Playgroud)
此代码将允许来自用户参数的name参数,并完全拒绝其他所有内容.