המדיניות מגדירה כללים למסמך בדפדפן
הוראות CSP יכולות לעסוק בסקריפטים, תמונות, חיבורים, טפסים והטמעת הדף. הן אינן כלל אחיד שפותח או סוגר את כל הרשת. לדוגמה, אישור מקור לתמונה אינו שקול לאישורו כסקריפט. צריך לבחור הוראות התואמות למה שהיישום צריך ולדרך שבה הוא בנוי.
OWASP מתאר CSP כשכבת הגנה נוספת לצד פיתוח בטוח, לרבות מדיניות המבוססת על nonces או hashes במקרים מתאימים. אין להחליף בין nonce ייעודי ל-CSP לבין מנגנון בשם דומה במערכת אחרת. בחירת השיטה דורשת התאמה ליצירת הדף, למטמון ולהפצת הקוד.
מה ההבדל בין מדיניות לדיווח למדיניות נאכפת
כותרת Content-Security-Policy מפעילה את המדיניות שהוגדרה. כותרת Content-Security-Policy-Report-Only מאפשרת לדווח על הפרות בלי לאכוף את אותה מדיניות. שתיהן יכולות להופיע במקביל למטרות שונות, ולכן צריך לבדוק איזו הוראה נשלחה ובאיזה מצב, ולא להסתפק במילה CSP בסריקה.
| רכיב | משמעות | מה אינו מוכיח |
|---|---|---|
| מדיניות במצב דיווח | בחינת הפרות ללא אכיפת אותה מדיניות | שמשאבים מפרים נחסמו |
| מדיניות נאכפת | הדפדפן מפעיל את הכללים שנשלחו | שכל מסלול יישום בטוח |
| דוח הפרה | תצפית בהפרה בתנאים מסוימים | שמדובר בהכרח בתקיפה |
| רשימת מקורות | בחירה של מקורות מותרים בהוראה | שכל קוד מהמקור הוא אמין |
דוגמה: שירות מפות מול רכיב שלא מוכר לצוות
בתרחיש להמחשה בלבד, מיפוי אתר מגלה שירות מפות נדרש וגם סקריפט ישן שאיש אינו מזהה. בניית CSP היא הזדמנות לברר מי אחראי לכל תלות. לא מוסיפים אוטומטית כל מקור שמופיע בדוח לרשימה המותרת. בודקים צורך, מקור והשלכה, ושומרים תיעוד החלטה.
בסביבת הבדיקה מוודאים שהמפה והטופס הנחוצים עובדים, ושמשאב מחוץ למדיניות אינו מתקבל כשהמדיניות נאכפת. דוחות נשלחים רק ליעד מאושר עם טיפול מתאים במידע שהם עשויים להכיל. איסוף דוחות רחב ללא בעלים ותהליך טיפול אינו תחליף לבדיקה מסודרת.
למה אין כותרת אחת שמתאימה לכל אתר
מערכת עם קוד מוטמע, תוספים וטעינה דינמית שונה מדף סטטי. העתקת מדיניות יכולה להשאיר הרשאות רחבות מדי או לפגוע בכניסה, בצאט ובטופס. הניסוח צריך לשקף את התלות המוכרת, ואחר כך להיבדק בדפים ובתהליכים מייצגים. שינויים בתוספים ובספקים עשויים לדרוש עדכון מדיניות.
אם מדיניות חדשה מפריעה לפעולה חיונית, מבררים את ההוראה והמקור במקום לפתוח הכול. שינוי ב-CSP אינו נימוק לדלג על טיפול בנקודת XSS שהתגלתה בקוד. יש להגדיר מי רשאי לעדכן את המדיניות ומי מאשר תלות חדשה אחרי מסירת האתר.
איך יודעים מה הוטמע ומה נשאר פתוח
תוצר שימושי מציין דפים, מצב מדיניות, תלויות מאושרות וחריגות. בודקים את הכותרת בתגובה המוגשת בפועל ואת התנהגות הדפדפן, ולא רק שורה בקובץ הגדרות. מפרידים בין תצפית מקומית לבין בדיקת השרת החי ובין מדגם תהליכים לכיסוי מלא.