htmlPurifier не работает с TinyMCE

Я использую htmlPurifier для предотвращения XSS-атак со стороны пользователей, и все работает нормально в полях input type="text". Но когда я пытаюсь очистить текстовые области tinyMCE, кажется, что htmlPurifier не работает, например:

Простое текстовое поле ввода

Вход.:

<script>alert("XSS")</script>Cleaning Test

Результат: Тест на очистку

текстовая областьtinyMCE

Вход.:

<script>alert("XSS")</script>

Выход: <script>alert("XSS")</script>

Я что-то пропустил ? Почему htmlPurifier работает с простым вводным текстом, а с текстовым полем tinyMCE — нет?

P.S. Волшебные кавычки отключены


person suicidebilly    schedule 12.12.2012    source источник


Ответы (2)


Я думаю, что нашел, что было не так.

tinyMCE автоматически кодирует такие объекты, как:

< into &lt;
> into &gt;
" into &quot;
& into &amp;

Я пытался использовать различные типы entity_encoding на tinyMCE, но ни один из них, похоже, не работает так, как я хочу, поэтому я использовал PHP: html_entity_decode для декодирования текстовой области tinyMCE, а затем я использовал htmlPurifier для очистки данных, и теперь все работает нормально.

Надеюсь, что кто-то еще найдет это полезным.

person suicidebilly    schedule 12.12.2012

Вам нужно будет вызвать tinymce.triggerSave(), чтобы записать содержимое tinymce обратно в исходный элемент tinymce (может быть текстовой областью), прежде чем очиститель сможет работать.

person Thariama    schedule 12.12.2012
comment
Я пробовал tinyMCE.triggerSave() безуспешно... Я сделал свою кнопку отправки вызовом функции triggerSave onClick (те же результаты), и я попытался отправить форму с помощью JavaScript, например: document.formname.submit() ; после tinyMCE.triggerSave() (те же результаты). Я действительно не знаю, что еще я мог бы попробовать ... - person suicidebilly; 12.12.2012