Безопасна ли дезинфекция HTML путем удаления угловых скобок?
Я хочу очистить простое текстовое поле с именем человека, защитить от XSS и тому подобное. Stackru в значительной степени говорит, что я должен белый список. Я не понимаю этого. Если я просто удаляю все <
а также >
из входного значения или замените их >
а также &ls;
разве это не исключает внедрение кода? Или я что-то упустил? Возможно, вам нужен белый список только в более сложных сценариях, где вы должны мириться с угловыми скобками?
Извините, если это глупый вопрос, важно понять это правильно.
2 ответа
Белый список или кодирование зависит от того, как вы хотите использовать текст.
Если вы собираетесь обрабатывать ввод как обычный текст, то достаточно кодировать специальные символы, и любой введенный HTML-код будет отображаться как текст, только если вы будете осторожны, чтобы не допустить попадания незашифрованного текста где-либо в выводе HTML. (Это включает проверку того, что любые другие системы, с которыми вы взаимодействуете, не используют не кодированный текст ненадлежащим образом.)
Если вы хотите разрешить некоторую разметку во входных данных, такую как стилизация текста или ссылки, то вы должны внести в белый список теги, которые вы разрешаете, и избавиться от всех остальных.
Нет, этого недостаточно, потому что если вы включите имя человека в атрибут html, вам также нужно будет избегать любых содержащихся в нем двойных кавычек.