אחד מהסוגים הגדולים ביותר של פגיעויות אינטרנט ידוע בשם "SQL Injection", או SQLi. שפת שאילתות מובנית, הלא היא SQL, היא שפה המשמשת לאינטראקציה עם רוב מסדי הנתונים, אם כי מספר גרסאות של השפה משמשות בהתאם למסד הנתונים פּלַטפוֹרמָה. כל אתר שמאחסן נתוני משתמש, כגון פרטי חשבון, או מספק פונקציונליות העלאת משתמשים, כגון אתר אירוח תמונות, ישתמש במסד נתונים כדי לאחסן את הנתונים הללו.
טיפ: SQL מבוטא בדרך כלל "ess cue ell" או "המשך" כאשר האפשרות הראשונה נפוצה יותר באנגלית בריטית והשנייה נפוצה יותר באנגלית אמריקאית. שתי ההגיות מובנות בדרך כלל בהקשר של דיבור על מסדי נתונים.
מה זה SQLi?
SQLi היא נקודת תורפה שבה מפתחי האינטרנט שמעצבים את הקוד שמתקשר בין שרת האינטרנט ומסד הנתונים אינם מיישמים הגנות מפני פקודות SQL הנשלחות על ידי a מִשׁתַמֵשׁ. הבעיה היא שאפשר להימלט מהצהרות מסד הנתונים ולהוסיף ארגומנטים חדשים או הצהרה חדשה לגמרי. הצהרת מסד הנתונים שהשתנתה או השנייה יכולה לבצע מגוון פעולות כולל מחיקות בקנה מידה גדול או דליפות נתונים.
ניצול סובב בדרך כלל סביב הפיכת הצהרות קיימות לנכונות בכל הנסיבות או מתן פקודה שנייה המבצעת פעולה ספציפית כגון מחיקה או הצגת כל הנתונים. לדוגמה, משפט SQL לכניסה לאתר עשוי לבדוק אם שם המשתמש והסיסמה שנשלחו תואמים לערך במסד הנתונים. כדי לנסות להשיג גישה, ניצול הזרקת SQL עשוי לנסות להוסיף משפט "או נכון" כגון "או 1=1". זה יהפוך את הפקודה בנוסח "התחבר עם שם משתמש [זה], אם הסיסמה היא [זה], או שהמשפט הזה נכון".
כיצד למנוע SQLi
SQLi הייתה בעבר דרך נפוצה מאוד לאתרי אינטרנט להפר את מסד הנתונים שלהם ואז לדלוף באינטרנט. בשל מאמץ משותף להבטיח שמודעות לאבטחה היא חלק מהכשרת מפתחים, סוג זה של פגיעות נפתר ברובו ונראה רק לעתים רחוקות יותר.
השיטה הנכונה למנוע SQLi היא להשתמש בהצהרות מוכנות, הידועות גם בשם שאילתות עם פרמטרים. באופן מסורתי, הצהרות SQL מוצהרות וקלט המשתמש משורשר אליהן במהלך ההצהרה הזו. עם הצהרות מוכנות, הפקודה של מסד הנתונים נכתבת ואז פונקציית sperate מפעילה את הפקודה ומכניסה נתוני משתמש. למרות שזה עשוי להיראות כמו הבדל מינורי, זה משנה לחלוטין את אופן הטיפול בפקודה. ההבדל מונע הפעלת פקודות SQL משמעותיות ומתייחס לכל קלט המשתמש כמחרוזת, ומונע מהזרקת SQL להתרחש.