השפעה
כותרות אבטחה חסרות יכולות להיות מנוצלות לביצוע קליקים, סקריפטים בין אתרים (XSS), או לאסוף מידע על סביבת השרת [S2]. כאשר כותרות כגון Content-Security-Policy (CSP) או X-Frame-Options מיושמות באופן לא עקבי על פני מסלולים, תוקפים יכולים למקד נתיבים ספציפיים לא מוגנים כדי לעקוף את בקרות האבטחה [S2].
סיבת שורש
Next.js מאפשר למפתחים להגדיר כותרות תגובה ב-next.config.js באמצעות המאפיין headers [S2]. תצורה זו משתמשת בהתאמת נתיב התומכת בתווים כלליים ובביטויים רגולריים [S2]. פרצות אבטחה נובעות בדרך כלל מ:
- כיסוי נתיב לא שלם: דפוסי תווים כלליים (לדוגמה,
/path*) עשויים שלא לכסות את כל נתיבי המשנה המיועדים, ולהשאיר דפים מקוננים ללא כותרות אבטחה [S2]. - גילוי מידע: כברירת מחדל, Next.js עשוי לכלול את הכותרת
X-Powered-By, אשר חושפת את גרסת המסגרת, אלא אם הושבתה במפורש באמצעות תצורתpoweredByHeader[S2]. - CORS תצורה שגויה: כותרות
Access-Control-Allow-Originהמוגדרות בצורה לא נכונה בתוך מערךheadersעלולות לאפשר גישה לא מורשית חוצה מקורות לנתונים רגישים [S2].
תיקוני בטון
- דפוסי נתיב ביקורת: ודא שכל דפוסי
sourceב-next.config.jsמשתמשים בתווים כלליים מתאימות (למשל,/:path*) כדי להחיל כותרות גלובליות במידת הצורך [S2]. - השבת טביעת אצבע: הגדר את
poweredByHeader: falseב-next.config.jsכדי למנוע את שליחת הכותרתX-Powered-By[S2]. - הגבלת CORS: הגדר את
Access-Control-Allow-Originלדומיינים מהימנים ספציפיים במקום לתווים כלליים בתצורתheaders[S2].
כיצד FixVibe בודק את זה
FixVibe יכול לבצע בדיקה מגודרת פעילה על ידי סריקת האפליקציה והשוואת כותרות האבטחה של מסלולים שונים. על ידי ניתוח הכותרת X-Powered-By והעקביות של Content-Security-Policy על פני עומקי נתיב שונים, FixVibe יכול לזהות פערי תצורה ב-next.config.js.
