Уценка или HTML - PullRequest
       0

Уценка или HTML

9 голосов
/ 28 июля 2010

У меня есть требование к пользователям создавать, изменять и удалять свои собственные статьи.Я планирую использовать редактор WMD, который SO использует для создания статей.

Из того, что я могу собрать, хранит уценку и HTML.Почему он это делает - в чем выгода?

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

ОБНОВЛЕНИЕ:

Хорошо, я думаю из ответов до сих пор, я должен хранить и уценку, и HTML,Это кажется классным.Я также читал сообщение в блоге от Джеффа о XSS эксплойтах.Поскольку редактор WMD позволяет вам вводить любой HTML, это может вызвать у меня некоторые головные боли.

Данный пост в блоге здесь .Я предполагаю, что мне придется следовать тому же подходу, что и SO - и очистить входные данные на стороне сервера.

Доступен ли санитарный код, который использует SO, как открытый исходный код, или мне придется начинать его с нуля?

Любая помощь будет высоко оценена.

Спасибо

Ответы [ 3 ]

8 голосов
/ 28 июля 2010

Хранение обоих очень полезно / полезно с точки зрения производительности и совместимости (и, в конечном счете, также социального контроля).

Если вы храните только Уценка (или любая не-HTML разметка),тогда есть затраты на производительность, каждый раз анализируя HTML-код.Это не всегда заметно дешево.

Если вы храните только HTML, то вы рискуете, что в сгенерированном HTML будут скрываться ошибки.Это привело бы к большой головной боли при обслуживании и исправлении ошибок.Вы также потеряете социальный контроль, потому что вы больше не знаете, что пользователь заполнил на самом деле . Вы, например, как администратор, также хотели бы знать, какие пользователи пытаются сделать XSS, используя <script> и так далее.Также конечный пользователь не сможет редактировать данные в формате Markdown.Вам нужно преобразовать его обратно из HTML.

Чтобы обновлять HTML при каждом изменении версии Markdown, вы просто добавляете одно дополнительное поле, представляющее версию Markdown, используемую для генерации вывода HTML.Всякий раз, когда это было изменено на стороне сервера в момент извлечения строки, повторно проанализируйте данные с использованием новой версии и обновите строку в БД.Это единовременная дополнительная плата.

6 голосов
/ 28 июля 2010

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

0 голосов
/ 28 июля 2010

Если вы сохранили только один, вам навсегда придется воссоздать другой для просмотра или редактирования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...