לדלג לתוכן

הזרקת קוד

מתוך ויקיפדיה, האנציקלופדיה החופשית
(הופנה מהדף Code Injection)
יש להשלים ערך זה: בערך זה חסר תוכן מהותי.
הנכם מוזמנים להשלים את החלקים החסרים ולהסיר הודעה זו. שקלו ליצור כותרות לפרקים הדורשים השלמה, ולהעביר את התבנית אליהם.
יש להשלים ערך זה: בערך זה חסר תוכן מהותי.
הנכם מוזמנים להשלים את החלקים החסרים ולהסיר הודעה זו. שקלו ליצור כותרות לפרקים הדורשים השלמה, ולהעביר את התבנית אליהם.

הזרקת קודאנגלית: Code Injection) היא טכניקת האקינג המנצלת חולשת אבטחה בתוכנה המאפשרת את שינוי מהלך הביצוע שלה. הדבר נעשה באמצעות העברת קלט לא צפוי, המכיל פקודות זדוניות, שמבוצעות כחלק מביצוע התוכנית. טכניקות נפוצות של הזרקת קוד כוללות הזרקת SQL למסדי נתונים ו-XSS לאתרי אינטרנט. הזרקת קוד נובעת לרוב מכך שהתוכנית אינה מבצעת בדיקת תקינות של קלטים המועברים אליה.

התקפות הזרקת קוד נפוצות מאוד במערכות המתוכנתות בשפה מפורשת (שפת interperter) או שפת תסריט (script) כגון PHP ,SQL ,Perl שנפוצות מאוד בפיתוח ישומי web. עם זאת ניתן לבצע התקפות הזרקת קוד גם במערכות המבוססות שפות תכנות מהודרות כגון התקפת גלישת חוצץ (Buffer Overflow attack).

אופן הביצוע

[עריכת קוד מקור | עריכה]

המידע שמספק המשתמש משמש[1], לעיתים קרובות, כקלט עבור תוכנה שנכתבה בשפה מפורשת. הקוד שמבצע המפרש (interperter) הוא שילוב של פקודות שנכתבו מראש על ידי מפתח התוכנה ומידע שמסופק על ידי המשתמשים. התוקף, באמצעות תכנון קפדני, שותל בקלט מידע שיש לו משמעות בשפת התכנות. כתוצאה מכך המידע מפורש כהוראות בשפת התכנות, ופקודותיו של התוקף מבוצעות כאילו נכתבו על ידי מפתח התוכנה המקורי[2]. דרך הפעולה משתנה בין התקיפות השונות. בתקיפת SQL injection השימוש הוא בשפת SQL על מנת למצוא פרצות בהוראת שליפה שנשלחת אל מסד הנתונים. בצורה כזו ניתן לבצע שליפה ממסד הנתונים על פי רצון התוקף ו"לדרוס" את השאילתא שהייתה אמורה להתבצע.

מניעת הזרקת קוד

[עריכת קוד מקור | עריכה]

כדי למנוע בעיות של הזרקת קוד, יש להשתמש בשיטות לטיפול מאובטח בקלט ופלט, כגון:

  • שימוש בממשקי API שאם משתמשים בהם כראוי, מאובטחים מפני כל תווי הקלט. שאילתות עם פרמטרים (המוכרות גם בשם "שאילתות מלוכדות", "הצהרות מוכנות", "משתנים קשורים") מאפשרות לפרש את נתוני המשתמש מחוץ למחרוזת. בנוסף Criteria API[3] וממשקי API דומים מתרחקים מהמושג של מחרוזות פקודה שיש ליצור ולפרש.
  • עם הזרקת SQL, אפשר להשתמש בשאילתות עם פרמטרים, פרוצדורה מאוחסנת, אימות קלט ברשימה הלבנה ועוד כדי לעזור להפחית פגיעות על ידי הזרקת קוד.[4]
  • ניתוק מעטפת מודולרית מהליבה.
  • אכיפת הפרדת שפה באמצעות מערכת טיפוסים.

הערות שוליים

[עריכת קוד מקור | עריכה]
  1. ^ משתמש יכול להיות משתמש אנושי או מחשב.
  2. ^ Dafydd Stuttard, Marcus Pinto, The Web Application Hacker's Handbook: Finding and Exploiting Security Flaws, שנייה, Wiley
  3. ^ Antonio Goncalves, Java Persistence API, Berkeley, CA: Apress, 2013, עמ' 103–124, ISBN 978-1-4302-4626-8
  4. ^ Jon Heller, SQL Style Guide Cheat Sheet, Berkeley, CA: Apress, 2022-12-27, עמ' 605–606, ISBN 978-1-4842-8866-5