Как использовать remote_function и предотвратить внедрение javascript xss? - PullRequest
0 голосов
/ 19 февраля 2019

Я поддерживаю устаревшую кодовую базу и заметил следующий код в одном из наших представлений:

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 через предложение :with в remote_function?Любая помощь будет оценена!

...