2013-05-21 3 views
6

У меня есть динамическая веб-страница, которую я хочу, чтобы другие люди вставляли свои веб-страницы с iframe (не обязательно с помощью каких-либо более продвинутых методов, таких как JavaScript).Можно ли разрешить встраивать произвольную внешнюю таблицу стилей на мою веб-страницу?

Вместо того, чтобы создавать всевозможные конструкции и стили самостоятельно, я собираюсь предоставить им собственную таблицу стилей для моей страницы через параметр HTTP GET и вставить такую ​​внешнюю таблицу стилей через URL w/<link type="text/css" rel="stylesheet" href & hellip; на моей странице.

Безопасно ли это? Будет ли это нарушать парадигму безопасности моего веб-сайта? Я знаю, что дополнительный текст может быть вставлен только с помощью CSS, и действительно, элементы могут быть удалены (что является для меня целым моментом, предоставляющим такую ​​функциональность для моих пользователей), но что-нибудь еще, о чем я должен знать?

Могут ли злоумышленники вставлять ссылки на мой сайт с помощью такого CSS, чтобы извлечь выгоду из моего HTTP-реферала и потенциально нарушить некоторые проверки, или вставка CSS ограничена текстом?

+0

Импорт чего-либо (независимо от) внешнего ресурса может быть угрозой безопасности. Но чтобы ответить на ваш вопрос «ссылки»: нет. Они могут скрыть элементы, добавить текст и т. Д., Но невозможно создать ссылку с css (или, по крайней мере, это должно быть предотвращено браузером, потому что это кросс-сайт srcipting). –

+3

См. [Скрипты между сайтами в таблицах стилей CSS] (http://stackoverflow.com/q/3607894/102937) –

+0

Это не дубликат http://stackoverflow.com/questions/13876961/how-do- i-обеспечить-user-input-is-css-and-not-malicious-code, у меня нет текстового ввода на моем сайте. Я хочу только разрешить ссылку на внешнюю таблицу стилей, а не хранить пользовательский ввод в моем собственном домене. – cnst

ответ

0

CSS не может вставлять связующий контент. Он может только стилизовать, поместить и скрыть то, что уже есть. Несомненно, люди могут испортить вашу страницу с :before и :after текстами, возможно, что вещи выглядят немного запутанными или меняют метки на существующие ссылки, но не сами URL.

3

В общем случае нет, allowing third-party CSS is not safe. Некоторые реализации позволяют использовать JavaScript в CSS, что означает, что позволяет пользователям изменять ваш CSS, позволяет им выполнять произвольный JavaScript в контексте вашей страницы.

Однако, если это предназначено для того, чтобы быть своего рода «белой меткой», где он, как представляется, является частью сайта, в который он встроен, и тот факт, что на самом деле ваша страница является только деталью реализации, это не так. Похоже, это серьезная проблема. Человек, определяющий «сторонний» CSS, является владельцем сайта, поэтому на данный момент он не является сторонним сторонником - они сами не отправятся в XSS!

Но никто еще не должен класть CSS на страницу, которая должна находиться под вашим контролем, потому что она действительно находится под контролем того, кто контролирует CSS.

+0

Это тоже мое занятие. Конечно, владелец сайта может вставлять вредоносный контент, но зачем им это нужно? –

+0

Ну, посмотрите, сайт предназначен для использования как конечными пользователями (в основном без какого-либо внешнего CSS, но потенциально с некоторыми куки-файлами), так и с веб-разработчиками (с внешним CSS), и я не хочу заниматься слишком сложно, используя две различные области для каждой группы.Итак, в каком контексте будет выполняться JavaScript в CSS? Может ли он (а) добавить ссылки, чтобы моя страница показывалась как Referer, и (b), читать, изменять или устанавливать файлы cookie из моего домена или другие подобные вещи? – cnst

+0

@cnst: Это зависит от реализации. Существуют различные функции в разных агентах, которые могут привести к выполнению скрипта, и я не знаю специфики большинства из них. Самым безопасным предположением было бы «Это эквивалентно тому, чтобы люди помещали на ваш сайт произвольный тег SCRIPT». – Chuck

Смежные вопросы