Лучшие практики для хранения HTML в MySQL DB - PullRequest
0 голосов
/ 11 января 2019

Я работаю над мини-блогом, который позволяет пользователям добавлять посты с помощью редактора WYSIWYG на сайт, поэтому я буду хранить этот пост в своей БД.

Исследовав уценку, я пришел к выводу, что она не подходит для цели, поскольку мне требуется локальное видео, поэтому я сейчас планирую сохранить HTML-код из редактора WYSIWYG в моей БД.

Однако у меня есть некоторые опасения относительно внедрения SQL-кода и XSS-атак, однако я исследовал решение, которое является очистителем HTML.

Если я использую очиститель HTML для удаления нежелательных тегов HTML, это безопасное решение для хранения HTML в моей БД?

Ответы [ 2 ]

0 голосов
/ 11 января 2019

Хранение HTML в базе данных не является по сути небезопасным, равно как и хранение простого текста небезопасно. Риск внедрения SQL-кода тривиально уменьшается с помощью подготовленных операторов и соответствующих заполнителей. Экранирование не является ни необходимым, ни лучшим способом предотвращения внедрения SQL-кода. Подготовлены заявления.

И наоборот, XSS и другие связанные с HTML уязвимости не имеют ничего общего с базой данных и не имеют ничего общего с отображением HTML для зрителей из ненадежных источников. Те же самые уязвимости были бы, если бы HTML просто сохранялся в файлах без базы данных вообще, поэтому нет необходимости защищать базу данных от вредоносного HTML. База данных не знает и не уязвима к тому, что содержится в хранимом контенте HTML, потому что она не визуализирует и не интерпретирует HTML ... снова, если ваши взаимодействия с базой данных используют подготовленные операторы. Нет приемлемых оснований избегать их.

Чтобы преувеличить крайность, было бы совершенно безопасно хранить файлы, содержащие вирусы, в виде больших двоичных объектов в базе данных, поскольку база данных не выполняет хранимые в ней данные в виде кода. Уязвимость будет для пользователей, загружающих эти вирусы.

0 голосов
/ 11 января 2019

Вы можете хранить html в sql ... но сначала избегайте их.

Смотрите пример здесь ...

http://php.net/manual/en/function.html-entity-decode.php

...