2009-07-23 2 views
2

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

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

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

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

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

ответ

2

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

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

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

Вы можете увидеть на demo page есть пример, который почти точно XSS вы в курсе, кстати ;-)

Например, вы можете попробовать с какой-то 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, который будет стандартным.

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

+0

спасибо за U Ответить. Я знаю html очиститель и другой «дезинфицирующее средство». Реальная проблема заключается в следующем: как я могу не потерять базовый макет html (по wmd) и html, вставленный пользователем в .. 2009-07-23 20:14:28

+1

Базовый макет> если это всего лишь несколько простых тегов, вы можете определить их как «разрешенные» для HTMLPurifier, поэтому они не удаляются. Если вы хотите разрешить HTML, вставленный между специальными тегами, посмотрите на этот ответ: http://stackoverflow.com/questions/1155443/process-a-block-of-html-ignoring-content-within-specific-tags/ 1155530 # 1155530; путем смешивания этого и HTMLPurifier, вы можете получить то, что хотите? –