מהי הזרקת SQL (SQLi)?
הזרקת SQL (SQLi) היא סוג של תקיפה שבה תוקפים מכניסים הצהרת SQL זדונית לשדה קלט כדי לתמרן את מסד הנתונים.
התקיפה הזו מכוונת לאפליקציות שלא מצליחות לטפל כראוי באימות, קלט משתמש, ומאפשרות גישה לא מורשית לנתונים רגישים כמו סיסמאות או פרטי כרטיסי אשראי, וכו’.
איך עובדת הזרקת SQL
כאשר אפליקציה כוללת ישירות קלט משתמש בשאילתת מסד נתונים ללא אימות מתאים, תוקפים יכולים לשנות את התנהגות השאילתה כדי להכניס הצהרת SQL זדונית.
לדוגמה:
SELECT * FROM users WHERE username = 'admin' AND password = '12345';
תוקף יכול להכניס:
' OR '1'='1
מה שיגרום ל:
SELECT * FROM users WHERE username = '' OR '1'='1' AND password = '';
זה תמיד מחזיר true, ומאפשר גישה לא מורשית.
למה הזרקת SQL חשובה באבטחת סייבר
הזרקת SQL היא הטכניקה המסוכנת והוותיקה ביותר באבטחת סייבר. סוג זה של תקיפה מופיע בעקביות ברשימת ה-OWASP Top 10.
אפילו פגיעויות קטנות מאפשרות לתוקף ל:
- גישה, שינוי או מחיקת נתונים
- עקיפת אימות
- ביצוע פעולות ניהוליות על בסיס הנתונים.
- פגיעה במערכת כולה.
סוגים נפוצים של הזרקת SQL
- SQLi קלאסי : הזרקה ישירה דרך טפסי אינטרנט או פרמטרים של URL.
- SQLi עיוור : תוקפים מסיקים מידע על בסיס הנתונים בעקיפין (למשל, דרך הודעות שגיאה או זמן תגובה).
- SQLi מבוסס איחוד : משתמש באופרטור UNION כדי לשלב תוצאות ממספר שאילתות.
- SQLi מבוסס שגיאה : מסתמך על הודעות שגיאה של בסיס הנתונים כדי לחלץ מידע.
- SQLi עיוור מבוסס זמן : מנצל עיכובים בתגובת השרת כדי לנחש תוצאות שאילתה.
כיצד למנוע הזרקת SQL
1. שימוש בשאילתות פרמטריות (הצהרות מוכנות)
ודא שפקודות SQL מתייחסות לקלט המשתמש כנתונים ולא כקוד ניתן לביצוע.
cursor.execute("SELECT * FROM users WHERE username = ?", (username,))
2. אימות וניקוי קלט
אמת את כל הקלט מהמשתמשים, אפשר רק תווים צפויים.
3. שימוש במסגרות ORM
מסגרות כמו Prisma, Hibernate וכו’, מפחיתות טיפול ישיר ב-SQL.
4. עקרון המינימום הרשאות
הגבל הרשאות משתמש, תן רק את ההרשאות הנדרשות.
5. בדיקות אבטחה סדירות
השתמש בכלי בדיקות אבטחת יישומים כמו SAST, DAST או IAST כדי לזהות פגמים בהזרקה מוקדם.
דוגמה בעולם האמיתי
אתר חנות מקוונת סבל מפריצה שבה תוקפים השתמשו בהזרקת SQL בטופס כניסה כדי לחלץ פרטי כרטיסי אשראי מהמסד נתונים שלו.
מונחים קשורים
- XSS (Cross-Site Scripting)
- DAST (Dynamic Application Security Testing)
- OWASP Top 10
- בדיקות אבטחת יישומים