צמצום של התקפת clickjacking באמצעות XFO או CSP

Clickjacking היא התקפה זדונית שבה משתמשים נופלים קורבן לתרמיות שמעודדות אותם ללחוץ על קישורים או על רכיבי ממשק משתמש באתר שנראה כמו אתר מהימן ומוכּר. בדרך כלל, הדבר נעשה על ידי הטמעה של חלק מהאתר המהימן או את כולו באתר הזדוני באמצעות <iframe>.

הכותרת X-Frame-Options (XFO) וההנחיה frame-ancestors בכותרת Content-Security-Policy (CSP) יכולות לצמצם את התקפות ה-clickjacking על ידי שליטה באופן שבו אפשר להטמיע אתר בתוך <iframe>.

מה גורם לבדיקה של Lighthouse להיכשל

הביקורת תעבור אם כותרת ה-XFO מוגדרת עם SAMEORIGIN או DENY, או שההוראה frame-ancestors מוגדרת בכותרת ה-CSP. הביקורת תיכשל אם אף אחת משתי כללי המדיניות האלה לא מוגדרת.

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

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

צריך להגדיר מדיניות בקרה על מסגרות בכותרות ה-HTTP של בקשת המסמך הראשונית. הכותרת X-Frame-Options וההוראה frame-ancestors ב-Content-Security-Policy לא יפעלו אם מגדירים אותן ברכיב <meta>.

כותרת XFO

הגדרת DENY או SAMEORIGIN לכותרת XFO תפחית את היקף ההתקפות מסוג clickjacking:

X-Frame-Options: SAMEORIGIN
X-Frame-Options: DENY

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

כותרת CSP

ההוראה frame-ancestors בכותרת ה-CSP מגדירה אילו אתרים יכולים להטמיע את הדף הנתון ב-<frame>, ב-<iframe>, ב-<object> או ב-<embed>. בדומה ל-XFO, אפשר להשתמש בהוראה frame-ancestors של CSP כדי לצמצם את היקף ההתקפות מסוג clickjacking על ידי הגדרתה ל-self או ל-none:

Content-Security-Policy: frame-ancestors 'self';
Content-Security-Policy: frame-ancestors 'none';

עם זאת, ההנחיה frame-ancestors גמישה יותר מ-XFO כי אפשר להגדיר בה מקורות ספציפיים של הורה שיכולים להטמיע את הדף:

Content-Security-Policy: frame-ancestors 'self' https://example.com;

משאבים