NEX1ON 0.5.0
Оформление темы из панели
Цвета, шрифты и скругления темы меняются в панели без правки стилей; значения проверяются по белому списку.
Тема объявляет переменные оформления в theme.json и пользуется ими как обычными переменными CSS. Панель даёт их менять, движок подставляет значения на страницу — сайт меняет вид без единой правки в файлах стилей.
Как это устроено
- Значения хранятся отдельно для каждой темы: переключение туда и обратно ничего не теряет.
- На страницу уходит только то, что отличается от заданного темой. Ничего не меняли — не ушло ни байта.
- На странице оформления живой образец: он меняется, пока правишь поля. Форма отправляется и без скрипта.
Безопасность
Значения попадают прямо в тег стилей, поэтому проверяются по белому списку: пропускается только заведомо допустимое. Строка вида «red} body{display:none}» иначе переверстала бы весь сайт, а закрывающий тег со скриптом следом превратил бы настройку цвета в выполнение чужого кода. Право на оформление тут не оправдание: учётную запись администратора могут увести.Оформление сохраняется целиком или никак: применить половину значений — значит показать вид, которого никто не просил.