- .env.example: полный шаблон, защита секретов - .gitignore: явное исключение .env.* и секретов - layout.tsx: XSS — заменён dangerouslySetInnerHTML на next/script для SW - ESLint: no-console error (allow warn/error), ignore scripts/ - scripts/remove-console-logs.js: очистка console.log без glob - backend/routes/modules: README с планом рефакторинга крупных файлов - SECURITY.md: гид по секретам, XSS, CORS, auth, линту - .husky/pre-commit: запуск npm run lint + прочие правки приложения и бэкенда Co-authored-by: Cursor <cursoragent@cursor.com>
35 lines
2.4 KiB
Markdown
35 lines
2.4 KiB
Markdown
# Безопасность проекта КЛГ АСУ ТК
|
||
|
||
## 1. Секреты и переменные окружения
|
||
|
||
- **Никогда не коммитьте** файлы `.env`, `.env.local`, `.env.production` и любые файлы с реальными ключами.
|
||
- Используйте **`.env.example`** как шаблон: копируйте в `.env.local` и подставляйте значения только локально.
|
||
- В продакшене храните секреты в защищённом хранилище (переменные окружения платформы, vault), не в коде.
|
||
- В `.gitignore` добавлены: `.env`, `.env.*`, `!.env.example`, `certs/`, `*.pem`, `*.key`.
|
||
|
||
## 2. Защита от XSS
|
||
|
||
- Не используйте `dangerouslySetInnerHTML` с пользовательским вводом.
|
||
- Для инлайн-скриптов используйте компонент `next/script` (как в `app/layout.tsx`).
|
||
- Санитизация: для пользовательского контента используйте `DOMPurify` или аналог (см. `lib/sanitize`).
|
||
|
||
## 3. CORS и API
|
||
|
||
- CORS настроен только на разрешённые домены. В продакшене запрещён wildcard `*`.
|
||
- Бэкенд: переменная `CORS_ORIGINS` — список доменов через запятую.
|
||
|
||
## 4. Авторизация
|
||
|
||
- В production отключите dev-обход: `ENABLE_DEV_AUTH=false` на бэкенде, не используйте `NEXT_PUBLIC_DEV_TOKEN` в проде.
|
||
- Токены и сессии передавайте по HTTPS; при необходимости используйте httpOnly cookies.
|
||
|
||
## 5. Линтинг и автоматизация
|
||
|
||
- ESLint: правило `no-console` в режиме error (допускаются только `console.warn` и `console.error`).
|
||
- Перед коммитом запускайте `npm run lint`. Pre-commit хук (Husky) может проверять линт и тесты.
|
||
|
||
## 6. Отчёт об уязвимостях
|
||
|
||
- Обнаруженные уязвимости сообщайте ответственным за безопасность (например, security@company.com или через приватный канал).
|
||
- Не создавайте публичные issue с описанием уязвимостей до их устранения.
|