Санитарная обработка CSS с использованием Java - PullRequest
3 голосов
/ 13 июня 2011

Есть ли в Java хорошая библиотека для очистки таблиц стилей CSS?Мы хотели бы позволить пользователям-администраторам загружать таблицы стилей CSS, чтобы контролировать внешний вид части сайта, которую они администрируют.Естественно, мы не хотим использовать атаки XSS, такие как background: url (javascript :), поэтому мы ищем хорошее решение для дезинфекции.

Единственное, что мне пока понравилось, что мне понравилось, использует Парсер Google Caja CssTree для исключения опасных тегов из CSS.Я могу в конечном итоге использовать что-то вроде этого, но если кто-то знает о библиотеке, для которой мне не нужно сбрасывать так много зависимостей и извлекать, это было бы полезно.Рейнольдс предложил

        Policy policy = Policy.getInstance("antisamy.xml");
        ResourceBundle messages = ResourceBundle.getBundle("AntiSamy", Locale.getDefault());

        CssScanner scanner = new CssScanner(policy, messages);
        CleanResults results = scanner.scanStyleSheet(stylesheet, Integer.MAX_VALUE);

Ответы [ 4 ]

3 голосов
/ 13 июня 2011

OWASP AntiSamy может выполнять проверку таблицы стилей CSS;Я не пробовал эту функцию в частности, хотя.Кроме того, я не уверен, соответствует ли это вашему проекту, который содержит слишком много зависимостей.Для анализа синтаксической таблицы стилей он полагается на Apache Batik.

Если бы я заботился о безопасности, меня бы не беспокоили нисходящие зависимости;Я бы выбрал подходящий инструмент для этой задачи.

0 голосов
/ 21 июня 2011

Первая десятка OWASP представляет широкий консенсус в отношении того, какие наиболее важные недостатки безопасности веб-приложений и лучшие методы защиты от них.Он рекомендует использовать Проект ESAPI OWASP для построения защиты от XSS.Этот проект ESAPI создал библиотеку кодирования, которая поставляется на различных языках, включая Java, .NET, PHP, Classic ASP, Cold Fusion, Python и Haskell.Он имеет инструменты для кодирования ненадежных данных для контекста, с которым вы имеете дело:

encodeForHTML
encodeForHTMLAttribute
encodeForJavaScript
encodeForCSS
encodeForURL

Он также имеет валидатор, который проверяет для контекста, к которому принадлежит ввод:

boolean isValidURL = ESAPI.validator().isValidInput("URLContext", userURL, "URL", 255, false);

Некоторые организации, использующие ESAPI, включают American Express, Apache Foundation, Booz Allen Hamilton, Aspect Security, Foundstone (McAfee), Hartford, Infinite Campus, Lockheed Martin, MITER, ВМС США - SPAWAR, Всемирный банк, SANSInstitute.

Я также рекомендую прочитать их XSS Prevention Cheat Sheet , в которой описываются лучшие методы построения вашей защиты от XSS (по сути, это сводится к тому, что вы ДОЛЖНЫ использовать синтаксис escape длячасть документа HTML, в которую вы помещаете ненадежные данные).

0 голосов
/ 13 июня 2011

Возможно, вы сможете использовать CSSParser из проекта Летающая тарелка

Вам все равно придется повторить все правила и решить,они опасны или нет.

0 голосов
/ 13 июня 2011

Встроенный в Java класс StyleSheet и CSS поддерживает синтаксический анализ таблиц стилей и позволяет вам взаимодействовать с ними (удалять определенные свойства, применять определенные свойства и т. Д.).Я не уверен, что они полностью обновлены и моделируют каждое доступное свойство, но это стоит посмотреть (на одну библиотеку меньше, чтобы отправить!)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...