Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Хранение HTML в БД и его вывод. / 18 сообщений из 18, страница 1 из 1
02.09.2012, 10:00:48
    #37940278
TWK
TWK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение HTML в БД и его вывод.
Нужно хрантить HTML(страницы, шаблоны) в БД и выводить в браузер этот HTML

1) Я сохраняю HTML как есть в БД. пример: <b>text</b>
2) Выбираю этот HTML из БД $content и на выходе в браузере получаю text

Но так в БД можно записать любой вредоносный javascrtipt или еще какой то нежелательный контент и запустить его при рендере $content на странице.

Например в Twig http://twig.sensiolabs.org/doc/filters/escape.html переменные в шаблоне говорит надо фильтровать через escape


Правильный ли такой подход:
Хранить HTML в БД как есть а выводить необходимо части сайта с html кодом как есть, так как это необходимо ?

Например контент страницы {{content}} или html шаблон {{template}} не прогонять через escape так как этот контент добавлял администратор и его надо отрендерить. Остальные переменные в шаблоне, в формах например использовать с escape фильтром.
<form>
<input name="message" val="{{message|escape }}">
<input name="email" val="{{email|escape }}">
</form>
...
Рейтинг: 0 / 0
02.09.2012, 10:07:29
    #37940281
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение HTML в БД и его вывод.
Для этого придумали bbcode
...
Рейтинг: 0 / 0
02.09.2012, 10:08:54
    #37940282
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение HTML в БД и его вывод.
Если даже в каком-то одном месте вы не будете эскейпить данные, то написать уязвимость будет не проблема.
...
Рейтинг: 0 / 0
02.09.2012, 10:17:24
    #37940285
TWK
TWK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение HTML в БД и его вывод.
Hett
Дело в том что нужно хранить именно HTML. Со страницами наверное так. храню в чистом виде и вывожу как есть.

авторЕсли даже в каком-то одном месте вы не будете эскейпить данные, то написать уязвимость будет не проблема.
Не понял это, можете пожалуйста объяснить ?
...
Рейтинг: 0 / 0
02.09.2012, 10:23:16
    #37940289
asws
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение HTML в БД и его вывод.
TWK Hett
Дело в том что нужно хранить именно HTML. Со страницами наверное так. храню в чистом виде и вывожу как есть.

авторЕсли даже в каком-то одном месте вы не будете эскейпить данные, то написать уязвимость будет не проблема.
Не понял это, можете пожалуйста объяснить ?да все просто - запрос к БД с полученными от клиента непроверенными данными - всегда опасен.
...
Рейтинг: 0 / 0
02.09.2012, 10:37:25
    #37940293
TWK
TWK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение HTML в БД и его вывод.
asws
Но многие CMS позволяют редактировать/сохранять контент страницы именно в html виде. то есть например контент страницы они не преобразует с htmlspecialchars на выходе, а любые другие данные преобразуют. так ?

или Сохранять данные именно в html виде все данные которые выбрались и ушли рендериться необходимо пропускать через htmlspecialchars ? но тогда как какие-то данные отобразить отрендереным html ? ведь при выборке данные уже обработаются этим htmlspecialchars
...
Рейтинг: 0 / 0
02.09.2012, 11:25:26
    #37940309
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение HTML в БД и его вывод.
фильтровать теги.
...
Рейтинг: 0 / 0
02.09.2012, 11:54:21
    #37940325
ShSerge
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение HTML в БД и его вывод.
TWK,

Визуальные редакторы именно и вставляют форматированный хтмл-текст. Другое дело, что запрещается вводить хтмл "ручками", например тэг <script> ввести никак не получится. По причине его автоматического преобразование в &lt;script&gt;
Кстати, если процитировать, то что я написал, ББкоде нарисует неправильно.
...
Рейтинг: 0 / 0
02.09.2012, 11:54:47
    #37940326
ShSerge
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение HTML в БД и его вывод.
ShSergeTWK,

Визуальные редакторы именно и вставляют форматированный хтмл-текст. Другое дело, что запрещается вводить хтмл "ручками", например тэг <script> ввести никак не получится. По причине его автоматического преобразование в <script>
Кстати, если процитировать, то что я написал, ББкоде нарисует неправильно.
...
Рейтинг: 0 / 0
02.09.2012, 11:55:53
    #37940327
