javascript - 如何使用 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。
如何防止通过:with
remote_function中的子句传递任何恶意js?任何帮助,将不胜感激!
解决方案
推荐阅读
- angularjs - AngularJS $routeProvider Resolve 方法不起作用
- javascript - 回声语句不起作用?似乎格式正确
- ruby-on-rails - 在我更改此用户密码并重新登录后,Devise 将 current_user 设置为 nil
- php - 如何使用后计算字段对 Cakephp 查询进行排序并将其传递给分页?
- python - Python中的全局变量和多处理
- android - 从 json 解析数据时干杯
- django - 不记录从
到我的数据库 - swift - 如何仅使用带有密码的 AES
- python - 如何为同一个ID添加多个信息?
- python - Pandas 解析 json 列并将现有列保存到新数据框中