klg-asutk-app/docs/SECURITY.md
Yuriy d9dd6d66cd refactor: legal package, personnel package, FGIS base_service, docs/SECURITY
- .gitignore: backend/venv/
- legal: routes/legal/ (base, handlers), legal_legacy.py
- personnel: routes/personnel/ re-exports personnel_plg
- FGIS: fgis/base_service.py, fgis_revs imports from fgis
- docs/SECURITY.md: security guide
- lib/logger.ts, logger-client.ts

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-14 21:37:46 +03:00

3.0 KiB
Raw Blame History

Руководство по безопасности проекта КЛГ АСУ ТК

1. Секреты и переменные окружения

  • Никогда не коммитьте файлы .env, .env.local, .env.production и любые файлы с реальными ключами.
  • Используйте .env.example как шаблон: копируйте в .env или .env.local и подставляйте значения только локально.
  • В продакшене храните секреты в защищённом хранилище (переменные окружения платформы, vault), не в коде.
  • В .gitignore добавлены: .env, .env.*, !.env.example, certs/, *.pem, *.key.

2. Защита от XSS и инъекций

  • Не используйте dangerouslySetInnerHTML с пользовательским вводом.
  • Для инлайн-скриптов используйте компонент next/script (как в app/layout.tsx).
  • Санитизация: для пользовательского контента используйте DOMPurify или аналог.
  • Не используйте eval() — риск code injection.

3. CORS и API

  • CORS настроен только на разрешённые домены. В продакшене запрещён wildcard *.
  • Бэкенд: переменная CORS_ORIGINS — список доменов через запятую.

4. Авторизация

  • В production отключите dev-обход: ENABLE_DEV_AUTH=false на бэкенде, не используйте NEXT_PUBLIC_DEV_TOKEN в проде.
  • Токены и сессии передавайте по HTTPS; при необходимости используйте httpOnly cookies.

5. Логирование и отладка

  • В коде используйте logger (lib/logger.ts на фронте, logging на бэкенде), а не console.log.
  • ESLint: правило no-console в режиме error (допускаются только console.warn и console.error).
  • Перед коммитом запускайте npm run lint. Pre-commit хук (Husky) может проверять линт и тесты.

6. Проверка перед коммитом

  • Убедитесь, что .env файлы в .gitignore и не попадают в коммит.
  • Проверьте отсутствие eval() в коде: grep -r "eval(" .
  • Убедитесь, что отладочные логи вынесены в logger, а не в console.log.

7. Отчёт об уязвимостях

  • Обнаруженные уязвимости сообщайте ответственным за безопасность (например, security@company.com или через приватный канал).
  • Не создавайте публичные issue с описанием уязвимостей до их устранения.