Избегайте Javascript при рендеринге частичного html.erb из контроллера - PullRequest
0 голосов
/ 23 ноября 2010

Я думаю о том, является ли следующий сценарий угрозой безопасности (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?

1 Ответ

0 голосов
/ 23 ноября 2010

Я думал, что сложнее, чем на самом деле. Все содержимое, использующее <% =%>, по умолчанию защищено (так как теги HTML автоматически экранируются в Rails> = 3). Таким образом, приведенный выше сценарий также не представляет опасности, поскольку содержимое базы данных вставляется таким образом в частичное.

...