מילון סייבר בעברית

מה זה CSP ואיך מדיניות תוכן מגינה על האתר

CSP, קיצור של Content Security Policy, היא מדיניות שהאתר מעביר לדפדפן כדי להגביל משאבים ופעולות במסמך. היא יכולה לסייע בהפחתת סיכוני XSS והטמעה לא רצויה בהתאם להוראות שהוגדרו. היא אינה מתקנת קוד פגיע בעצמה ואינה חוסמת כל סוג תקיפה. התאמה לאתר ובדיקת תפקוד הן חלק מההטמעה.

המדיניות מגדירה כללים למסמך בדפדפן

הוראות CSP יכולות לעסוק בסקריפטים, תמונות, חיבורים, טפסים והטמעת הדף. הן אינן כלל אחיד שפותח או סוגר את כל הרשת. לדוגמה, אישור מקור לתמונה אינו שקול לאישורו כסקריפט. צריך לבחור הוראות התואמות למה שהיישום צריך ולדרך שבה הוא בנוי.

OWASP מתאר CSP כשכבת הגנה נוספת לצד פיתוח בטוח, לרבות מדיניות המבוססת על nonces או hashes במקרים מתאימים. אין להחליף בין nonce ייעודי ל-CSP לבין מנגנון בשם דומה במערכת אחרת. בחירת השיטה דורשת התאמה ליצירת הדף, למטמון ולהפצת הקוד.

OWASP: תכנון והטמעת CSP

מה ההבדל בין מדיניות לדיווח למדיניות נאכפת

כותרת Content-Security-Policy מפעילה את המדיניות שהוגדרה. כותרת Content-Security-Policy-Report-Only מאפשרת לדווח על הפרות בלי לאכוף את אותה מדיניות. שתיהן יכולות להופיע במקביל למטרות שונות, ולכן צריך לבדוק איזו הוראה נשלחה ובאיזה מצב, ולא להסתפק במילה CSP בסריקה.

מושגים בתוך הטמעת CSP
רכיבמשמעותמה אינו מוכיח
מדיניות במצב דיווחבחינת הפרות ללא אכיפת אותה מדיניותשמשאבים מפרים נחסמו
מדיניות נאכפתהדפדפן מפעיל את הכללים שנשלחושכל מסלול יישום בטוח
דוח הפרהתצפית בהפרה בתנאים מסוימיםשמדובר בהכרח בתקיפה
רשימת מקורותבחירה של מקורות מותרים בהוראהשכל קוד מהמקור הוא אמין
MDN: מדיניות CSP ובדיקה במצב דיווח

דוגמה: שירות מפות מול רכיב שלא מוכר לצוות

בתרחיש להמחשה בלבד, מיפוי אתר מגלה שירות מפות נדרש וגם סקריפט ישן שאיש אינו מזהה. בניית CSP היא הזדמנות לברר מי אחראי לכל תלות. לא מוסיפים אוטומטית כל מקור שמופיע בדוח לרשימה המותרת. בודקים צורך, מקור והשלכה, ושומרים תיעוד החלטה.

בסביבת הבדיקה מוודאים שהמפה והטופס הנחוצים עובדים, ושמשאב מחוץ למדיניות אינו מתקבל כשהמדיניות נאכפת. דוחות נשלחים רק ליעד מאושר עם טיפול מתאים במידע שהם עשויים להכיל. איסוף דוחות רחב ללא בעלים ותהליך טיפול אינו תחליף לבדיקה מסודרת.

למה אין כותרת אחת שמתאימה לכל אתר

מערכת עם קוד מוטמע, תוספים וטעינה דינמית שונה מדף סטטי. העתקת מדיניות יכולה להשאיר הרשאות רחבות מדי או לפגוע בכניסה, בצאט ובטופס. הניסוח צריך לשקף את התלות המוכרת, ואחר כך להיבדק בדפים ובתהליכים מייצגים. שינויים בתוספים ובספקים עשויים לדרוש עדכון מדיניות.

אם מדיניות חדשה מפריעה לפעולה חיונית, מבררים את ההוראה והמקור במקום לפתוח הכול. שינוי ב-CSP אינו נימוק לדלג על טיפול בנקודת XSS שהתגלתה בקוד. יש להגדיר מי רשאי לעדכן את המדיניות ומי מאשר תלות חדשה אחרי מסירת האתר.

איך יודעים מה הוטמע ומה נשאר פתוח

תוצר שימושי מציין דפים, מצב מדיניות, תלויות מאושרות וחריגות. בודקים את הכותרת בתגובה המוגשת בפועל ואת התנהגות הדפדפן, ולא רק שורה בקובץ הגדרות. מפרידים בין תצפית מקומית לבין בדיקת השרת החי ובין מדגם תהליכים לכיסוי מלא.

מקור מקצועי: OWASP: תכנון והטמעת CSPמקור מקצועי: MDN: מדיניות CSP ובדיקה במצב דיווח

תשובות ברורות

שאלות שעולות בנושא

CSP מונעת כל XSS?

לא, יעילותה תלויה במדיניות וביישום, והיא שכבה נוספת. עדיין צריך לטפל בהצגת תוכן לא בטוחה ובהגנות הקוד המתאימות.

צריך לאשר כל כתובת שמופיעה בדוח?

לא, דוח הוא בסיס לבירור. מקור יכול להיות לא נחוץ, לא מוכר או קשור לתוסף בדפדפן. מאשרים רק תלות שנבדקה ומתאימה לצורך.

CSP מגינה גם על מפתחות API בשרת?

היא אינה מערכת לניהול סודות. מפתח סודי דורש אחסון, הרשאות ומחזור חיים מתאימים; פרסומו בקוד הדפדפן אינו מתוקן באמצעות CSP.

מתקדמים לפי הצורך

רוצים לבדוק מדיניות CSP קיימת או לתכנן חדשה?

נבחן דפים ותלויות ונגדיר בדיקות לפני שינוי אכיפה, בהתאם לסביבת האתר.

לתיאום בדיקה וטיפול