2015-03-14 5 views
-2

Я использую HTML rich text editor в форме HTML, данные из текстового редактора вставляются в таблицу базы данных MySQL в столбец с именем first_page, для типа которого установлено значение «ТЕКСТ».Как распечатать сохраненный HTML из базы данных?

Так что, если в моем богатом текстовом редакторе у меня есть следующий текст:

<h4 style="text-align: center;">Write your first page!</h4>

Перед тем, как вставить данные я следующее, чтобы сохранить данные в безопасности от любой HTML инъекции:

trim(stripslashes(htmlspecialchars($variable)));

Тогда, когда я отправить форму данных выглядит в базе данных:

&lt;h4 style=&quot;text-align: center;&quot;&gt;Write your first page!&lt;/h4&gt;

Затем, когда я пишу запрос и распечатать значение моей колонки на отдельной странице, он не интерпретировать HTML вместо этого он выводит данные, как в обычной строке, как показано ниже:

enter image description here

Не уверен, где я буду ошибаться здесь, я бы хотел, чтобы HTML фактически распечатывался как HTML, а не строка.

ПОСТАНОВИЛИ

Как @quentin предложил, я сейчас использовал HTML Purifier, чтобы предотвратить такие вещи, как против XSS. Фактический ответ на мой вопрос заключался в том, чтобы декодировать мой HTML обратно к их применимым символам, используя html_entity_decode.

+0

Можете ли вы разместить код? –

+2

Вам нужно преобразовать «HTML-сущности» обратно в свою разметку, например, с помощью 'html_entity_decode'. http://php.net/manual/en/function.html-entity-decode.php –

+0

@MarioWerner Фантастический, это сработало. Если вы можете написать это как ответ, я приму это. – user3574492

ответ

-1

Вы должны преобразовать HTML сущности обратно к их разметке, используя html_entity_decode, например. См. http://php.net/manual/en/function.html-entity-decode.php

Но имейте в виду, что это «быстрое & грязное» решение, например, использование RegEx для анализа HTML. Я бы рекомендовал послушать то, что написал Квентин в ответе ниже. :)

1

Подход, который вы предпринимаете, чтобы сделать ваш сайт безопасным от XSS, - это запретить пользователям вводить необработанный HTML в базу данных.

Вы не можете одновременно запретить необработанный HTML-код и предоставить необработанный HTML-код.

Необходимо заменить вызов на htmlspecialchars другим механизмом для защиты от XSS (например, запуск входа через парсер DOM и filtering теги и атрибуты с помощью белого списка).

(Вы должны также заменить stripslashes (который неэффективен против инъекции SQL) с prepared statements and placeholders.)

Смежные вопросы