【发布时间】:2016-12-07 06:40:42
【问题描述】:
class ApplicationController < ActionController::Base
....
def sanitize(value)
ActionController::Base.helpers.sanitize(value.try(:strip)).gsub('&', '&').gsub('>', '>').gsub('<', '<') if value.present?
end
end
在资源中
class UsersController < ApplicationController
...
def update
if current_user.update(update_users_params)
redirect_to root_path
end
end
private
def update_users_params
params.require(:user).permit(username: sanitize(params[:user] [:username]),
location: sanitize(params[:user][:location]))
end
这里的位置和用户名是用户模型属性。
不使用 sanitize 方法的实际行为:
如果我们将"Hey <script type='text/javascript'> alert('Hi') </script>"添加到用户表单的用户名或位置输入字段中,表单提交后将按原样存储
"Hey <script type='text/javascript'> alert('Hi') </script>"
我们需要在存储到数据库之前为脚本标签清理这些属性吗? 和
强参数是否不会从这些属性中清除脚本标签?
【问题讨论】:
标签: javascript ruby-on-rails ruby-on-rails-4 sanitize