Подтвердить что ты не робот

HTML кодирует пользовательский ввод при хранении или при отображении

Простой вопрос, который постоянно меня раздражает.

Должен ли я HTML-код кодировать вход пользователя сразу и хранить закодированное содержимое в базе данных, или я должен хранить исходные значения и кодирование HTML при отображении?

Хранение закодированных данных значительно снижает риск того, что разработчик забывает кодировать данные при его отображении. Тем не менее, сохранение закодированных данных сделает несколько более громоздким, и это займет немного больше места, хотя обычно это не проблема.

4b9b3361

Ответ 1

Я бы настоятельно рекомендовал кодирование информации о выходе. сохранение исходных данных в базе данных полезно, если вы хотите изменить способ просмотра в определенной точке. поток должен быть чем-то подобным:

sanitize user input -> protect against sql injection -> db -> encode for display

подумайте о ситуации, когда вам может понадобиться отображать эту информацию как RSS-канал. необходимость переделать любую кодировку, специфичную для HTML, перед повторным отображением кажется немного глупым. любая разработка всегда должна следовать за мнением "Не доверять вводу", независимо от того, принадлежит ли этот вход от пользователя или из базы данных.

Ответ 2

Кодирование должно выполняться только только на дисплее. Без исключения.

Ответ 3

Вывод.

С помощью HTML вы не можете просто проверить длину строки (& - 1 символ, но strlen() сообщит вам 5), вы можете легко обрезать его (это может сломать сущности).

Вам может потребоваться смешать строки из базы данных со строками из другого источника или прочитать и записать их обратно. Выполнение этой прикладной программы без пропусков и избежания двойного экранирования - это кошмар.

PHP пытался сделать подобное с magic_quotes, и это оказалось огромным провалом. Не принимайте маршрут magic_entities!:)

Ответ 4

Имейте в виду, что вам может потребоваться доступ к базе данных с чем-то, что не понимает HTML-кодированный текст (например, инструмент отчетности). Я согласен с тем, что пространство не является проблемой, но IMHO, помещая кодировку HTML в базу данных, перемещает знания вашего вида/интерфейса в самый нижний уровень в приложении, и это ошибка дизайна.

Ответ 5

Разве это не побеждает цель кодирования? Если в качестве ввода введен вредоносный sql script, который затем передается в db, это может вызвать огромную проблему.