Ruby on rails 强参数如何防止用户在表单中插入恶意代码?

Ruby on rails 强参数如何防止用户在表单中插入恶意代码?,ruby-on-rails,ruby,security,Ruby On Rails,Ruby,Security,Rails新手在官方Rails指南上工作 我不明白如何使用强参数作为安全网关,因为用户仍然可以在通过强参数允许的参数范围内输入恶意文本。强参数阻止您的模型设置不应设置的属性 想象一下:您有一个模型用户,其中包含字段名称和角色。显然,您的用户可以更新他们的姓名,但他们不应该能够更新他们的角色 如果没有强参数,控制器可能如下所示: class UsersController < ApplicationController def update @user.update_attrib

Rails新手在官方Rails指南上工作


我不明白如何使用强参数作为安全网关,因为用户仍然可以在通过强参数允许的参数范围内输入恶意文本。

强参数阻止您的模型设置不应设置的属性

想象一下:您有一个模型
用户
,其中包含字段
名称
角色
。显然,您的用户可以更新他们的姓名,但他们不应该能够更新他们的角色

如果没有强参数,控制器可能如下所示:

class UsersController < ApplicationController
  def update
    @user.update_attributes(params[:user]) # params: {user: {role: 'administrator'}}
  end
end

强参数可防止模型设置不应设置的属性

想象一下:您有一个模型
用户
,其中包含字段
名称
角色
。显然,您的用户可以更新他们的姓名,但他们不应该能够更新他们的角色

如果没有强参数,控制器可能如下所示:

class UsersController < ApplicationController
  def update
    @user.update_attributes(params[:user]) # params: {user: {role: 'administrator'}}
  end
end

强参数仅决定允许发布哪些参数。逃逸和其他安全检查超出此范围。强参数仅决定允许发布哪些参数。逃逸和其他安全检查超出此范围。
User.where(name: "'; drop table users;").to_sql
# =>  "SELECT \"users\".* FROM \"users\" WHERE \"users\".\"name\" = '''; drop table users;'"