הזרקת קוד

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

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

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

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

הערות שוליים 

האקינג