Пометка WMD и серверная сторона

Я работал последние 2 дня на ОМУ и Markdown , и я не нашел решение для данных запаса с безопасностью. Я бы хотел, чтобы пользователи могли отправлять HTML / XML <code> (с WMD) на моем сайте.

На данный момент я располагаю данными в формате Markdown, но если отключить JavaScript, пользователь может легко нажать XSS. Если я strip_tags или html_entities все данные, я теряю пользовательский HTML / XML <code>. Как мне это сделать?

По-моему, мне нужно html_entities только код между pre / pre, но как ?! Мои данные находятся в Markdown.

После чего я могу сделать, чтобы запретить атрибуты XSS:

 <img src="javascript:alert('xss');" /> 

Solutions Collecting From Web of "Пометка WMD и серверная сторона"

Чтобы «очистить» ваш HTML, вы можете использовать такой инструмент, как HTML Purifier

В основном, это позволяет вам указать, какие теги / атрибуты разрешены, а только сохраняет их.

Он также создает допустимый (X) HTML-код как вывод – что приятно.

На демонстрационной странице вы можете увидеть пример, который почти точно вы отправили XSS, btw 😉

Например, вы можете попробовать с некоторым HTML следующим образом:

 test <img src="javascript:evil();" onload="evil();" /> test <img src="http://www.google.com/a.Png" /> test2 

Выход:

 test test <img src="http://www.google.com/a.Png" alt="a.Png" /> test2 

Тег img с XSS не сохранился; другой имеет; и добавлен атрибут alt , чтобы быть стандартным.

Это может не решить все ваши проблемы, но если вы даете пользователям возможность вводить HTML, это определенно полезно (смею ли я говорить «это обязательно»?)