首页 > 解决方案 > 如何使用 remote_function 并防止 javascript xss 注入?

问题描述

我正在维护一个遗留代码库,并在我们的一个视图 erbs 中注意到以下代码:

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

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

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

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

标签: javascriptruby-on-railsruby-on-rails-4

解决方案


推荐阅读