Безопасно ли включать внешний CSS-файл или это может привести к внедрению кода? - PullRequest
5 голосов
/ 23 августа 2011

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

Основная идея, которую я имею, состоит в том, чтобы позволить им дать мне URL-адрес CSSфайл, который я должен включить в страницу, которую я им предоставляю, чтобы заполнить iframe.Насколько я знаю, это безопасно, но я не особенно знаком с CSS (особенно с более новыми версиями), поэтому я хочу проверить это.

Есть ли способ, которым кто-то может создать файл CSS, который быпозволить им ввести код на мой сайт или иным образом получить доступ к таким файлам, как файлы cookie моего домена?Это действительно безопасно, или мне нужно придумать другое решение?

1 Ответ

12 голосов
/ 23 августа 2011

Нет, это небезопасно.expression и -moz-binding - это известные способы вызвать произвольное выполнение скрипта в определенных браузерах через CSS. LiveJournal подвергся очень публичной атаке XSS, которая произошла из-за JavaScript, встроенного в предоставленный пользователем CSS.

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

Из Вектор атаки Caja wiki :

Созданные таблицы стилей CSS могут выполнять неанизированный JavaScript в глобальномобласть действия в некоторых браузерах.

Фон

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

IE имеет расширение, позволяющее выполнятьпроизвольного JavaScript.Свойство expression описано в http://msdn2.microsoft.com/en-us/library/ms537634.aspx

Используя силу динамических свойств, теперь можно объявлять значения свойств не только как константы, но и как формулы.... Для сценариев динамическое свойство может быть любым допустимым оператором JScript или Microsoft Visual Basic Scripting Edition (VBScript).http://msdn2.microsoft.com/en-us/library/ms533503.aspx

binding позволяет связывать с внешне указанными сценариями http://developer.mozilla.org/en/docs/CSS:-moz-binding & http://developer.mozilla.org/en/docs/XBL:XBL_1.0_Reference:Elements#binding

-moz-binding позволяет связывать через интерфейс XML (также используя data: URLs)

Допущения

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

Версии

IE 5 и более поздние версии (но не IE 8 или более поздние в «стандартном режиме»).

Mozilla / Firefox, версии неизвестны.

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