Многие думают, что если человек получил доступ к панели управления сайтом (админке), то ему можно доверять на 100%. Это опасное заблуждение. В системе RK-CMS реализовано множество ролей и прав, и наличие доступа в админ-панель - это ещё не повод считать пользователя полностью благонадёжным.
Почему мы так считаем?
Давайте разберем простой пример. У нас есть роль "SEO-специалист". Этому сотруднику для работы нужен доступ к текстам описаний и загрузке изображений. Казалось бы, что тут такого? Однако именно через текстовые поля и файлы чаще всего злоумышленники или невнимательные сотрудники могут "протащить" вредоносный код.
Мы не можем гарантировать, что пароль от учетной записи SEO-специалиста не украдут или что сам специалист не решит случайно (или намеренно) вставить в описание товара опасный скрипт.
Как мы защищаемся?
Принцип нашей работы прост: мы не доверяем никому и ничему, что приходит извне, даже если это пришло из нашей собственной админки.
Поэтому мы в обязательном порядке обрабатываем абсолютно все входящие данные.
1. Фильтрация текста (XSS-защита)
Мы не позволяем данным попадать в базу данных как есть.
Удаляем HTML-заголовки: Мы вырезаем всё, что может изменить структуру страницы. Если в тексте встречаются теги, мы их безжалостно удаляем. Зачем? Чтобы никто не мог вставить свою рекламу или невидимый блок на страницу.
Нейтрализуем скрипты: Любые попытки вставить JavaScript пресекаются. Это защищает ваших посетителей от кражи cookies и переадресации на мошеннические сайты.
2. Очистка загружаемых файлов
Даже картинка может быть опасной, если это не просто картинка.
Проверяем заголовки файлов (сигнатуры): Мы не верим расширению файла. Каждый загружаемый файл проверяется по его внутренним заголовкам - первым байтам, которые однозначно определяют тип данных. Настоящий JPEG всегда начинается с определённой последовательности байтов, PNG - с другой, PDF - с третьей. Если заголовок не совпадает с заявленным типом или выглядит подозрительно, файл отклоняется. Это исключает возможность загрузки вируса, замаскированного под картинку, когда вредоносный код прячется именно в начале файла.
Чистим SVG: Формат SVG - это, по сути, код. В него можно спрятать вредоносный скрипт, который сработает при открытии. Мы пропускаем SVG через специальный "пылесос", который вычищает весь исполняемый мусор, оставляя только безопасную графику.
Контроль содержимого: Мы также анализируем весь файл, а не только его заголовок, чтобы убедиться, что внутри нет скрытых вложений или вредоносного кода, вшитого в середину данных.
Безопасность в современном вебе - это эшелонированная оборона. Даже если вы находитесь внутри системы (в админке), вы всё равно рассматриваетесь системой как потенциальный источник угрозы. Это не паранойя, а суровая необходимость, которая позволяет сохранить данные клиентов и работоспособность сайта.