chelkaz
@chelkaz

Безопасность пользовательских текстов. Как правильно выводить данные?

Есть проект, где пользователи могут добавлять разные посты.
Как правильно сделать, что бы можно было вводить как и просто текста, так и код. Но что бы код был показан как код с минимальной подстветкой.
В плане безопасности как лучше?
Сейчас перед добавлением в базу я делаю так:
'text' => trim(htmlspecialchars($text)),
А вывожу так, что бы работали переносы строк:
В Laravel {!! !!} это означает что htmlspecialchars не используется при выводе.
{!! nl2br(e($post->text))!!}
Но сейчас я подумал, сделать как то так - Если в тексте есть теги, то подкладывать вывод с подстветкой например, если нет, то вывести как текст.
Я не часто сталкивался с выводом пользовательских данных. Какие есть нюансы?
Может есть готовые библиотеки для упрощения? Что бы например в простом тексте фильтровать дубли пробелов или табов или новых пустых строк, а если есть код в тексте, то оформлять его как код.
  • Вопрос задан
  • 174 просмотра
Пригласить эксперта
Ответы на вопрос 2
Пусть пишут в Markdown-разметке и подключите какую-нибудь библитеку для рендера из md в html. Например, michelf/php-markdown.
Ответ написан
@vyrkmod
Пишу на php. И не стыдно.
Вообще любой нормальный шаблонизатор экранирует вывод, в том же Twig'е приходится отдельно указывать что вот эту переменную надо вывести "сырой". Ну и вообще, шаблонизатор - просто полезная вещь.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы