דלג לתוכן הראשי

שיטות עבודה מומלצות לאבטחה

אימות והרשאות

JWT (JSON Web Tokens)

  • כל נקודות הקצה המוגנות חייבות להשתמש ב-JwtAuthGuard.
  • הטוקנים חתומים עם JWT_SECRET ומכילים userId ו-role.
  • לטוקנים יש אורך חיים קצר (בדוק את הגדרות AuthModule), עם refresh tokens להפעלות ארוכות טווח.

RBAC (בקרת גישה מבוססת תפקידים)

  • אל תסתמך רק על isAuthenticated().
  • הגדר במפורש הרשאות נדרשות לכל נקודת קצה באמצעות @Permissions().
  • דוגמה:
    @Get()
    @Permissions(Permission.MANAGE_USERS) // דורש יכולת ספציפית
    findAll() { ... }

בידוד נתונים (Multi-Tenancy)

  • לעולם אל תבטח ב-User ID שסופק מהלקוח ב-body לבדיקות בעלות נתונים.
  • השתמש תמיד ב-userId מ-req.user (מוזרק על ידי TenantInterceptor או AuthGuard).
  • בעת שימוש ב-Prisma, ה-TenantMiddleware מסנן שאילתות באופן אוטומטי. אל תעקוף את ה-middleware הזה (למשל, באמצעות SQL גולמי) ללא בדיקה זהירה.

אימות קלט

  • השתמש ב-Zod עבור כל ה-DTOs (nestjs-zod).
  • אימות קפדני מונע התקפות הזרקה ומבטיח שלמות נתונים.
  • נקה קלטים שיוצגו ב-HTML (אמנם React מטפל ברוב XSS, היזהר עם innerHTML).

הגבלת קצב

  • נקודות קצה ציבוריות (Login, Register) חייבות להשתמש ב-RateLimitGuard או דקורטור @RateLimit().
  • הגדר מגבלות כדי למנוע התקפות brute-force.

רישום ביקורת

  • פעולות קריטיות (Login, Delete, Update Config) חייבות להירשם דרך AuditService.
  • רשומות יומן צריכות לכלול: userId, action, resource, ipAddress, ו-status.

ניהול סודות

  • לעולם אל תשמור סודות ב-Git.
  • השתמש בקבצי .env ו-ConfigService.
  • החלף JWT_SECRET ומפתחות API באופן תקופתי.