12 сентября 2022 г. (изменено: 12 сентября 2022 г.)
Канал: @cherkashindev
🧼 Экранирование и санитайзинг
Для предотвращения XSS существует 2 техники:
Экранирование (Escaping) - замена опасных символов, их безопасными аналогами. Например “>” будет заменён на ”>”, “<” — ”<“. Это необходимо, так как символы “<”, “>” в HTML имеют особое значение - они определяют начало и конец html-тэга.
Санитайзинг (Sanitization) - удаление вредоносного текста в строке. Например, удаление тэга script - “Hello ” ⇒ “Hello”.
В каком случае использовать какую технику? Всегда используйте экранирование, санитайзинг должен быть использован лишь тогда, когда вы хотите позволить пользователю вводить отформатированный текст. Иными словами используйте санитайзинг, только для отображения строки, полученной с помощью WYSIWYG редактора.
Почему?
Цель санитайзинга - удалить лишь опасный текст — это javascript-код, который может быть выполнен в браузере пользователя. При этом тэги <b>, <img>, <p> не несут в себе никакой опасности и они не всегда должны быть удалены из строки. Но, если мы будем использовать санитайзинг вместо экранирования, данные тэги могут сломать разметку нашего приложения.
Ещё по теме: