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