Достаточно ли использования jquery parseHTML для удаления тегов сценария, чтобы предотвратить атаки XSS? - PullRequest
0 голосов
/ 22 ноября 2018

Мы используем WYSWIG Editor (Froala Editor) и храним необработанный HTML, созданный пользователем.Таким образом, экранирование строки не вариант.Я намереваюсь сохранить строку HTML в переменной или атрибуте данных, заключенном в кавычки.Затем прочитайте эту строку HTML и удалите теги сценария с помощью jquery's parseHTML, а также сохраните только определенные атрибуты перед загрузкой HTML в редактор.Достаточно ли этого подхода для предотвращения всех XSS-атак?

1 Ответ

0 голосов
/ 22 ноября 2018

Это не так.Несколько контрпримеров:

  • <a href="javascript:alert(1)">
  • <div onclick="alert(1)">
  • <img src="javascript:alert(1)"> (на самом деле больше не работает в современных браузерах)
  • <div style="background-image: url(javascript:alert(1))"> (больше не работает)

Часть сложности заключается в том, что это также зависит от того, какой браузер использует пользователь.Суть в том, что вам нужно подходящее дезинфицирующее средство, которое также может быть на стороне клиента.(Это также может быть на сервере, но если есть возможность, рассмотрите функцию «предварительного просмотра» редактора - если предварительные просмотры не отправляются на сервер, дезинфицирующее средство на стороне сервера не очень полезно. :))

Google Caja - это (был?) Html sanitizer проект, в котором также был чистый компонент javascript.Существуют другие решения , а также .

Обратите внимание, что редактор javascript должен поддерживать запуск своего содержимого через настраиваемое дезинфицирующее средство перед вставкой его в DOM, если вы хотите это сделать.это в JavaScript.

...