我试图从可能的xss攻击净化我的意见。
假设我有一个District对象,它有一个字段“name”。我创建了一个新的District,并将“name”的值设置为'New York"><img src=x onerror=alert(12)>'
。现在我有一个这样的select_tag:<%= select_tag "event[city]", options_for_select(District.all.pluck(:name), @event.city), { class: "form-control", data: {:action=>"change->events#update"}, include_blank: I18n.t("form.select") } %>
个
如何在呈现页面时阻止脚本运行?
我试过用白色列出“select”和“option”,用白色列出属性“data-action”、“id”、“name”和“class”,但仍然弹出警报。它似乎没有在“option”值内进行消毒。
1条答案
按热度按时间txu3uszq1#
ActionView::Helpers::SanitizeHelper.sanitize
似乎删除了'New York"><img src=x onerror=alert(12)>'
中的JavaScript代码。字符串
所以如果你正确使用
sanitize
的话,alert(12)
不应该被调用。下面的代码从District.all.pluck(:name)
返回的数组中清理每个name
怎么样?型