2016-01-11 6 views
0

У меня есть прецедент, где мне нужно хранить iframe и возможный javascript, сгенерированный динамически в базе данных. Я использую HTMLPurifier для дезинфекции ввода.Можно ли игнорировать полный HTML в указанном теге, используя HTMLPurifier

Возможно ли в HTMLPurifier игнорировать все содержимое (HTML/CSS/JS) внутри указанного элемента, чтобы оно оскорбило все, кроме как оставить все внутри указанного элемента неповрежденным?

+0

Почему вы не используете CDATA? – devpro

+0

Да, почему бы и нет. Спасибо за напоминание. –

+0

Использование в XML-файле ?? – devpro

ответ

0

От Wikipedia:

CDATA разделы XHTML документы подлежат анализироваться по-разному веб-браузеры, если они делают документ как HTML, так как HTML парсеры не признают CDATA начальные и конечные маркеры, а также они распознают ссылки на объекты HTML, такие как & lt; в пределах < сценарий> теги. Это может вызвать проблемы рендеринга в вебе-браузерах и может привести к межсайтовым уязвимостям сценариев, если они используются для отображения данных из ненадежных источников, так как эти два вида парсера не согласится на где раздел CDATA заканчивается.

Поскольку это полезно, чтобы иметь возможность использовать менее чем знаки (<) и амперсанд (&) в сценариях веб-страницы, и в меньшей стилей степени, без необходимости помнить, чтобы избежать их, обычно использовать CDATA маркеры вокруг текста рядного < сценария> и < стиля> элементы в XHTML документов. Но так, что документ может быть разобран HTML парсеры, которые не признают CDATA маркеры, в CDATA маркеры обычно закомментированный

Вот это JavaScript Пример:

<script type="text/javascript"> 
//<![CDATA[ 
document.write("<"); 
//]]> 
</script> 

Вот CSS Пример:

<style type="text/css"> 
/*<![CDATA[*/ 
body { background-image: url("marble.png?width=300&height=300") }  
/*]]>*/ 
</style> 
Смежные вопросы