klg-asutk-app/SECURITY.md
Yuriy aa052763f6 Безопасность и качество: 8 исправлений + обновления
- .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>
2026-02-14 21:29:16 +03:00

2.4 KiB
Raw Permalink Blame History

Безопасность проекта КЛГ АСУ ТК

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 с описанием уязвимостей до их устранения.