установка innerHTML из очищенного html по-прежнему опасна?

#javascript #html #reactjs

#javascript #HTML #reactjs

Вопрос:

В react есть замена для innerHTML: dangerouslySetInnerHTML.

Его название меня пугает.

В документах React я прочитал, что:

В общем, установка HTML из кода является рискованной, потому что легко непреднамеренно подвергнуть ваших пользователей атаке межсайтового скриптинга (XSS).

Но я очистил свой html с помощью dompurify. Полностью ли это защищает меня от атак XSS?

Комментарии:

1. Нет. Ничто не является на 100% безопасным.

2. да, конечно. Могу ли я объединить dompurify с другими библиотеками для повышения безопасности? что вы думаете по этому поводу?

3. Конечно. Смягчение — хорошая стратегия, но она не на 100% безопасна.

Ответ №1:

Но я очистил свой html с помощью dompurify. Полностью ли это защищает меня от атак XSS?

Вероятно, да, но это не гарантировано на 100%. Если в DOMPurify нет ошибок, которые пропускают XSS, настройка innerHTML или dangerouslySetInnerHTML с ее результатами будет безопасной. DOMPurify имеет открытый исходный код и относительно популярен, поэтому, если бы у него были такие уязвимости, они, вероятно, были бы замечены к настоящему времени.

Но, как и во всем, что делают люди, ошибки и совпадения, которые приводят к тому, что уязвимости не видны, все еще возможны.

Комментарии:

1. Могу ли я объединить dompurify с другими библиотеками для повышения безопасности? что вы об этом думаете?

2. Я полагаю, вы могли бы, но я бы очень сомневался, что это будет полезно. Логика, необходимая для предотвращения XSS в целом, довольно проста, AFAIK. (1) Удалите теги скрипта (и, возможно, фреймы iframes) (2) Удалите встроенные обработчики (3) При желании удалите и стили. Даже реализовать себя почти тривиально, хотя доверенная библиотека — лучший выбор. Если бы это был я, я был бы счастлив использовать только DOMPurify. Не стесняйтесь запускать и проверять их набор тестов , если речь идет о реальных деньгах.

Ответ №2:

Его название меня пугает.

Так и должно быть. 🙂

Но я очистил свой html с помощью dompurify. Полностью ли это защищает меня от атак XSS?

Он утверждает, что:

DOMPurify очищает HTML и предотвращает атаки XSS. Вы можете передать DOMPurify строку, полную грязного HTML, и он вернет строку (если не настроено иначе) с чистым HTML. DOMPurify удалит все, что содержит опасный HTML, и тем самым предотвратит атаки XSS и другие неприятности.

Считаете ли вы, что утверждение действительно является вашим призывом. Тем не менее, очистка HTML — это хорошо изученная проблема, поэтому это, безусловно, возможно сделать. Я не предъявляю никаких претензий к этой конкретной библиотеке, которую я не использовал и не проверял.