
הטקסט המלא של הדקות הראשונות בהרצאה «הגנה מהתקפת SQL injection» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
אז איך אנחנו מתמודדים עם התקפת SQL Injection? אז הבעיה שאנחנו רואים זה שעטפנו פה בגרש גרש את הטקסט שלנו, ואז היוזר יכל להכניס גרש פנימי כזה, כאשר יש טכניקה יותר נכונה לעשות, האמת הרבה יותר נכונה, כי היא מונעת SQL Injection.
אנחנו משכפלים את הקוד הזה. הטכניקה הראשונה לא מגנה מפני SQL Injection, submitted to SQL injection attacks והטכניקה הזאת שאנחנו רואים כאן זה בעצם proof against SQL injection attacks והטכניקה הזאת אומרת כזה דבר אל תשלחו ל-SQL raw את הטקסט בצורה כזאת אלא תורידו את הגרש גרש מפה ואת
הטקסט אז אין לי צורך בדולר ופשוט שימו פה את הסוגריים המסוסלים עם המספר 0 ואת הטקסט תשלחו כפרמטר מספר 2. אם היה לי עוד פרמטר שהייתי רוצה לשלוח אז הייתי רושם פה מספר 1 ואז פה פסיק ושולח את הפרמטר הנוסף הם נכנסים בהתאמה כאשר זה קורה אז פונקציית from sql raw מה שהיא עושה לוקחת את הפרמטרים שאנחנו שולחים והיא
בעצמה עוטפת אותם בגרש גרש ושולחת אותם לכאן ואת זה שולחת לכאן אבל מה זה משנה אם היא עוטפת או אנחנו עוטפים כי מה שהיא עושה זה מחפשת בתוך הטקסט שלנו כי שלחנו אותו כפרמטר ולא כחלק ממחרוזת אחת גדולה מחפשת האם בתוך הטקסט קיים גרש וראינו שכן קיים גרש מה שהיא עושה היא פשוט עושה לו אסקייפט קראקטר כזה מעין משהו כזה, או מוסיפה לו עוד גרש אחד.
אם הדאטאבייס מקבל גרש גרש אז הוא יודע שהגרש גרש זה תו רגיל כמו התו a, b ו-c ולא גרש ששייך לשאילתת ה-sql.
אפשר לעשות אסקייפט קרקטר, אפשר לשכפל כל גרש כפעמיים, זה מה שהמערכת עושה. לנו יש ארגומנט אחד.
בואו נראה עכשיו איך המערכת עובדת מה שעשיתי מקודם זה שחזרתי את הטבלה הנה customers יש לנו טבלת customers בואו נרפרש נראה שהיא קיימת לנו ומה שאנחנו רוצים לעשות זה להריץ את אותה השאילתה בדיוק זאת השאילתה שהייתה את אותו הטקסט לחיפוש האמת שנחפש קודם טקסט רגיל ואז נחפש טקסט בעייתי בואו נחזור לפה נריץ את זה.
נגדיר שאנחנו רוצים לחפש fidget קודם כל ואנחנו רואים שהמערכת מצאה שניים אין שום בעיה אין כאן sql injection או ניסיון לביצוע sql injection נריץ שוב פעם ונדביק את הטקסט שהוא זה שגרם לsql injection ולמחיקה של טבלת הcustomers ומה שהוא אומר לי כרגע זה תקשיב אין לך מתנות כאלה זה לא שהוא חיפש a כמו שמקודם הוא אומר לי זה מה שחיפשתי
חיפשתי את כל הטקסט הזה כטקסט רגיל של מתנה. פקודה הזאת שעשינו גרמה לגרש הזאת להיות מה שנקרא אסקייפט קרקטר או פעמיים גרש שניהם אותו הדבר ואז הדאטאבייס אומר אה אתם בעצם רוצים לשלוח לי a כתב וגרש כתב יכול להיות מתנה שיש לה גרש בשם שלה זה ממש בסדר אם אנחנו חוזרים לדאטאבייס ומרפרשים את כל הטבלאות עדיין customers נמצאת פה לא נמחקה כמובן שכרגע קסטומר ריקה, אף פעם לא הכנסנו אליה
מידע, אבל הגענו בפני sql injection. זאת שיטה ראשונה. בגלל שמתכנתים יכולים בטעות לשכוח את הטכניקה הזאת ולהשתמש בטכניקה הזאת והם חשופים לsql injection, ב-NTT framework יצרו לנו עוד פונקציה.
בואו נוריד את זאת לגמרי ונישאר עכשיו עם פונקציה שאומרת From sql שימו לב זאת פונקציה אחרת ויש לנו האמת עוד אחת שנקראת From sql interpolated והשאלה מה ההבדל בין שלושת החבר'ה האלה יש לנו From sql raw יש לנו From sql ו From sql interpolated אז From sql raw המטרה שלה זה היכולת להריץ שאילתות
בדיוק כמו שהייתם מריצים אותם אם הייתם נמצאים בתוך sql בתוך דאטאבייס. sql server וכותבים פה את השאילתה אז אומרים לכם אנחנו נעביר בדיוק את השאילתה שרשמתם אנחנו נעביר אותה ואז יש לכם פה סכנה שאתם לא כתבתם אותה נכון ואתם חשופים להתקפת sql injection from sql אומרת לנו כזה דבר תראו אני לא רוצה להיות raw sql כלומר sql גולמי לכן אתם חייבים להביא