2009-09-21 3 views
7

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

Есть ли проблемы с безопасностью? Я не вижу ничего очевидного, но думал, что спрошу, если бы я ничего не пропустил.

ответ

10

Javascript может быть выполнен в CSS, вы должны убедиться, что используете какую-либо фильтрацию.

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

Это, однако, может быть безопасным, если пользователь видит только свой собственный CSS, и у них не было бы способа проверить, что они сделали. В противном случае будет работать какой-то белый список или уценка.

+1

Ну, если они редактируют свои собственные CSS, они могут сделать только нападение XSS на себя, не слишком тревожную :-) –

+0

Это зависит от структуры сайта. – n1313

+0

Как выполнить javascript в CSS? –

2

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

Для этого случая возможно решение. Упорядочить определенный Url для сброса стиля. Что-то вроде:

http://mysite.com/users/234234/reset 

И советы для пользователя, когда он собирается изменить стиль, чтобы помнить этот URL и просто следовать, если вещи вышли из-под контроля. При ударе пользовательские стили будут деактивированы.

+2

Собственно, как отмечали другие ответы, вы можете выполнить JavaScript в CSS. http://www.slideshare.net/simon/web-security-horror-stories-presentation – jammycakes

2

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

2

Короткий ответ: нет. Первые плохие вещи, которые приходят на ум, - это выражения MSIE.

2

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

+0

Вы можете предварительно сформировать XSRF намного проще, вставив изображения, которые гораздо чаще встречаются для веб-сайтов, которые позволяют. – Sam152

6

Короткий ответ: нет. HTC в IE и XBL в Mozilla являются потенциальными атакующими векторами. Этот хак использовался для кражи 30 000 паролей MySpace.

Источник: Simon Willison, Web Security Horror Stories

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