
הטקסט המלא של הדקות הראשונות בהרצאה «התקפת SQL injection» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
כאשר אנחנו בונים מערכת בפיתוח תוכנה שניגשת לדאטאבייס חשוב לנו להכיר את המונח SQL Injection וכמובן להגן מפניו. SQL Injection זה בעצם התקפה שהאקר יכול לבצע ולעשות לנו בלאגן בדאטאבייס.
הוא יכול לגנוב מידע, הוא יכול לשנות מידע, הוא יכול למחוק מידע, הוא יכול לבצע האשמות בדאטאבייס שלנו. אז כאן בדיוק הנקודה שחשוב לנו להכיר מה זה, כמובן איך להתגונן מפני זה בואו נבין רגע מה אנחנו כתבנו אנחנו כתבנו קטע קוד מאוד פשוט שאומר למשתמש תן לי בבקשה טקסט לחיפוש מתנה ואנחנו לוקחים את הטקסט או שאנחנו משלבים אותו בשאילתה משלנו בלי קשר לסטור פרוסיג'ר
זה אותו הדבר או שאנחנו קוראים לסטור פרוסיג'ר ושולחים את הטקסט זה גם משהו שהוא מאוד מקובל אבל אם יש פה האקר אז הוא יכול לעשות לנו בלאגן לאן בדיוק נכנס הטקסט הזה הטקסט הזה נשלח ל-Stored Procedure שבעצם משלבת אותו בתוך שאילתא.
בואו נסתכל איך זה מבוצע. אז אנחנו רוצים לראות את השאילתא שהטקסט משולב בה, הנה היא, זאת.
בואו רגע נעתיק את השאילתא ונדביק אותה בתוך מסמך טקסטואלי רגיל לגמרי בכדי להבין איך תוקף מנצל את שפת sql בשביל לבצע נזקים באתר שלנו.
אז מהי השאילתא? Select all from gifts where name like, ויש לנו פה את המחרוזת הזאת, משורשרת עם טקסט כזה שהמשתמש הכניס, ואז עוד פעם מחרוזת, אלה wild card שביחד בונים מחרוזת אחת ארוכה.
מה אנחנו שלחנו ל-stored procedure? אנחנו שולחים ל-stored procedure גרש, מה המשתמש הכניס וגרש. זאת אומרת שפה כתוב בעצם גרש, מה המשתמש הכניס, וגרש אם המשתמש הכניס וידג'ט.
אם המשתמש הכניס ABC, אז זה מה ששלחנו. וזאת שאילתה באמת חוקית לחלוטין. אבל האקר יכול להכניס מה שבא לו, ומה שההאקר מכניס נמצא פה ומשולב עם השאילתה המקורית.
בואו רגע נריץ את זה עוד פעם ונהיה בכובע של האקר שרוצה לעשות בלאגן. הנה יש לנו פה את הקונסול והנה יש לנו כאן את השאילתה שמוצגת פה. אנחנו באים וכרגע אנחנו בכובע של ההאקר ואנחנו מכניסים A. אם אנחנו נריץ את השאילתה הזאת זה כאילו שפה כתוב A ובינתיים אין שום דבר רע בזה אבל ההאקר יכול לחזור ולרשום גרש ואז זה אומר שפה יש גרש.
עדיין זה לא עושה בלאגן אבל שימו לב שמבחינת שפת sql הגרש שכתוב כאן סוגר את הגרש שכתוב כאן. בעצם זה חיפוש של a ואז הגרש שנשלח לפה בינתיים תקוע כאן בלי שום תכלית.
אבל ההאקר ממשיך ושם נקודה פסיק ורווח. מה זה נקודה פסיק בשפת sql? פה כמובן עכשיו יהיה נקודה פסיק ברווח, נקודה פסיק בשפת sql אומרת נא לסיים את השאילתה הנוכחית ויש לנו אפשרות להתחיל שאילתה חדשה, זאת אומרת שההאקר עכשיו סיים את השאילתה הזאת וגרם לדאטאבייס להתחיל שאילתה איזה שבא לו.
וההאקר החמוד שלנו ממשיך לרשום drop table customers, אוי ואבוי, זה כאילו שפה רשום drop table customers הוא בטח מניח שקיימת טבלת לקוחות ואז עדיין