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