Я думаю о том, является ли следующий сценарий угрозой безопасности (XSS).
В одном из моих контроллеров я отвечаю на запрос Javascript следующим образом:
format.js { render :partial => "myobjects" }`
Партиал myobjects (_myobjects.html.erb
) — это партиал HTML (который также используется некоторыми шаблонами), куда вводятся данные из базы данных. Теперь с помощью jQuery я делаю следующий запрос Ajax, чтобы получить содержимое в myobjects и заменить что-то на сайте:
$.get(this.href, function(data) {
$("#myelement").html(data);
}, "script");
Я спрашиваю себя сейчас, безопасно ли это.
- Нужно ли мне явно выполнять экранирование партиала myobjects, когда он используется в запросе Ajax, как указано выше?
- Должен ли я делать это вручную внутри партиала? Или я могу как-то сказать этому методу рендеринга сделать это?
- Будет ли добавление вызова escape_javascript внутри партиала каким-то образом мешать использованию того же партиала в обычном шаблоне html.erb?