Санитарный ввод, но выход не такой, как ожидалось

Это одна из моих форм (PHP + MySQL, текстовая область заменена на TinyMCE). Он записывает описание с абзацами, маркерами, заголовками и выравниванием текста (справа, слева, по центру и выравниванию).

После отправки запись выглядит как

<p style="text-align: justify;"><strong>Introduction</strong></p>
<p style="text-align: justify;">The death of the pixel leaves you with a flowing, magazine-quality canvas to design for. A canvas where curves are curves, not ugly pixel approximations of curves. A canvas that begins to blur the line between what we consider to be real and what we consider to be virtual.</p>
<p style="text-align: justify;">It wasn't too long ago that there was one set of rules for use of type on print and use of type on screen. Now that we have screens that are essentially print quality, we have to reevaluate these conventions.</p>
<p style="text-align: justify;">Web sites are transforming from boring fields of Arial to embrace the gamut of typographical possibilities offered by web fonts. Web fonts, combined with the style and layout options presented by the creative use of CSS and JavaScript offer a new world of typographic oppor</p>
<ol>
<li style="text-align: justify;">point 1</li>
<li style="text-align: justify;">point 2</li>
<li style="text-align: justify;">point 3</li>
</ol>

Я прочитал, что вам нужно очистить любые данные, которые поступают в базу данных, чтобы избежатьXSS и начал искать решение.

Решение, которое я нашел, состоит в том, чтобы использовать "htmlspecialchars ()" (Источник: Lynda.com - Создание безопасных веб-сайтов PHP).

Итак, в учебнике говорится, что нам нужно очистить входные данные перед сохранением в базу данных и использовать что-то вроде (пример кода)

<?php
    if($_SERVER['REQUEST_METHOD'] === 'POST') {
        $category_description = $_POST['category_description'];
        echo $category_description;
        echo '<br><br>';
        echo htmlspecialchars($category_description);
        echo '<br><br>';
        echo htmlentities($category_description);
        echo '<br><br>';
        echo strip_tags($category_description);

    }
?>

избежатьXSS.

Я получаю это до здесь. Функция htmlspecialchars () преобразует некоторые предопределенные символы в сущности HTML, htmlentities () преобразует символы в сущности HTML, а strip_tags () вообще удаляет любые теги.

Но после использования htmlspecialchars (), htmlentities () и strip_tags () вывод теперь отображается как

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

Как мне сделать входные данные, которые были переданы через htmlspecialchars или htmlentities?

Ответы на вопрос(1)

Ваш ответ на вопрос