Безопасно ли разрешать пользователям редактировать CSS? - PullRequest
7 голосов
/ 21 сентября 2009

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

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

Ответы [ 7 ]

10 голосов
/ 21 сентября 2009

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

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

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

6 голосов
/ 21 сентября 2009

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

Источник: Саймон Уиллисон, Истории ужасов веб-безопасности

3 голосов
/ 21 сентября 2009

Я бы не стал этого делать, потому что CSS может показать изображение, которое может использовать уязвимость ОС в примере.

Привет.

2 голосов
/ 21 сентября 2009

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

2 голосов
/ 21 сентября 2009

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

2 голосов
/ 21 сентября 2009

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

2 голосов
/ 21 сентября 2009

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

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

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

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

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