Безопасна ли дезинфекция HTML путем удаления угловых скобок?

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

Извините, если это глупый вопрос, важно понять это правильно.

2 ответа

Белый список или кодирование зависит от того, как вы хотите использовать текст.

Если вы собираетесь обрабатывать ввод как обычный текст, то достаточно кодировать специальные символы, и любой введенный HTML-код будет отображаться как текст, только если вы будете осторожны, чтобы не допустить попадания незашифрованного текста где-либо в выводе HTML. (Это включает проверку того, что любые другие системы, с которыми вы взаимодействуете, не используют не кодированный текст ненадлежащим образом.)

Если вы хотите разрешить некоторую разметку во входных данных, такую ​​как стилизация текста или ссылки, то вы должны внести в белый список теги, которые вы разрешаете, и избавиться от всех остальных.

Нет, этого недостаточно, потому что если вы включите имя человека в атрибут html, вам также нужно будет избегать любых содержащихся в нем двойных кавычек.

Другие вопросы по тегам