0
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
場所とユーザー名は、Userモデルの属性です。サニタイズメソッドを使用せずに
実際の行動:
我々はそれが
"Hey <script type='text/javascript'> alert('Hi') </script>"
であるとして、それが格納されているフォーム送信後、ユーザーフォームのユーザー名または場所の入力フィールドに"Hey <script type='text/javascript'> alert('Hi') </script>"
を追加した場合、我々はする必要がありますデータベースに格納する前にスクリプトタグの属性をサニタイズしますか? と
強力なパラメータは、それらの属性からスクリプトタグをサニタイズしませんか?
これは本当ですが、アンドロイドやIOSにサービスを提供するAPIサービスのような他のプラットフォームに保存された結果を提供する必要がある場合はどうでしょうか。 – Jaswinder
あなたはそれをどのように渡すかによって異なります。 'params [:my_param_name]'をAPI /サービスに渡しただけでは、デフォルトでエスケープされます。 – codyeatworld
いいえ、デフォルトではエスケープされません。 – Jaswinder