24-06-2009, 20:36
|
מנהל
|
|
חבר מתאריך: 26.07.08
הודעות: 6,473
|
|
מאיזו בחינה לאבטח?
הכל תלוי לאן הנתונים מגיעים:
אם הנתונים נכנסים לתוך שאילתא שמוגשת למסד הנתונים, צריך להריץ mysql_real_esacpe_string על המחרוזת כדי להבריח תוים שיכולים להיחשב כאלמנטים של שפת ה-SQL, במקום שייחשבו בתור מחרוזת.
מלבד זאת, אם הנתונים נכנסים לפיסקת LIKE, יש להבריח תווים אחרים (בדר"כ את התוים '%' ו- '_'), כיוון שלפיסקת LIKE יש תחביר\"חוקים" אחרים.
ההברחה תיעשה ע"י הוספת קידומת של לוכסן אחורי ( \ ) לתוים הנ"ל.
חשוב להבין שזה הכל תלוי באיפה הנתון יכול להגיע ומה הוא עלול לעשות במקום הזה.
אם הנתונים יגיעו מתישהו למסמך HTML, יש להבריח אותם עם הפונקציה שממירה תוי HTML מסוימים לחלופות ה-entities שלהם.
עריכה:
אתן דוגמא טובה למתי אין צורך להבריח תוי HTML מסוימים - כאשר בפאנל הניהול, אתה נותן אפשרות לאדמין לערוך עמוד HTML, שבו אתה מאפשר לו לכתוב קוד HTML טהור בלי שינויים כלל. (אין שום מעבר מ-BBCODE ל-HTML, אלא רק HTML היישר מעורך ה-WYSIWYG)
נערך לאחרונה ע"י dorM בתאריך 24-06-2009 בשעה 21:09.
|