Хранение HTML в базе данных codeigniter - PullRequest
2 голосов
/ 28 октября 2011

Я создаю CMS с codeigniter и мне нужно хранить текст, завернутый в html.Затем я получу данные из базы данных и выведу их на мою страницу.Каков наилучший способ сделать это с точки зрения безопасности?

Пример данных:

<h2>A fresh approach</h2>
    <p>Whether you have queries regarding your</p>
<a href="#">cgoto page</a>

Ответы [ 2 ]

3 голосов
/ 28 октября 2011

Примените XSS-фильтр перед сохранением (лучше, потому что вы сохраните один раз, а эхо-сообщение несколько раз) или при выводе и присвойте содержимое переменной, передаваемой представлению.Вы можете использовать $ this-> security-> xss_clean ($ data_retrieved).

1 голос
/ 28 октября 2011

Санитарная обработка всегда необходима.

Я большой поклонник использования белых списков для тегов HTML, чтобы вы анализировали данные, которые собираетесь хранить, и просто удаляете теги HTML, которых нет в этом белом списке. Таким образом, при желании вы можете запретить пользователям вставлять определенные теги, такие как <script> или <object>, с непредсказуемым или неясным поведением.

Предположим, один из ваших пользователей CMS использует очень тупой пароль, а кто-то остальное получает доступ через приложение. Фильтрация содержимого HTML будет запретить самозванцу вставлять вредоносный междоменный JavaScript собирать события клавиатуры (которые могут выявить возможные пароли в формы входа) и т. д.

Кроме того, всегда полезно проверять HTML-код, который вы собираетесь хранить, поскольку любой недействительный HTML-код может повредить разметку вашего сайта и даже нарушить отображение в некоторых браузерах.

Выполнение этих проверок перед сохранением данных в базе данных может быть недостаточным, поскольку данные могут быть повреждены прямым доступом к базе данных, поэтому перед отображением содержимого выполните то, что сказал @RodrigoFerreira.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...