Как мне защитить от XSS в CSS? - PullRequest
3 голосов
/ 21 апреля 2011

Я хочу, чтобы пользователи нашей онлайн-системы могли контролировать свои собственные файлы .css с нами, просто включив их для каждого пользователя.

Каков наилучший способ избежать возможных XSS-атак в указанных файлах?

Можно ли вообще себя защитить?

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

Ответы [ 2 ]

2 голосов
/ 23 апреля 2011

Во-первых, проявляйте осторожность, как говорили другие.Помимо этого, попробуйте и внесите в белый список допустимые данные, которые вы ожидаете в файле.Посмотрите, можете ли вы найти какие-либо библиотеки для выбранной вами платформы (вы не упомянули, что это такое), которая может проверить строку на соответствие структуре CSS.

Другая вещь, которую вы могли бы рассмотреть, - параметризация определенных атрибутов CSS.и позволяя пользователям настраивать их (например, цвет, шрифт и т. д.).Это значительно снизит ваш риск, поскольку устраняет возможность произвольного создания вашего собственного вредоносного CSS (и, наоборот, создания вашего собственного невинного CSS!)

Что касается вашего первоначального вопроса «Можно ли полностью защитить себя привсе? ", это просто - нет!

2 голосов
/ 21 апреля 2011

Проблема с разрешением CSS заключается в том, что многие умные атаки могут происходить. CSS может быть очень опасным.

Некоторые выражения CSS позволяют выполнять произвольный JavaScript. Это трудно предотвратить с помощью черного списка, поэтому я предлагаю белый список.

Кроме того, кто-то может создать файл CSS, который изменяет страницу, чтобы олицетворять другой сайт, другую страницу, или, возможно, он ловко ориентирует другие элементы на странице. Представьте себе, если бы кто-то смог разместить свою форму входа над вашей настоящей. Тогда они могли бы перехватить запросы входа в систему. В зависимости от того, как настроен ваш сайт, это может или не может быть возможно; но будь предупрежден! Некоторые знают это как clickjacking.

...