Buffer Overflow

Miki Watts

New member
buffer overflow נגרם בעקבות נסיון

להכניס יותר מידע מכפי שהוגדר לאחסון. זה נפוץ במקומות שמגדירים אורך קבוע למחרוזות כמו C/C++. מאחר וב .Net אין מחרוזות עם אורך קבוע, אין אפשרות ל buffer overflow. לכל היותר אפשר לגרום לאובדן משאבים, אבל זה לא יגרום לתוצאות של buffer overflow, שמאפשרות להריץ קוד חיצוני תוקף. נ.ב. ישנם אכן מערכים ב .net של byte ו char, אך השימוש בהם הוא נדיר יחסית ובדרך כלל לא משמש כקלט ישירות מהמשתמש.
 

היי טק

New member
באופן תיאורטי הדבר אפשרי?

אני יכול לעשות BufferOverflow ב-.net? אם אני אשתמש במערך של Charים???
 

J u n k y

New member
לפי מה שאני יודע, לא

כי מערכים בדוט נט הם אובייקטים, שהגודל שלהם מנוהל ע"י הפריימוורק, ולכן אי אפשר לגלוש סתם כך כמו ב - C.
 

Justin Angel

New member
../images/Emo26.gif

לא. זה חלק מהרעיון שזכרון מנוהל עבורך. אל תדאג, יש מספיק חריגות אחרות בפריימוורק. א ם תיתן שאלה יותר ספציפית למקרה שאתה רוצה להבין אם עלול לעלות או לא יהיה אפשר לתת לך תשובה יותר ריאלית.
 

היי טק

New member
אני רק מנסה להבין עקרון של משהו,

אם מישהו יכול להסביר מה קורה פה, אשמח לשמוע. יש לי משתנה מסוג INT שמקבל קלט מהמשתמש. המשתמש נתן מספר יותר גדול ממה שINT יכול לקבל. מה קורה עכשיו? האם אין כאן BUFFER OVERFLOW?
 

yonigold

New member
זאת הגדרה סמנטית

מבחינה לוגית יש כאן BUFFER OVERFLOW אלא שהסביבה המנוהלת בודקת בזמן ההשמה וזורקת EXCEPTION משל עצמה בשם שונה. הסביבה לא באמת נותנת לקלט הגדול מהטווח של INT להכנס לכתובת בזיכרון אלא מונעת את זה.
 

Justin Angel

New member
../images/Emo26.gif

אין כזה דבר "קלט מן המשתמש" יש "מופע של מחלקה". אם קלטת מהשתמש למשל מחרוזת ואתה מנסה להמיר אותה ל-Int ובאמת יש בעיה בפירמוט (המספר גדול מדי, המחרוזת מכילה אותיות וכך הלאה) תיזרק החריזה המתאימה בזמן ההמרה. תמיד תזכור שאנחנו תמיד עובדים כאן עם מחלקות ואתה לא תוכל בפועל ליצור מופע של Int שהערך אינו בערכי התחומים כי כל המרה ל-Int תיכשל. גם אם תעשה ל-int.Max+1 השמה לתוך int אתה תקבל חריגה בזמן ההשמה כי בפועל דוט נט רואה שהמספר לא בתחום. העקרון הוא שאתה בחיים לא תיגע בזכרון ישירות. לא הקצאה ולא שחרור. יש סיכוי שתעשה משהו שיגרום לפעולה בזכרון, אבל אין כאן שום כלל דטרמינסטי להתנהגות דוט נט בנושא הקצאת ושימוש בזכרון. (אלא אם כן אתה עובד ב-Unsafe, אבל במערכות מידע נדיר היום שעובדים ב-unsafe)
 
למעלה