Очистить (не удалить) ввод HTML для взлома документа, но не другие теги - PullRequest
1 голос
/ 28 июня 2011

Предположим, что у нас есть пользовательская форма, генерирующая ввод HTML, и приведенный ниже пример может служить примером того, что передается в PHP.

<p>Hello</p>
<p><strong>World</strong></p>

Теперь они появятся позже через инъекцию вВывод HTML в некоторые DIV.

То, что я хотел бы предотвратить, это ввод следующего:

</div>
<p>Hello</p>
<p><strong>World</strong></p>
<div>

Или даже что-то вроде:

</div>
<script> someScript(); </script>
<iframe src="http://www.example.com">......
<p>Hello</p>
<p><strong>World</strong></p>
<div>

Как я могу использовать PHP, чтобы определить, что этот ввод не сломает документ, не включит неверные фреймы или не выполнит сценарии?Наиболее важной частью является то, что я все еще хочу эту информацию, я не выкидываю ее, но она должна быть включена как какой-то безвредный текст.

Использование альтернативной разметки не вариант, она должна бытьHTML.

Ответы [ 2 ]

4 голосов
/ 28 июня 2011

что вам нужно, это htmlpurifier

Мало того, что он выводит html в соответствии со стандартами, но и очищает опубликованный код от уязвимостей xss.1008 *: вы также должны проверить сравнение , это интересно:)

Редактировать 2 : вы также можете проверить htmlspecialchars и htmlentities но imo htmlpurifier намного лучше и гораздо более настраиваемый, когда речь идет о более сложных вещах, таких как ваша.

1 голос
/ 28 июня 2011

Если вы хотите сохранить поврежденные теги, но обезопасить их, я бы рекомендовал сохранить их дважды.Сохраните неизмененные данные поста в один столбец базы данных, а Очищенный - в другой.Обычно показывайте очищенную версию, а опасную - только тогда, когда вам нужно.

Где-то на форумах поддержки HTML Purifier есть пример того, как изменить <a href="dangerous.url.or.javascript">text</a> на <span>text (dangerous.url.or.javascript)</span>.Это может быть то, что вы ищете, когда говорите, что хотите сохранить информацию, а не выбросить ее.

HTML Purifier очень настраиваем, и автор, Ambush Commander, очень полезен и дляна форуме HTML-очистителя и здесь, на StackOverflow.

...