asws
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение HTML в БД и его вывод.
TWK asws
Но многие CMS позволяют редактировать/сохранять контент страницы именно в html виде. то есть например контент страницы они не преобразует с htmlspecialchars на выходе, а любые другие данные преобразуют. так ?

или Сохранять данные именно в html виде все данные которые выбрались и ушли рендериться необходимо пропускать через htmlspecialchars ? но тогда как какие-то данные отобразить отрендереным html ? ведь при выборке данные уже обработаются этим htmlspecialcharsЛучше точно знать, что и как та-или-иная CMS делает, лично я всегда смотрю исходный код, а он у многих платных CMS открыт, и обязательно структуру БД.
В любом случае - все известные CMS постоянно обновляют версии, поскольку появляются новые методы их взлома.
Лично я практикую изменение кода в некоторых местах или расширение под свои нужды.

Есть компании, предлагающие свои решения + CMS - конструктор, донастраиваемый на конкретный проект, например, inDynamics.
Это отличный вариант для платежеспособных клиентов - получают как правило то, что хотят, за деньги, разумеется.

Это не реклама, например наша организация для одного своего клиента сменила CMS inDynamics на собственную систему,
поскольку клиенту часто нужны изменения, причем иногда - довольно серьезные, и мы организавали этому клиенту полную автоматизацию на своей системе (летает быстро и легко),
да и еще некоторые учетные системы этого клиента перенесли со старого метода работы с XLS-файлами по почте -
- на новые веб-проекты, где намного удобнее вести совместную работу, и т.д. и т.п.

TWK, почитайте про SQL-инъекции, если еще не читали.
...
Рейтинг: 0 / 0
02.09.2012, 12:09:42
    #37940332
TWK
TWK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение HTML в БД и его вывод.
asws в данное время беспокоит XSS. и то что для этого пропускаю все через htmlspecialchars но так не получится отрендерить разметку страницы, например, так как все пропускается уже через htmlspecialchars а потом с этими обработанными данными уже ничего нельзя сделать, получается...
...
Рейтинг: 0 / 0
02.09.2012, 12:13:10
    #37940333
TWK
TWK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение HTML в БД и его вывод.
$content = <b>test</b>

далее
$content = htmlspecialchars($content);

теперь
$content = <b> </b>

обратно это как то можно преобразовать в <b>test</b> ?
...
Рейтинг: 0 / 0
02.09.2012, 12:16:13
    #37940334
asws
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение HTML в БД и его вывод.
TWK,

Приведите корректный тестовый пример.
...
Рейтинг: 0 / 0
02.09.2012, 13:22:24
    #37940349
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение HTML в БД и его вывод.
ShSergeTWK,

Визуальные редакторы именно и вставляют форматированный хтмл-текст. Другое дело, что запрещается вводить хтмл "ручками", например тэг <script> ввести никак не получится. По причине его автоматического преобразование в <script>
Кстати, если процитировать, то что я написал, ББкоде нарисует неправильно.
Проверка не должна ограничиваться только клиентской стороной, если пользователь будет иметь коварный умысел, то он легко обойдет эту защиту.
...
Рейтинг: 0 / 0
02.09.2012, 17:48:46
    #37940496
ShSerge
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение HTML в БД и его вывод.
HettПроверка не должна ограничиваться только клиентской стороной, если пользователь будет иметь коварный умысел, то он легко обойдет эту защиту.
+1. Конечно же! Например, на сервере можно проверить наличие в строке, приведенного к uppercase текста "<SCRIT". В этом случае - сразу нафиг посылать без выдачи ошибок, потому что это не с вашего сайта пришло. А от sql-ingection хорошо помогает real_escape_string, или использование параметров в запросах.
...
Рейтинг: 0 / 0
02.09.2012, 17:52:52
    #37940498
ShSerge
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение HTML в БД и его вывод.
Hett,

ПС. А процитировать именно тот текст, что я написàл слабò?
...
Рейтинг: 0 / 0
02.09.2012, 18:04:53
    #37940502
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение HTML в БД и его вывод.
&lt;script&gt;
...
Рейтинг: 0 / 0
02.09.2012, 18:06:16
    #37940503
ShSerge
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение HTML в БД и его вывод.
Hett&lt;script&gt;
Отлично!
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Хранение HTML в БД и его вывод. / 18 сообщений из 18, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]