HTMLPurifier без htmlspecialchars

Я использую HTMLPurifier для простого Tinymce WYSIWYGЕсли я не использую htmlspecialcharsбудет ли это открыто для XSS AttackЭто то, что я делаю

$detail = $purifier->purify($detail);

очистить данные для этого textarea.Если я использую htmlspecialchars, он также удаляет все основные теги, что не очень удобно для пользователя. WYSIWYG редактор. Но проблема в том, что это позволяет <script> tag также.

И если я изменю conf setting в

$config->set('ExtractStyleBlocks.1', true);

Не позволяет < а также > за <script> tag.Перерабатывать < а также > за <script> только. Но это показывает <p>This is paragraph</p> ,<strong>This text is bold</strong> и так далее. Не должен показывать <p> and other simple tags пользователю, но только текст.

Как я могу избавиться от этой проблемы.

Пожалуйста, помогите. Спасибо за ваше время.

редактировать

Вот моя инициализация HTMLPurifier

$config = HTMLPurifier_Config::createDefault();
//$config->set('ExtractStyleBlocks', true);
$config->set('HTML.ForbiddenElements', array('script','style','applet'));
$purifier = new HTMLPurifier($config);

получение данных из базы данных

while(mysqli_stmt_fetch($stmt1)){
$id=htmlspecialchars($id);
$title=htmlspecialchars($title);
$detail = $purifier->purify($detail);

$posts.="<div id='date_news'><div id='news_holder$id' class='news_holder'><h3 id='show_title'>".htmlspecialchars($title)."</h3>".$detail."</div>";

HTML для $detail

В базе данных

<p><strong>Alu Vazi</strong></p>
<p>I love alu vazi with&lt;script&gt;alert("XSS")&lt;/script&gt;</p>

Экран пользователя

Алу Вази

Я люблю Алу Вази с<script>предупреждение ( «XSS»)</script>

1

Решение

Хорошо, после моего комментария попробуйте добавить его в конфигурацию HTML Purifier, он должен быть включен по умолчанию, но стоит попробовать.

$config = HTMLPurifier_Config::createDefault();
$config->set('HTML.ForbiddenElements', array('script','style','applet'));
$purifier = new HTMLPurifier($config);

редактировать

<p>I love alu vazi with&lt;script&gt;alert("XSS")&lt;/script&gt;</p>

Вы уже избежали <script> отметьте здесь, так что HTML Purifier нечего анализировать. В результате он будет выведен на страницу, но вы эффективно нейтрализовали попытку XSS.

В вашем коде что-то уже экранирует символы HTML перед сохранением в базу данных.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]