Фильтр HTML Purifier входящий или исходящий или оба?

Я только начал использовать HTML Purifier http://htmlpurifier.org для фильтрации содержимого из редактора WYSIWYG. Контент будет отображаться обратно пользователю или другим пользователям в той же группе. В системе есть и другие группы, и целостность данных очень важна.

Я использую PHP, и содержимое хранится в базе данных MySQL.

HTML Purifier использует большую мощность процессора, поэтому я хотел бы использовать его только для входящего контента и отображать исходящий контент прямо из базы данных без каких-либо фильтров. Звучит просто, что это было отфильтровано, поэтому должно быть безопасно, но я не уверен на 100%, безопасно ли это?

Список разрешенных для входящего 'p[style],strong,em,u,h1,h2,h3,h4,h5,h6,li,ol,ul,span[style],div[style],br,ins,del'

РЕДАКТИРОВАТЬ: я обнаружил, что сайт предлагает сделать это по адресу http://htmlpurifier.org/docs/enduser-slow.html, но я хотел бы высказать здесь несколько мнений из-за высокой важности.


person PaulMrG    schedule 05.07.2012    source источник
comment
Ознакомьтесь с памяткой по предотвращению XSS OWASP.   -  person Adi    schedule 05.07.2012


Ответы (1)


Дезинфицируйте свой ввод, когда отправляете его в базу данных, иначе у вас будут большие проблемы с несколькими просмотрами страниц в секунду, так как это шаг с интенсивным использованием ЦП.

НО, вы должны убедиться, что каждая строка в вашей базе данных очищена, иначе вы когда-нибудь подвергнетесь XSS (проверьте каждый запрос, который редактирует или добавляет запись, и подумайте о существующих строках в вашей базе данных).

Небольшой совет: если вы можете позволить себе место, храните продезинфицированные и не продезинфицированные входные данные. Если однажды вам нужно будет что-то изменить в своих параметрах или у HTMLPurifier будет основной 0-day, вы сможете обновить всю свою таблицу. Но будьте очень осторожны с последствиями, если вы сделаете это однажды;)

Изменить: убедитесь, что вы делаете, разрешив стиль, или разрешите только несколько стилей CSS...

person Ugo Méda    schedule 05.07.2012
comment
Спасибо, Уго, я использую очиститель только для контента, введенного wysiwyg. Все остальное будет использовать стандартный php-фильтр для строгого разделения и проверки на обычный текст. Что бы вы предложили разрешить в атрибуте стиля? - person PaulMrG; 05.07.2012
comment
Ничего, кроме цвета, размера шрифта, веса шрифта, цвета фона, выравнивания текста и так далее. Избегайте таких вещей, как позиция, верхнее, левое, поле... - person Ugo Méda; 05.07.2012