מה קורה כשכותבים קוד בתוך שדה "שם משתמש"
פרצת האבטחה הקלאסית — ואיך מונעים אותה בשורה אחת.
יש לכם טופס התחברות עם שני שדות, משתמש וסיסמה. משתמש רגיל כותב "דני" וסיסמה "1234". אבל מישהו אחר כותב בשדה המשתמש ' OR 1=1 — וזה אומר למסד הנתונים "התעלם מהסיסמה והכניס אותי". והוא נכנס, בלי סיסמה, לכל חשבון שירצה.
מישהו ממש זדוני יכול לכתוב DROP TABLE users — וזה אומר למסד הנתונים למחוק את כל טבלת המשתמשים, כל הדאטה עליהם. יש לזה אפילו שם מפורסם: "Little Bobby Tables", מתוך קומיקס xkcd שבו ילד עם שם כזה מוחק את כל רשומות בית הספר.
לעולם, אבל לעולם, אל תשימו קלט של משתמש ישירות בתוך שאילתה. עם Parameterized Queries, במקום להדביק את מה שהמשתמש כתב, אתם שולחים אותו בנפרד — ואז מסד הנתונים מתייחס אליו כטקסט, לא כפקודה.
טיפ: SQL Injection היא מתקפה מ-1998, ובשנת 2026 היא עדיין בעשירייה הפותחת של OWASP Top 10 — רשימת הפגיעויות הנפוצות בעולם. אל תהיו הקורבן הבא.
"פרצה משנת 1998 שעדיין בראש רשימת הפגיעויות של 2026. שורה אחת של Parameterized Query מונעת אותה."