מדיניות אבטחה ו ־ CSP
1) מדוע אנו זקוקים למדיניות ביטחונית
החזית המודרנית ו-API תלויים במקורות רבים (CDN, אנליטיקה, PSP, 3DS, צ 'אטים). בלי מדיניות קשה, הסיכונים של אקס-אס-אס, גניבת קליקים, דליפות מידע וגידול בחטיפות. מדיניות האבטחה מגבילה את מה שמותר כברירת מחדל על ידי הזזת הדפדפן למודל הרשימה המותרת.
2) עמודים בסיסיים
CSP (ראשי תיבות של Content Security Policy) הוא ”תפריט” של JS/CSS/Media.
סוגים מהימנים - סוג הגנה מפני DOM-XSS.
שלוט בשלמות של תסריטים/סגנונות.
COOP/COEP - בידוד נוקשה של קשרים ומשאבים בין מקורות.
Petch Metadata (”Sec-Fetch-”) הוא פתרון שרת לסינון בקשות חוצה אתרים.
מדיניות גישת COURS-cross-domain API.
כותרים קלאסיים: HSTS, 'X-Frame-Officies '/' Frame-Policy', 'Referrer-Policy', 'Explicies-Policy', 'Grieve Site-Cookies'.
3) CSP: בסיס ועקרונות
3. 1 הוראות (מפתח)
ברירת מחדל להנחיות אחרות.
מקורות JS, nunce/hash, ”קפדן-דינמי”, ”דוח-מדגם”.
'style-src-CSS מקורות; למזער את השורה התחתונה.
”img-src”, ”font-src”, ”media-src”, ”object-src” (”extrach-src”).
בקשות רשת (XHR/petch/WebSocket).
מסגרות צד שלישי (PSP, 3DS).
מי יכול להטמיע את האתר שלנו (חטיפת מקלדת).
'base-uri' - איסור החלפה של '<base> ".
”טופס פעולה” - שבו הטפסים מורשים להיות מוגשים.
'Upgreed-חסר ביטחון בקשות', 'בלוק-כל-מעורב-תוכן' - נלחם תערובת HTTTP/HTTPS.
'Report-uri '/' לדווח' - לאן לשלוח הפרות.
3. 2 nonce mushh
גישת Nonce: צור קריפטו-אקראי ”nunce” עבור כל תגובה של HTTP, הוסף ”<script nunce =”... ”>” לתסריטים זהים ו ”script-src 'nonc-”..
גישת Hash: קבוע חשיש של תוכן פנים. מתאים ל-HTML סטטי, לא נוח לדינמיקה.
אמון רק תסריטים טעונים על ידי תסריט ”מהימן” (עם nunce/hash). מסיר את הצורך לרשום שטחי מטרה במהלך אתחול דינמי, אך דורש דפדפנים מודרניים.
3. 3 Banning 'unfe- &fost
הימנע ”לא בטוח-inline”, ”לא בטוח-eval”. אם המסגרת דורשת eval (לדוגמה, מקור-מפת dev), כלול רק על dev.
עבור סגנונות - השתמש 'nunce' או 'חשיש', אם אפשר ללא קווים פנימיים.
3. 4 דוגמה של CSP קפדני (נקודת קרב)
Content-Security-Policy:
default-src 'none';
base-uri 'self';
object-src 'none';
script-src 'self' 'nonce-{RANDOM}' 'strict-dynamic' https://www. googletagmanager. com;
style-src 'self' 'nonce-{RANDOM}';
img-src 'self' data: https://images. example-cdn. com;
font-src 'self' https://fonts. gstatic. com;
connect-src 'self' https://api. example. com wss://ws. example. com;
frame-src https://3ds. psp. com https://pay. psp. com;
frame-ancestors 'none';
form-action 'self' https://pay. psp. com;
upgrade-insecure-requests;
report-to csp-endpoint; report-sample
4) סוגים מהימנים (DOM-XSS)
הפעל את ההנחיה: ”Content-Security-Policy: Design-sust-type-for 'script”; אפליקציות אמינות ”ברירת מחדל”.
צור מדיניות אחת בקוד ("חלון. טיפוסים אחרים. מדיניות בקרה (”אפליקציה”, [HTML (]...
איסור על משימות חסרות ביטחון ('אלמנט. Inflorial HTML = "...
אינטגרציה מסגרת (Reformation Integration/Angular/Vue): השתמש ב ־ APIs Renderation מאובטח, הימנע מ ־ SetInteral HTML מסוכן.
5) סרי (יושרה CDN)
עבור "<script> "/' <link>", השתמש "שלמות =" sha256-... ”crossorigin =” אנונימי ””.
תוספי סרי, לא תחליפים, סי-אס-פי. בעת שדרוג גרסת CDN, לעדכן את החשיש.
6) חטיפת קליקים ומסגרות
הדרך המודרנית היא ”אבות-מסגרת” (מחליפה את 'אפשרויות המסגרת-X' המיושנות).