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

43 lines
3.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Руководство по безопасности проекта КЛГ АСУ ТК
## 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 с описанием уязвимостей до их устранения.