#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 — это хорошо изученная проблема, поэтому это, безусловно, возможно сделать. Я не предъявляю никаких претензий к этой конкретной библиотеке, которую я не использовал и не проверял.