Это одна из моих форм (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?
Мое предложение состоит в том, чтобы создать функцию для очистки всех ваших текстовых входов и функцию для проверки всех ваших выходных данных, поступающих из базы данных или любых других источников, например:
<?php
// filter for user input
function filterInput($content)
{
$content = trim($content);
$content = stripslashes($content);
return $content;
}
//filter for viewing data
function filterOutput($content)
{
$content = htmlentities($content, ENT_NOQUOTES);
$content = nl2br($content, false);
return $content;
}
в зависимости от вашей стратегии, вы можете добавить дополнительные функции в фильтр или удалить некоторые. Но того, что у вас есть, здесь достаточно, чтобы защитить вас от XSS.
РЕДАКТИРОВАТЬ: в дополнение к вышеуказанной функции, этот ответ также может иметь отношение к защите вашего сайта.
Ссылка на разные методы:
Это также хорошая идея, чтобы посмотреть на следующие ссылки:
И что важно, хорошо знать о 10 рисках и узнавать о них больше.
Я не уверен, что это правильный подход к проблеме или нет, но я нашел функцию «htmlspecialchars_decode ()» в руководстве по php. В руководстве написано, что это полностью противоположно «htmlspecialchars ()». Я пытался, и это работает хорошо.
Функция html_entity_decode () является противоположностью функции htmlentities ().
я использовал HTMLPurifier которая является библиотекой фильтров PHP для очистки ввода HTML.