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