Каков наилучший способ хранения ввода-вывода WMD на SQL-сервере и отображения позже?
Я рассматриваю использование ОМУ в своем проекте вместо существующего RadEditor. Я читал несколько сообщений о том, как хранить и извлекать данные, и я хочу убедиться, что у меня есть правильная концепция, прежде чем продолжить.
Если мои исследования верны, вот что я должен делать.
- Я должен хранить данные редактора дважды (один раз как HTML и один раз как Markdown)
- Прежде чем хранить его, я должен запустить HTML через Whitelist.
- Я должен запустить HTML через AntiXSS на выходе (перед отображением)
- Я должен использовать данные Markdown ТОЛЬКО для повторного заполнения Markdown для редактирования.
Может ли кто-нибудь подтвердить или опровергнуть, правильно ли это, а также добавить любой полезный ввод по теме?
Литература
Переформатировать мой код: Sanitize Html
qaru.site/info/506248/...
qaru.site/info/513830/...
qaru.site/info/204692/...
Ответы
Ответ 1
Я использую Markdown в блоге, который я пишу (кто не пишет движки блога?), и я также реализовал Markdown в ряде настраиваемых CMS, которые я написал для клиентов.
Я делаю это очень похоже на то, как команда Qaru делает это:
- Я использую
wmd.js
в качестве редактора клиентской стороны.
- Я использую обработку сервера MarkdownSharp.
- Я использую Jeff Atwood Sanitize HTML для обработки обработки HTML.
Вот некоторые ресурсы, которые говорят о Markdown:
Нижняя строка:
- Я сохраняю сообщение в форме, в которой он был отправлен; Он отображается с помощью MarkdownSharp.
- Я дезинфицирую HTML, используя подход Джеффа Этвуда (на выходе, а не на входе).
- Я использую ASP.NET MVC "лучшие практики" (очень субъективный термин) для работы с XSS и XSRF.
Ответ 2
Итак, одна из сторон за Markdown заключается в том, что она создаст "безопасный" html - не должно быть необходимости в отдельной кодировке.
В более общем плане я бы рекомендовал хранить "необработанные" данные в базе данных, не преобразовывая его или не дезинфицируя его. Вы должны всегда санировать или трансформироваться как можно ближе к точке рендеринга - это дает большую гибкость (о, внезапно мне нужно отображать как RSS. Или JSON. Черт, я не могу, потому что я предварительно отформатирован для HTML), и, если обновите санитор или рендерер, вы увидите эффекты обновления для каждой части данных.
Я бы сказал, сохранил текст разметки в базе данных, а затем преобразовал его, когда вы хотите его визуализировать, используя библиотеку меток для этого, теоретически, все безопасные HTML, созданные из безопасного списка тегов и атрибутов.