Пользовательский CSS: что может пойти не так? - PullRequest
3 голосов
/ 02 мая 2011

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

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

Ответы [ 5 ]

2 голосов
/ 02 мая 2011

В OWASP есть несколько полезных советов о том, как избегать ненадежного CSS , которые вы могли бы рассмотреть.

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

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

1 голос
/ 02 мая 2011

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

Те, кто осваивает CSS, могут просто использовать расширение браузера (например, Стильный ), чтобы настроить CSS, без каких-либо усилий с вашей стороны и любого риска для безопасности вашего сайта.

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

1 голос
/ 02 мая 2011

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

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

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

1 голос
/ 02 мая 2011

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

Спешу добавить, мы дали им «конструктор CSS», а не прямой контроль над CSS, который хорошо работал в нашей ситуации (на клиентских сайтах, где люди не имели большого опыта работы в Интернете).

Это звучит проще, чем было на самом деле - было бы хорошо, если бы они могли менять шрифт, хотя на мультитенантном сайте у нас были некоторые с основным шрифтом Times (где нам нужно было создать белый список шрифтов, чтобы идти с ним этот шрифт), а некоторые с Arial (опять же, новый белый список).

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

Тем не менее, у нас все еще были клиенты, которые связывались с нами, когда делали это, так что это не было надежно.

Итак, в итоге:

  • Я могу защищать использование белый список, хотя в качестве средства ограничивающий выбор - если они создают стиль для основного текста, затем позволяет 24pt текст не сулит ничего хорошего в терминах пользовательского интерфейса.
  • Использовать вживую предварительный просмотр везде, где это возможно, чтобы они могли посмотрим, как это будет выглядеть, как они построить стиль - это не может остановить глупые люди, но это, конечно, в хотя бы показать им, как они глупы быть! :)
1 голос
/ 02 мая 2011

Остерегайтесь Internet Explorer, который, как известно, разрешает код JavaScript через CSS. Это может быть причиной XSS-атак, если другие увидят этот пользовательский CSS.

Кроме этого, с точки зрения безопасности, вероятно, все будет хорошо.

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

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

...