שלח תשובה

זירת השאלות

762
צפיות
5
תשובות

sql injection

,‏ 14 ביולי, 2008

שאלה שמעסיקה אותי זמן די רב…
האם מספיק בקוד לעשות החלפה ל    '    —     !                 ? אלו התווים הממש קריטיים לדעתי,
או שלא לתת למשתמש כלל לרשום את כל ה special characters (כולל סוגריים # = @ ועוד הרבה)

לצורך העניין אני עובד עם ASP
השאלה מה מהשניים נכון יותר וגם מה קורה במצב שצריך לתת למשתמש חופש לרשום לפי רצונו ולא להגביל יותר מדי, האם כשבוחרים בהחלפה של התווים הכוונה היא להחליף מאז הקלט מהמשתמש ולהכניס אותם כך גם ל DB? כי אז זה אומר בעצם שצריך בקריאה מה DB להפוך חזרה את התווים הללו
לא רק להגנה על ה SQL אלא גם על ה ASP עצמו למרות שלא נתקלתי עדיין בבעיות אבטחה כאלו ב ASP
.. :/
תודה מראש

תגיות:

5 תשובות

  1. samiprogram הגיב:

    אפשר להמיר לתווי HTML מיוחדים
    "
    להחלפת גרשיים וכדומה (מחליפים את המספר בקוד ASCII של האות). על ידי שימוש בתווי HTML מיוחדים אתה לא צריך להמיר את המידע בקריאה מהדאטהבייס אלא לשלוח אותו לדפדן והדפדפן מציג את התווים האמיתיים..
    אבל אם אתה רוצה לדעת את הטקסט האמיתי שהכניס הגולש תבנה פונקציית המרה חזרה מתווי HTML מיוחדים לתווים המקוריים.
    אני כשלעצמי בונה פונקצייה כזאת שעוטפת את הREQUEST כשהוא בתוך SQL

  2. ניר טייב הגיב:

    ב-ASP להשתמש ב-Command Object
    ב-PHP, ASP.NET וכל השאר להשתמש ב-prepared statements…
    ואז לא צריך לסנן/הלחליף שום דבר, רק בהצגה בשביל למנוע XSS.

  3. lllb הגיב:

    אממ
    samiprogram‏ התכוונת בעצם ל URLENCODE ו DECODE? זה יכול לעזור בזה בעצם?
    ניר, prepared statements קיים ב ASP ? כי עדיין לא נתקלתי בזה

  4. lllb הגיב:

    טעות שלי
    אוקיי ניר הבנתי מה התכוונת אבדוק את זה תודה רבה

שלח תשובה