13. Безопасность и конфиденциальность

Замена ключей после обновления с 3.3.0

Эта часть важна только тем, кто использовал на версии 3.3.0 хранилище S3 или генерацию ALT через GigaChat. Если вы ни то, ни другое не использовали, можно пропустить.

Что случилось

В версии 3.3.0 публичный адрес плагина responsiveimages/get/data/images/ отдавал любому, кто его открывал, настройки хранилища и токен GigaChat: ключ доступа и секретный ключ S3, адрес и имя бакета, токен GigaChat. Обновление до 4.0 это исправляет — адрес отдаёт только список полей, нужных витрине. Но установка обновления не делает прежние ключи безопасными: они могли быть прочитаны, пока работала 3.3.0.

Что сделать (порядок важен)

  1. Сначала обновитесь до 4.0 и выполните шаги из раздела 3 (резервная копия, сброс кеша, «Сохранить»).
  2. В кабинете провайдера выпустите новые ключи S3 и новый токен GigaChat. Введите их в настройки плагина (кнопки «Заменить ключ») и проверьте работу (для S3 — «Проверить подключение»).
  3. Только после этого отзовите старые ключи у провайдера.

Если после обновления вы откатываетесь на 3.3.0, уязвимость возвращается: перед откатом очистите ключ S3 и токен GigaChat в настройках (кнопки «Очистить ключ» и «Сохранить»), а после работы на 3.3.0 считайте ключи скомпрометированными (раздел 3).

Что ещё улучшено в 4.0

  • Секретный ключ S3 и токен GigaChat больше не передаются на страницу настроек: вместо них показано «Ключ задан», кнопки «Заменить ключ» и «Очистить ключ». Сохранение настроек без замены ключа его не стирает.
  • Если вы меняете адрес хранилища, ключ нужно ввести заново: сохранённый ключ работает только с тем адресом, с которым он сохранён.
  • В журналах и ответах плагина нет ключей, путей сервера и трассировок. В отчёте для поддержки нет доменов, путей, ключей, адресов хранилищ, токенов и e-mail.
  • Соединение с GigaChat всегда проверяется сертификатом (корень НУЦ Минцифры входит в плагин), отключить проверку нельзя. В 3.3.0 проверки не было.
  • Скачивание внешних (абсолютных) HTTPS-картинок идёт с проверкой сертификата сайта по хранилищу сертификатов сервера (раньше проверка была отключена).
  • Публичные адреса плагина проверяют адрес страницы и путь изображения; в режиме отладки посетителю не показываются пути и трассировки.

Права доступа

  • Страница настроек плагина, кнопка «Удалить все созданные изображения», статистика, вкладка «Диагностика», проверка подключения S3 и запрос «Почему изображение не обработано?» требуют права на настройки Shop-Script. Без него будет ответ «Access denied».
  • Выдавайте это право только тем, кому доверяете: через настройки плагина можно удалить созданные картинки, изменить хранилище и ключи.
  • Режим отладки («Режим отладки», «Отладка» в S3) на рабочем сайте не включайте: могут раскрыться служебные сведения.
  • Фоновая команда запускается только из консоли (cron или SSH), никогда из браузера. Запускайте её от пользователя веб-сервера.

Что хранится и где

Что Где Комментарий
Созданные копии картинок wa-data/public/shop/responsiveimages/images/ или бакет S3 Копии открыты для чтения посетителям (это публичные картинки витрины). Оригиналы не меняются
Очередь страниц и картинок, журнал страниц, список созданных файлов таблицы базы shop_responsiveimages_image_queue, shop_responsiveimages_images_list и др., папка wa-data/public/shop/responsiveimages/info Адреса страниц и картинок вашего магазина. Данных покупателей нет
Счётчик посещаемости страниц таблицы shop_responsiveimages_demand (адреса страниц и счётчик) и shop_responsiveimages_demand_pass (хеш пары «пропуск × страница» и время; ни пропуска, ни адреса в чистом виде) Только для режима Smart Hybrid. Не более 20 000 и 50 000 строк соответственно
Список заменённых файлов, ожидающих удаления таблица shop_responsiveimages_retired Служебная
Настройки плагина база Webasyst Секретные ключи (S3, GigaChat) хранятся в настройках; на страницу настроек они не передаются
Журналы wa-log/ Без ключей, путей сервера и адресов хранилищ

Плагин не собирает персональных данных посетителей и не передаёт информацию о них внешним сервисам. В GigaChat передаются только ваши картинки и текст шаблона (раздел 10).

Плагин использует три cookie. Учтите их в политике cookie вашего сайта.

responsiveimages_resolution и responsiveimages_dpr

Ставит скрипт плагина в браузере посетителя. Хранят ширину доступной области экрана в пикселях и плотность экрана (1–3). Срок — 30 дней, путь /. По ним сервер выбирает подходящий размер картинок. Персональных данных не содержат.

Служебная cookie для учёта визитов страниц.

  • Сессионная: у неё нет срока, она удаляется при закрытии браузера. HttpOnly, SameSite=Lax, на HTTPS — Secure.
  • Ставится сервером при загрузке данных страницы (всегда, независимо от режима обработки; учёт визитов используется в режиме Smart Hybrid).
  • Значение — номер дня, случайный идентификатор «пропуска» и подпись ключом вашего сайта. Адресов, имён и персональных данных в нём нет. Ни для рекламы, ни для отслеживания она не используется.
  • Нужна, чтобы считать визит страницы один раз за «пропуск» и определять, какие страницы обрабатывать первыми. На сервере хранится только хеш пары «пропуск × страница» (до 50 000 строк).
  • Браузер без cookie (или другой домен-зеркало) не учитывается: страница ставится в очередь как обычно, но без приоритета.
  • Ограничение защиты: скрипт, который перед каждым обращением запрашивает данные страницы, может учесть визит не чаще раза в минуту на страницу; счётчик страницы не превышает 500. Влияет только на порядок обработки.

Рекомендации

  • Храните резервные копии в недоступном из интернета месте.
  • Для S3 используйте ключ, ограниченный одним бакетом и только нужными правами; открывайте на публичное чтение только чтение (GetObject).
  • Раз в какое-то время обновляйте ключи.
  • Не пересылайте ключи и токены в переписке; в обращениях в поддержку используйте «Отчёт для поддержки» — в нём нет секретов.
Просмотр изображения
Оригинал