如何使用remote_function并防止javascript xss注入?

时间:2019-02-19 17:46:02

标签: javascript ruby-on-rails ruby-on-rails-4

我正在维护旧版代码库,并在我们的视图erb中注意到以下代码:

ui30_select_tag(filter[:param_name], options_for_select(filter[:options], filter[:selected]), {
  prompt: 'Select a filter...',
  onchange: remote_function(
    url: report_link_options[:url],
    with: report_link_options[:with],
    before: mask_expression
  )
})

如果使用适当的查询字符串参数将URL发送到视图,则可能会受到XSS攻击,因此为了测试,我使用以下命令发送了URL:

http://localhost:3000/admin/report_benefit/update?plan_years=%2c236704494926'})%3balert(1)%2f%2f264lr9p7f

瞧,当我选择上面的select标签中定义的下拉列表时,我的浏览器将执行我添加到plan_years参数上的警报。 report_link_options [:with]等于plan_years=,236704494926'});alert(1)//264lr9p7f

由于remote_function只需接受一个:with参数并创建javascript,因此您无法真正针对xss攻击或执行的任何恶意js清除字符串,因为它使用参数创建了ajax js。

如何防止任何恶意js通过remote_function中的:with子句传递?任何帮助将不胜感激!

0 个答案:

没有答案