67 lines
8.2 KiB
Markdown
67 lines
8.2 KiB
Markdown
# Политика безопасности и конфиденциальности (SECURITY)
|
|
|
|
Данный документ описывает принципы защиты данных, архитектуру приватности по умолчанию (Privacy by Default), механизмы предотвращения накруток и порядок сообщения об уязвимостях в проекте **Hypn0 (HypnoSVG)**.
|
|
|
|
---
|
|
|
|
## 1. Архитектура приватности: Zero-PII
|
|
|
|
Платформа Hypn0 спроектирована по принципу **нулевого сбора персональных данных (Zero Personally Identifiable Information)**:
|
|
- Мы не требуем регистрации, ввода логинов, паролей, адресов электронной почты или номеров телефонов.
|
|
- В базе данных проекта отсутствуют таблицы пользователей или учетных записей.
|
|
- Сгенерированные SVG-файлы содержат только математические координаты геометрических примитивов и инлайновые CSS-анимации. В них не встраиваются метаданные исходных изображений (EXIF-теги, геолокация и сведения об устройствах вырезаются при растеризации).
|
|
|
|
---
|
|
|
|
## 2. Режим без согласия (Default / No-Tracking)
|
|
|
|
Если посетитель не выразил явного согласия на отслеживание (не нажал кнопку подтверждения в модальном окне):
|
|
|
|
1. **Никаких клиентских идентификаторов:** В браузере пользователя не создаются cookie-файлы и записи `localStorage`.
|
|
2. **Отключение внешних систем аналитики:** Внешние трекеры и счетчики метрик (Яндекс.Метрика, Google Tag Manager и др.) блокируются на уровне шаблонизатора (`{% if ALLOW_TRACKING %}`) и физически не загружаются на клиентское устройство.
|
|
3. **Серверные логи:** Единственная информация, которая фиксируется инфраструктурой — стандартные системные журналы веб-сервера (Nginx / Gunicorn), включающие IP-адрес, User-Agent и запрашиваемый URL. Логи используются исключительно для защиты от DDoS-атак, мониторинга доступности и хранятся ограниченное время с регулярной ротацией.
|
|
|
|
---
|
|
|
|
## 3. Ограничения для пользователей без согласия
|
|
|
|
Пользователи, отказавшиеся от отслеживания или не давшие явного согласия, могут свободно использовать локальный генератор и просматривать галерею. Однако им **недоступны социальные функции платформы**:
|
|
- Голосование за работы (лайки / дизлайки);
|
|
- Отправка жалоб (клеймы на спам или неприемлемый контент);
|
|
- Публикация собственных работ в общую Галерею Сообщества.
|
|
|
|
### Причина ограничений: защита от накруток и бот-атак
|
|
Для работы гравитационного алгоритма рейтинга и справедливого распределения работ по уровням («Инкубатор», «Выбор Мозгового Слизня», «Золотой фонд») платформе необходим уникальный анонимный якорь клиента.
|
|
|
|
Если клиент не дал согласие на запись анонимного идентификатора устройства, сервер не имеет возможности отличить повторный клик от первичного. Допуск анонимных неидентифицированных запросов к голосованию привел бы к мгновенной накрутке рейтинга скриптами, спаму и искажению всей экосистемы галереи.
|
|
|
|
---
|
|
|
|
## 4. Механизм согласия и идентификации (`hypn0_vid`)
|
|
|
|
При нажатии кнопки «Подчиниться Гипножабе!» (получение согласия):
|
|
|
|
1. В браузере генерируется случайный криптографический идентификатор версии 4: `crypto.randomUUID()`.
|
|
2. Значение сохраняется в cookie и `localStorage` под ключом `hypn0_vid`.
|
|
3. Срок жизни cookie составляет 2 года, флаги передачи настроены на безопасный режим (`path=/; SameSite=Lax`).
|
|
4. Значение `hypn0_vid` является псевдослучайной последовательностью символов и не может быть сопоставлено с реальной личностью пользователя.
|
|
5. Идентификатор используется бэкендом исключительно в модели `TbVote` для ограничения частоты действий (Rate Limiting) и гарантии принципа «один голос на одну картину от одного браузера».
|
|
|
|
---
|
|
|
|
## 5. Безопасность обработки файлов и генерации SVG
|
|
|
|
- **Санитизация входных данных:** Все загружаемые изображения проходят валидацию через библиотеку Pillow. Бинарный код файлов декодируется в память, отсекая потенциально вредоносные вложения и эксплойты форматов.
|
|
- **Безопасность SVG:** Выходной SVG формируется программно из числовых матриц и не содержит тегов `<script>`, внешних ссылок `xlink:href` или обработчиков событий `onload`/`onclick`. Это исключает угрозу Stored XSS при просмотре чужих работ.
|
|
- **Ограничения ресурсов (DoS Prevention):** Заданы строгие ограничения на максимальный размер входного файла, разрешение сетки (`cols`) и радиус элементов, предотвращающие исчерпание памяти сервера (Memory Exhaustion).
|
|
|
|
---
|
|
|
|
## 6. Сообщение об уязвимостях (Vulnerability Disclosure)
|
|
|
|
Если вы обнаружили уязвимость безопасности в сервисе Hypn0, просим вас ответственно подойти к раскрытию информации:
|
|
|
|
- **Канал связи:** Направьте подробное описание проблемы мейнтейнеру проекта через issue-трекер репозитория с пометкой безопасности или по электронной почте администратора.
|
|
- **Что указать:** Описание вектора атаки, шаги для воспроизведения (PoC) и потенциальное влияние на систему.
|
|
- **Сроки:** Мы стремимся подтвердить получение отчета в течение 48 часов и оперативно выпустить патч. Просим воздержаться от публичного раскрытия до момента устранения уязвимости.
|