2009-08-12 2 views
8

Для моей почтовой сущности я хранил как HTML, так и MARKDOWN в базе данных (HTML преобразован из MARKDOWN). HTML предназначен для рендеринга на странице и MARKDOWN для возможности редактирования (с WMD). Я дезинфицирую HTML перед хранением до db. Вопрос: должен ли я санировать уценку? или это xss-safe, если я передам его только в wmd-editor?Должен ли я дезинфицировать уценку?

ответ

13

Markdown может содержать произвольный HTML; это явно разрешено. Таким образом, вы должны сами его дезинфицировать или, по крайней мере, дезинформировать результат конвертации в HTML, прежде чем отправлять их веб-клиентам.

Я помню, что одним из возможных действий с SO в первые дни является то, что вы можете разместить JS-контент в Markdown, и тот, кто отредактировал вашу статью, будет запускать эти сценарии в предварительном просмотре. Я еще не знаю, исправлено ли это.

3

Я заметил, что вы «дезинфицируете HTML до хранения в db» и говорите о xss-safe в следующем предложении. Это две разные грани проверки входных данных, и вы не должны смешивать их, и решать как в дизайне:

  • Вы должны безопасно вставить любой пользовательский ввод в базу данных, т.е. убедитесь, что вход должным образом спасся (mysql_real_escape_string, хранимые процедуры, библиотеки ORM и т. д.)

  • Вы должны безопасно выводить на HTML/JS (включая ввод в ОМУ), удаляя или избегая любых последовательностей, которые могут быть превращены в эксплойты XSS и другие неприятности.

Что касается вопроса, я согласен с Крисом - поскольку Markdown может включать HTML, его необходимо дезинфицировать.

0

Просто дополнение:
This question пришел с использованием оружия массового поражения