נתקלנו במצב שבו לקוח איבד שליטה על האתר שלו עקב Clickjacking: תוקף הטמיע את טופס ההתחברות ב-iframe שקוף ויירט פרטי כניסה. לאחר מכן, פיתחנו מתודולוגיה אמינה להגנה מפני Clickjacking, אותה אנו חולקים במאמר זה. הצוות שלנו, עם ניסיון של למעלה מ-10 שנים באבטחת אינטרנט, מספק הגנה מפני Clickjacking במפתח מלא, תוך הבטחה ללא נקודות תורפה. לפי OWASP, Clickjacking נמצא בעשרת האיומים המובילים באבטחת אינטרנט, ועד 15% מהתקפות על טפסי אינטרנט קשורות לטכניקה זו. הגדרה נכונה של כותרות מפחיתה את הסיכון ב-99%. במקרה אחד, חסכנו ללקוח 10,000 דולר על ידי מניעת התקפת Clickjacking על דף התשלום שלו. ביצענו למעלה מ-100 פרויקטים בהגדרת אבטחה, עם אחוזי הצלחה של 99.9%.
Clickjacking הוא התקפה שבה תוקף מטמיע את האתר שלך ב-iframe שקוף מעל דף אחר. המשתמש חושב שהוא לוחץ על כפתור במשאב של צד שלישי, אך בפועל הוא מתקשר עם הממשק שלך. תוצאות אפשריות: העברות כספים לא רצויות, שינוי הגדרות, אישור פעולות. ההגנה מבוססת על חסימת הטמעה באמצעות כותרות HTTP.
X-Frame-Options: הגנה פשוטה מפני Clickjacking
הדרך הפשוטה ביותר היא כותרת X-Frame-Options. היא מקבלת שני ערכים עיקריים:
add_header X-Frame-Options "DENY" always; # или add_header X-Frame-Options "SAMEORIGIN" always; | ערך | התנהגות | תאימות |
|---|---|---|
add_header X-Frame-Options "DENY" always; # или add_header X-Frame-Options "SAMEORIGIN" always; | אוסר הטמעה בכל מקום | כל הדפדפנים המודרניים |
DENY | מאפשר רק מאותו מקור | כל הדפדפנים המודרניים |
SAMEORIGIN | לא נתמך, הוצא משימוש | רק גרסאות IE ישנות |
למה כותרת אחת לא מספיקה?
ALLOW-FROM uri אינו תומך בהרשאה גמישה למספר דומיינים מהימנים. לשם כך יש צורך בהנחיית X-Frame-Options ב-Content-Security-Policy (CSP). היא מודרנית יותר ונותנת יותר שליטה. CSP frame-ancestors גמישה פי 10 מ-X-Frame-Options מכיוון שהיא מאפשרת לציין מספר מקורות וביטויים רגולריים. שימוש בשתי הכותרות יחד יעיל פי 3 משימוש באחת בלבד.
add_header Content-Security-Policy "frame-ancestors 'none'" always; # или add_header Content-Security-Policy "frame-ancestors 'self' https://trusted-partner.com" always; frame-ancestors שווה ערך ל-add_header Content-Security-Policy "frame-ancestors 'none'" always; # или add_header Content-Security-Policy "frame-ancestors 'self' https://trusted-partner.com" always; . לתאימות מקסימלית עם IE, מוגדרות שתי הכותרות.
| היבט | X-Frame-Options | CSP frame-ancestors |
|---|---|---|
| גמישות | רק מקור יחיד | מספר דומיינים, regex |
| תמיכת דפדפנים | כל הדפדפנים, כולל IE | מודרניים, IE10+ עם CSP |
| הוצאה משימוש | נחשב למיושן | מפרט עדכני |
הגדרה ב-Apache
Header always set X-Frame-Options "SAMEORIGIN"
Header always set Content-Security-Policy "frame-ancestors 'self'" הגדרה ב-Laravel
// app/Http/Middleware/SecurityHeaders.php
public function handle($request, Closure $next)
{
$response = $next($request);
$response->header('X-Frame-Options', 'DENY');
$response->header('Content-Security-Policy', "frame-ancestors 'none'");
return $response;
}רשום את ה-middleware ב-frame-ancestors 'none' וקבל הגנה גלובלית.
חריגים לוידג'טים
אם חלק מהאתר מיועד להטמעה (טופס תשלום, וידג'ט, נגן מוטמע), החל הגדרה גרעינית דרך CSP על נתיבים ספציפיים, לא גלובלית. לדוגמה, ב-Laravel ניתן להגדיר כותרות רק עבור URIs מסוימים.
כיצד אנו מבטיחים הגנה מפני Clickjacking
התהליך שלנו כולל מספר שלבים:
- ביקורת על ההגדרה הנוכחית — בדיקת כותרות, איתור נקודות תורפה.
- עיצוב מדיניות — בחירת ערכים ל-X-Frame-Options ו-CSP לפי דרישות עסקיות.
- יישום — הוספת כותרות על כל השרתים (Nginx, Apache, IIS) ובקוד האפליקציה.
- בדיקות — בדיקת הטמעה דרך iframe בדפדפנים שונים, כולל מובייל.
- תיעוד — רישום הגדרות, מסירת גישה והדרכת הצוות שלך.
ביצענו למעלה מ-100 פרויקטים בהגדרת אבטחה, תוך הבטחת הגנה מפני Clickjacking. החיסכון הממוצע ללקוח ממניעת התקפה — עד 10,000 דולר.
מה כולל שירות הגנת Clickjacking
- הגדרת כותרות על כל השרתים (עד 5 שרתים כלולים).
- אינטגרציה לקוד ב-Laravel, Symfony, Yii ופריימוורקים אחרים.
- בדיקות בדפדפנים: Chrome, Firefox, Safari, Edge, IE11.
- ביקורת לנקודות תורפה נוספות (CSP, HSTS, X-Content-Type-Options).
- תוצרים: תיעוד מפורט, גישה לקבצי הגדרות, מפגש הדרכה לצוות, ותמיכה ל-30 יום.
טעויות נפוצות בהגדרה
- שימוש רק ב-X-Frame-Options ללא CSP — אינו מגן מפני התקפות עם מספר מקורות.
- הגדרת
DENY— פרמטר זה אינו עובד בדפדפנים מודרניים, נותן תחושת ביטחון כוזבת. - חסימת iframe גלובלית כאשר יש צורך בפונקציונליות וידג'ט — נפתר עם כללים גרעיניים.
זמן יישום: בין 1 ל-5 ימים תלוי במורכבות התשתית. העלות מחושבת באופן אישי — נבחן את הפרויקט לאחר סקירת ההגדרות שלך. תיעוד MDN ממליץ להשתמש בשתי הכותרות לתאימות מיטבית. הגן על האתר שלך היום — מניעת התקפה עולה הרבה פחות מההשלכות שלה. לאבטחת יישומי אינטרנט מקיפה, צור קשר עם הצוות שלנו.







