v1.0

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

Техническая информация об обработке данных, мерах защиты и рекомендациях по безопасному использованию.

Как обрабатываются конфиги

Конфиг генерируется на сервере: параметры формы передаются в Jinja2-шаблон через FastAPI backend. Конфиг рендерится в памяти и возвращается в ответе API. Без создания share-ссылки конфиг не сохраняется ни в базе данных, ни в логах.

Внешние AI/LLM API при генерации не задействуются. Валидация работает через отдельный nginxforge_validator контейнер внутри инфраструктуры.

ℹ️ Валидация выполняется через настоящий nginx -t в изолированном Docker-контейнере. Если validator-контейнер недоступен, сервис возвращает valid: null вместо false.

Что хранится в базе данных

Таблица Что хранится Когда TTL
shared_configs slug, текст конфига, сценарий, params JSON, SHA-256(IP), view_count При создании share-ссылки 30 дней
generation_stats сценарий, флаг SSL, флаг docker_export, timestamp После каждой генерации и экспорта Без TTL (агрегированная статистика)
directives аннотации директив (статичные данные) Seed при деплое Без TTL
templates шаблоны стеков (статичные данные) Seed при деплое Без TTL
feedback тип обращения, текст сообщения, email (если указан), page_url, SHA-256(IP), can_contact При отправке обратной связи Без TTL (хранится для анализа)
ℹ️ generation_stats не содержит текст конфига, IP, параметры формы — только агрегированные счётчики для внутренней аналитики.

Обращения, отправленные через форму обратной связи, сохраняются в базе данных и доступны администратору сервиса для ручной обработки. Email указывается только если пользователь явно дал согласие на обратный контакт.

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

  • Конфиг не сохраняется без явного создания share-ссылки
  • IP-адрес не хранится — только SHA-256 хэш (необратимый)
  • Cookies аутентификации не используются
  • Параметры формы не логируются
  • История генераций без привязки к пользователю не ведётся
  • Внешние AI/LLM API при генерации не вызываются

Текущие меры защиты

Мера Статус Детали
HTTPS ✓ Включён TLSv1.2 + TLSv1.3, Let's Encrypt
HSTS ✓ Включён max-age=31536000; includeSubDomains
X-Frame-Options ✓ Включён DENY
X-Content-Type-Options ✓ Включён nosniff
Rate limiting /generate ✓ 30/min per IP slowapi + FastAPI middleware
Rate limiting /validate ✓ 30/min per IP slowapi + FastAPI middleware
Rate limiting /share ✓ 10/hour per IP slowapi + FastAPI middleware
Pydantic-валидация входных данных ✓ Включена Все API endpoints
SQLite WAL mode ✓ Включён journal_mode=WAL, synchronous=NORMAL
SHA-256 хэш IP ✓ В shared_configs hashlib.sha256
Автоудаление просроченных shares ✓ APScheduler Каждую ночь в 03:00 MSK
Nginx backend — reverse proxy FastAPI за nginx, не напрямую

Как безопасно использовать NginxForge

⚠️ Не вставляйте секреты в параметры генератора. Поля server_name, пути к сертификатам и другие параметры формы могут попасть в конфиг, который вы создадите как share-ссылку. Заменяйте реальные домены на example.com, реальные пути — на типовые перед шарингом.
⚠️ Share-ссылки публичны. Любой, кто знает URL https://nginxforge.ru/s/{slug}, может открыть конфиг. Ссылки не защищены паролем.
ℹ️ Проверяйте конфиг в своём окружении. Используйте nginx -t на целевом сервере перед деплоем. Генератор создаёт типичный конфиг, но не знает особенностей вашей инфраструктуры.
ℹ️ NginxForge не является секрет-менеджером. Не храните ключи, токены, пароли через share-ссылки.

Границы ответственности

NginxForge помогает сформировать и проверить конфиг, но не заменяет финальную верификацию в вашем окружении. Пользователь самостоятельно несёт ответственность за продакшен-деплой. Аннотации и предупреждения носят справочный характер и не являются гарантией корректной архитектуры для конкретного use case.

Сообщить о проблеме безопасности

Если вы обнаружили уязвимость или проблему безопасности:

security@nginxforge.ru

Пожалуйста, не публикуйте уязвимости в открытых каналах до получения ответа.
Срок ответа — до 72 часов.