Правильная последовательность действий при использовании Markdown & MySQL? - PullRequest
2 голосов
/ 04 мая 2010

Я хочу, чтобы мои пользователи могли написать статью в Markdown, сохранить ее в базе данных MySQL (с возможностью ее редактирования в будущем) и отображать для других пользователей.

На практике это мое понимание того, как это работает:

ВХОД

  1. пользовательский ввод через HTML-форму с использованием синтаксиса Markdown
  2. $queryInput = mysql_real_escape_string($userInput);
  3. вставить очищенную строку в базу данных

OUTPUT

  1. поле запроса из базы данных
  2. $output = Markdown($queryResult);
  3. дисплей $output

Это так?

Устраняет ли PHP Markdown необходимость htmlspecialchars или Pure HTML?

Спасибо!

1 Ответ

2 голосов
/ 04 мая 2010

Я оценил использование уценки в PHP несколько недель назад (и, кстати, решил не использовать его). Мои мысли:

  • Возможно, не стоит запускать анализатор уценки каждый раз, когда вывод выводится - разбор комментария довольно дорогой, и обычный комментарий в блоге (как пример) читается гораздо чаще, чем пишется. Вы должны запустить анализатор уценки ДО сохранения пользовательского ввода в базу данных!

  • Теперь действительно сложная проблема: Markdown не выполняет никаких проверок безопасности. Все xss атаки успешно пройдены. Если вы сейчас думаете: «Нет проблем, я просто раздену чеки прямо после получения пользовательского ввода», подумайте еще раз: вполне возможно, что уценка создает теги, содержащие XSS, при обработке пользовательского ввода. Итак, вы должны проверить HTML-код, созданный markdown, на наличие проблем безопасности - очень трудная задача, которая очень подвержена ошибкам. (Это была причина не использовать его в моем случае - выгода не имела хорошего отношения к потенциальным затратам)

...