Я нахожусь на рельсах 4.2.1 (ruby 2.2.1p85), и я хочу дезинформировать вход пользователя, а также удалить этот текст из сообщения/get Титулы. Я не хочу исключительно зависеть от собственных автогидов 4.Rails 4.2 - Как правильно использовать rails sanitize для защиты от уязвимостей, связанных с перекрестным сценарием
Будучи немного новым для рельсов, я не знал о параметрах санитарии. http://api.rubyonrails.org/classes/ActionView/Helpers/SanitizeHelper.html
Я изначально собирался создать помощник для таких целей, чтобы я мог сделать что-то, как показано ниже. Я пытаюсь дезинформировать ввод формы для защиты от уязвимостей Cross-Site scripting (XSS).
базовый вспомогательный пример Это работает, но, вероятно, это не лучший способ рельсов для этого? Также текст остается в сообщении post/get.
<%= text_field_tag :input_text, Safetxt(params[:input_text]) %>
вспомогательного метод
def Safetxt(input_value)
txtOut = input_value
if txtOut.blank?
txtOut = ""
else
txtOut = txtOut.gsub("<script>", "")
txtOut = txtOut.gsub("</script>", "")
end
return txtOut
end
на отправить input_text очищается на выходе, но прибудет/после значения по-прежнему содержит оголенные значения.
input_text=<script>alert%28"blah"%29<%2Fscript>
Как я могу использовать пользовательский скруббер в вспомогательный метод правильно дезинфицировать вход (удалить опасный текст, теги)? Я немного смущен, как правильно реализовать это с помощью пользовательских правил.
Например, что-то, как показано ниже (я знаю, что это неправильно). Также как лучше всего исключить этот текст в запросе post/get? Я знаю, что я должен дезинфицировать текст на стороне контроллера для ввода, но если есть способ, я бы хотел, чтобы этот текст был очищен при запросе отправки, если это возможно.
def Safetxt(input_value)
scrubber = Rails::Html::TargetScrubber.new
scrubber.tags = ['script']
txtOut = input_value
if txtOut.blank?
txtOut = ""
else
txtOut.scrub!(scrubber)
end
return txtOut
end