Проверить / проверить, не является ли предоставленный пользователем CSS злом

StackOverflow https://stackoverflow.com/questions/1809059

  •  05-07-2019
  •  | 
  •  

Вопрос

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

Я предполагаю, что есть некоторые злые хакеры CSS. О чем мне следует позаботиться?

Это было полезно?

Решение

Одним из решений было бы предоставить пользователю опции через некоторый редактор, позволяя им выбирать цвет / размер различных элементов. Затем создайте CSS самостоятельно на основе параметров, предоставленных пользователем.

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

Другие советы

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

property: expression(...);

или просто добавьте " не разрешено " ошибка.

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

В любом другом случае: используйте решение Зевса.

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

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

Надеюсь, это поможет.

Помимо прочего, проверьте, являются ли они действительными CSS: http: //jigsaw.w3. орг / CSS-валидатор /

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top