Каков наилучший способ хранения ввода / разметки ОМУ на сервере SQL и отображения позже? - PullRequest
10 голосов
/ 21 июня 2010

Я смотрю на использование ОМУ в моем проекте вместо моего существующего RadEditor.Я читал несколько постов о том, как хранить и извлекать данные, и я хочу убедиться, что у меня есть правильная концепция, прежде чем продолжить.

Если мои исследования верны, вот что я должен делать.

  1. Я должен хранить данные редактора дважды (Один раз как HTML и один раз как Markdown)
  2. Я должен пропустить HTML через Белый список перед его сохранением.
  3. Я должен запустить HTML через AntiXSS на выходе (перед отображением)
  4. Мне следует использовать ТОЛЬКО данные Markdown для повторного заполнения Markdown для редактирования.

Может ли кто-либо подтвердить или опровергнуть, если это правильно, а также добавить полезную информацию по теме ?

Ссылки
Переформатировать мой код: Sanitize Html
StackOverflow: как сохранить уценку с помощью wmd в asp net
StackOverflow: очистить html перед сохранением в БД или перед рендерингом библиотеки antixss
StackOverflow: storeHTML-объекты в DATсокращать или преобразовывать при получении

Ответы [ 2 ]

8 голосов
/ 22 июня 2010

Я внедряю Markdown в движке блога, который я пишу (кто не пишет движки блога?), И я также внедрил Markdown в ряде настроенных CMS, которые я написал для клиентов.

Я делаю это очень похоже на то, как это делает команда Stack Overflow:

  1. Я использую wmd.js в качестве редактора на стороне клиента.
  2. Я использую серверную часть MarkdownSharpобработка.
  3. Я использую Обеззараживание Джеффа Этвуда HTML для обработки HTML.

Вот некоторые ресурсы, которые рассказывают об уценке:

Итог:

  1. Я сохраняю сообщение в том виде, в котором оно было отправлено;Он отображается с использованием MarkdownSharp.
  2. Я санирую HTML, используя подход Джеффа Этвуда (При выводе, а не при вводе).
  3. Я использую «лучшие практики» ASP.NET MVC (весьма субъективный термин)иметь дело с XSS и XSRF.
0 голосов
/ 21 июня 2010

Таким образом, один из идентификаторов позади Markdown заключается в том, что он будет производить «безопасный» html - не должно быть необходимости в отдельном кодировании.

В целом, я бы порекомендовал хранить «сырые» данные в базе данных без их преобразования или очистки. Вы всегда должны санировать или преобразовывать как можно ближе к точке рендеринга - это дает большую гибкость (о, вдруг мне нужно рендерить как RSS. Или JSON. Черт, я не могу, потому что я предварительно отформатировал для HTML) и, должен Обновление sanitiser или renderer. Вы видите эффект обновления на каждом фрагменте данных.

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

...