ערכתי לאחרונה בתאריך 22.11.13 בשעה 17:58 בברכה, דוקטור חייק
טוב,
כולנו שמענו מליון פעם על הפירצה המפורסמת של sql injection
ולי באופן אישי כבר כואב הראש מהנושא שבכל שנה בכנס אבטחת מידע מדברים עליו וחושבים שגילו את אמריקה.לחדשים שלא יודעים על מה מדובר, בקצרה -
נניח אתם רוצים לעשות את ה- INSERT הבא:
select * from table where user='A' and password = 'b' and status=1 |
ואתם מקבלים מהמשתמש בקלט את את הערך הבא כסיסמא: b' or password <> 'b
אז בעצם מה שיוצא זה:
select * from table where user='A' and password = 'b' or password <> 'b' and status=1 |
והופ יש פירצה.
בקיצור יש פונקציה מגניבה ב- PHP שבודקת שתוכן השדה מתאים ל- MYSQL ומתאימה את התוכן.
הפונקציה היא mysql_real_escape_string
הנה אתר המסביר על הפקודה:
http://www.w3schools.com/php/func_mysql_real_escape_string.asp
ועוד אתר:
http://php.net/manual/en/function.mysql-real-escape-string.php
אגב הוספתי לדוגמא את ה- and status=1 כי הטקסט מוצג מימין לשמאל אז כדי שיהיה אפשר לראות טוב את הגרש