Используя опасно SetInnerHtml, каковы риски и что мешает кому-либо удалить сантификацию через браузер? - PullRequest
1 голос
/ 03 апреля 2019

Я использую dangerouslySetInnerHtml для рендеринга html из шаблона усов в React.Я читаю о проблемах безопасности этого, и это ново для меня.

Мой пример использования - у меня есть html, который содержит svg.Это статично и не извлекается из какой-либо базы данных.Я хочу просто сделать это.

Я прочитал, что вы должны «очистить» HTML.Примеры, приведенные в этом документе, предоставляют библиотеки, которые люди используют для очистки html, а затем используют этот очищенный вариант в атрибуте dangerouslySetInnerHtml.

Однако, что мешает кому-то просто войти в JS и редактировать html черезdevtools или что-то в этом роде, чтобы очистка не проводилась.

У меня нет большого контекста по этому вопросу, извините, я не могу быть более конкретным с примером.

Iперепробовал много парсеров для HTML, чтобы реагировать.Пришли к выводу, что мне нужно опасно пользоваться SetInnerHtml

1 Ответ

1 голос
/ 03 апреля 2019

Вам следует «санировать» HTML-код, когда этот HTML-код получен от пользователя , как если бы у вас был ввод для пользователя, который может отправить HTML-код на ваш сервер, а затем показать его в браузере других пользователей.

«Однако что мешает кому-то просто зайти в JS и отредактировать html с помощью devtools или чего-то еще, чтобы очистка не состоялась».Это кажется неправильным, извините.Причина в том, что опасный HTML-код может повлиять только на пользователя, который его просматривает.Если они редактируют файлы JS в своем браузере, это не имеет смысла, поскольку они являются жертвами самих себя.

Подробнее о https://en.wikipedia.org/wiki/Cross-site_scripting (для чего используется обработка HTML)

...