CSRF או Cross-Site Request Forgery היא פגיעות אתרים שבה תוקף יכול לגרום לפעולה להתרחש במפגש של קורבן באתר אחר. אחד הדברים שהופכים את CSRF לסיכון גדול כל כך הוא שהוא אפילו לא דורש אינטראקציה של משתמשים, כל מה שצריך זה שהקורבן יראה דף אינטרנט עם הניצול שבו.
טיפ: CSRF מבוטא בדרך כלל אות אחר אות או כ"גלישה בים".
כיצד פועלת התקפת CSRF?
ההתקפה כוללת שהתוקף יוצר אתר אינטרנט שיש לו שיטה להגשת בקשה באתר אחר. זה עשוי לדרוש אינטראקציה של משתמשים, כמו לגרום להם ללחוץ על כפתור, אבל זה יכול להיות גם ללא אינטראקציה. ב-JavaScript יש דרכים לגרום לפעולה להתרחש אוטומטית. לדוגמה, תמונת אפס על אפס פיקסלים לא תהיה גלויה למשתמש אך ניתן להגדיר כך שה-"src" שלו יבקש בקשה לאתר אחר.
JavaScript היא שפה בצד הלקוח, המשמעות היא שקוד JavaScript מופעל בדפדפן ולא בשרת האינטרנט. הודות לעובדה זו, המחשב שמבצע את בקשת ה-CSRF הוא למעשה של הקורבן. למרבה הצער, המשמעות היא שהבקשה מתבצעת עם כל ההרשאות שיש למשתמש. ברגע שהאתר התוקף הונה את הקורבן לבצע את בקשת ה-CSRF, אין להבחין בין הבקשה למשתמש שמבצע את הבקשה בדרך כלל.
CSRF הוא דוגמה ל"התקפה של סגן מבולבל" נגד דפדפן האינטרנט, מכיוון שהדפדפן הוטעה להשתמש בהרשאות שלו על ידי תוקף ללא הרשאות אלו. הרשאות אלו הן אסימוני ההפעלה ואסימוני האימות שלך לאתר היעד. הדפדפן שלך כולל את הפרטים האלה באופן אוטומטי בכל בקשה שהוא מגיש.
התקפות CSRF הן מעט מורכבות לארגן. קודם כל, לאתר היעד צריך להיות טופס או כתובת אתר שיש להם תופעות לוואי כמו מחיקת חשבונך. לאחר מכן התוקף צריך ליצור בקשה לביצוע הפעולה הרצויה. לבסוף, התוקף צריך לגרום לקורבן לטעון דף אינטרנט עם הניצול שבו בזמן שהם מחוברים לאתר היעד.
כדי למנוע בעיות CSRF הדבר הטוב ביותר שאתה יכול לעשות הוא לכלול אסימון CSRF. אסימון CSRF הוא מחרוזת שנוצרת באופן אקראי המוגדרת כקובץ cookie, הערך צריך להיכלל בכל תגובה לצד כותרת בקשה הכוללת את הערך. בעוד שהתקפת CSRF יכולה לכלול את ה-cookie, אין דרך להיות מסוגלת לקבוע את הערך של אסימון CSRF כדי להגדיר את הכותרת ולכן ההתקפה תידחה.