Очистка HTML в MySQL

У меня есть веб-сайт, который сохраняет данные в базу данных MySQL.

Должен ли я экранировать HTML при вставке его в MySQL или при отображении на моем веб-сайте?

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

Пример html:<h1>test</h1>


person Trevor Wood    schedule 09.02.2017    source источник
comment
Экранировать HTML для чего? Если у вас есть <a href="http://example.com">Click me</a> и вы манипулируете им, вы, вероятно, сломаете его. Если у вас есть Barnes & Noble и вам нужно преобразовать его в Barnes &amp; Noble для отображения на веб-сайте, это, в первую очередь, потому, что у вас нет HTML. (Термин sanitizacion — одна из моих любимых мозолей. Он подразумевает, что некоторые строки плохие по своей природе, но вы можете применить к ним какую-то магическую функцию и сделать их безопасными для любых целей.)   -  person Álvaro González    schedule 09.02.2017
comment
@ ÁlvaroGonzález Я обновил ответ выше, обычно пользователи не сохраняют HTML, но я не хочу, чтобы они были ограничены. Конечно, этот HTML не будет выполнен. Он просто будет отображаться как есть   -  person Trevor Wood    schedule 09.02.2017
comment
Вы имеете в виду, что хотите видеть фактические HTML-теги (буквальный текст <h1>test</h1>) на странице, а не видеть заголовок с test крупным шрифтом?   -  person Álvaro González    schedule 09.02.2017


Ответы (1)


обычно пользователи не сохраняют HTML, но я не хочу, чтобы они были ограничены. Конечно, этот HTML не будет выполнен. Он просто будет отображаться

Должен ли я экранировать HTML при вставке его в MySQL или при отображении на моем веб-сайте?

Тогда у вас нет HTML для начала. У вас обычный текст.

Экранирование простого текста для вставки в HTML — это быстрая операция, и, если мы не говорим о тексте объемом 1 ГБ в одной строке, кэшировать его не имеет смысла. Если вы преобразуете обычный текст в HTML перед его сохранением, у вас больше не будет исходного текста, и вам придется отменить кодировку только для того, чтобы не использовать ее в контексте HTML. (например, поместите его в переменную JavaScript или используйте в качестве темы электронного письма).

person Álvaro González    schedule 09.02.2017