עצלנות של מפתחים ואבטחת מידע

12 בנובמבר 2011

17 תגובות


 


קיימים הרבה גורמים לבעיות באבטחת מידע אבל אחד מהגורמים העיקריים לבעיות אלו זה אנחנו – המפתחים – לפעמים אנחנו לא מודעים (או מתעצלים להיות מודעים) לכתיבה של קוד נכון שיהיה מאובטח לפחות ברמה מינימלית.

 

חבר הראה לי משחק טריוויה באתר נענע בשם "לעוף על המליון" - אני לא משחק במחשקי מחשב בכלל, אבל כשהוא הראה לי את המשחק ה – Fiddler היה פתוח (אני מאוד מקווה שאתם מכירים את הכלי הזה – אחרת רוצו ללמוד אותו).

 

בכל מקרה, הצצתי על הפידלר ולתדהמתי אני רואה שבכל פעם שיש שאלה חדשה נשלח כמובן Request עם בקשה לשאלה חדשה, והנה ה – Response

 

nana

 

 

אני מקווה שאתם מצליחים לראות – אם לא תפתחו Fiddler ותווכחו שעל כל שאלה הם שולחים ללקוח גם את התשובה.

 

מדהים עד כמה הבאג הזה נובע מעצלות (או מאי מודעות) – בסך הכול היה צריך לשלוח את השאלה לשרת ושם לבצע את הבדיקה – או שהם יוצאים מתוך הנחה שמתכנתים וחובבי אבטחת מידע לא מתעניינים בשטויות אלו.

 

למען האמת – קצת הצטערתי שלא מדובר על משחק בכסף אמיתי, כך יכולתי לבוא לנענע ולבקש מהם תשלום על ייעוץ באבטחת מידע (לא שאני מבין גדול בנושא) -:)

 

 

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

הוסף תגובה
facebook linkedin twitter email

כתיבת תגובה

האימייל לא יוצג באתר. (*) שדות חובה מסומנים

17 תגובות

  1. יניב31 בינואר 2012 ב 0:48

    ביג דיל. אם אתה משחק במשחק, שאיננו עבור כסף ואיננו תחרותי אלא מול עצמך, ואתה מרמה… את מי אתה מרמה? פתח inspector או hex editor ותגדיל את ה-score שלך למיליארד. וואו, עכשיו אתה תותח אמיתי.

    להגיב
  2. Shlomo8 בפברואר 2012 ב 8:54

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

    להגיב
  3. משה8 בפברואר 2012 ב 20:06

    לגמרי לא חדש, ולגמרי לא רק אצלם….

    להגיב
  4. יוגי11 בפברואר 2012 ב 21:34

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

    להגיב
  5. wow12 בפברואר 2012 ב 17:05

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

    להגיב
  6. Shlomo16 בפברואר 2012 ב 19:48

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

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

    להגיב
  7. אלי5 במאי 2012 ב 19:25

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

    להגיב
  8. Johnson17 במאי 2012 ב 13:44

    Shlomo, ברור שפניות AJAX משפיעות על השרת.
    זה חובבני מאד לומר שאין לכך השלכה, כי אז לא רק אתה לא מבין AJAX מהו (קריאה לכתובת שמייצרת נתונים במקום דף, כאשר לצורך העניין, הנתונים יכולים להיות דפי HTML לכל דבר), אלא שאתה לא מבין בכלל טכנולוגיה.

    להגיב
  9. Shlomo17 במאי 2012 ב 22:30

    ראשית – אני מזמין אותך לשוטט קצת בבלוג שלי – לפני שאתה יוצא בהצהרות על כמה שאני מבין בטכנולוגיה.

    לעתם העניין, המשמעות של פניית AJAX לשרת היא אפסית מבחינת השרת (יחסית לפניית Post Back) וגם אם מדובר במאות אנשים שמשחקים במשחק, השרת של נענע צריך להיות מספיק חזק כדי להתמודד עם זה – למעשה כל שרת שלא יכול להתמודד עם פניות כאלו "אין שמו שרת".

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

    לגבי AJAX ספציפי – אני מזמין אותך לקרוא כאן.
    http://blogs.microsoft.co.il/blogs/shlomo/archive/2010/10/27/the-complete-guide-of-asp-net-ajax.aspx

    אמנם בלי jQuery Ajax, אבל בכל זאת משהו.

    בהצלחה

    להגיב
  10. בנציון22 במאי 2012 ב 14:30

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

    להגיב
  11. Shlomo23 במאי 2012 ב 8:56

    כבר הבהרתי מספר פעמים בתגובות את הפואנטה שלי – כך שאני לא מוצא טעם לעשת זאת שוב

    להגיב
  12. נדב31 ביולי 2012 ב 16:29

    תראה, זה נכון שהקוד כתוב גרוע, אבל כמו שכבר אמרו כאן זה עניין של כמה נענע רוצה להשקיע במשחק טריוויה באתר שלה,
    אני בטוח שאם היה מדובר במשהו שמשלב סליקה וכסף אמיתי לא היית רואה את התשובה הנכונה בדף ואם המצב היה דומה גם אז, היה נכון לציין שהכתיבה מסכנת בנוגע לאבטחת מידע.
    עכשיו זה פשוט מפתח שלא היה לו כוח לכתוב עוד כמה שורות קוד כי יש לו עוד 10 פרוייקטים על הראש מחכים והוא לא בונה על זה שאנשים ישחקו עם Fiddler פתוח :-) ומאוד יכול להיות שמדובר במפתח מאוד מוכשר או אפילו גאון שיודע שאין טעם בלבצע עוד כמה שורות קוד בשביל העניין השולי הזה.

    כתיבה גרועה באמת היא כזאת שתאפשר לך להכניס Script בתור תגובה באתר מסויים, או חשיפה של נתונים שיאפשרו לך גישה למסד הנתונים הראשי של החברה או האתר הספציפי, ויש את זה בכמויות כל כך גדולות באינטרנט שאני בעצמי מפחד מFishing מאוד בימים האלו…

    להגיב
  13. Shlomo1 באוגוסט 2012 ב 10:14

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

    להגיב
  14. מיקי פרלשטיין12 באוגוסט 2012 ב 18:19

    חברה זה וויכוח סרק מיותר וטפשי

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

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

    מצידי שיכפילו את התשובה הנכונה בסדרת מספר אקראי שהSEED שלו הוא 17. זה כבר טיפה יותר קשה.

    העברת שאלות ותשובות כהעברה בינארית בלתי מוצפנת מראה על אי הבנה בסיסית בתקשורת ובימינו עם הקלות שבה ניתן לשלוח מידע אם ב JSON ואם ב XML ואם בSOAP אין ממש סיבה לפאשלה הזו, ולהצפין מראש (אפילו לא אתה מטפל בזה, זה חלק מה DESERIALIZATION האוטומטי של הפרוקסי שלך).

    אבל כפי שציינו, טיב המתכנת כטיב הכסף שמשלמים לו

    מיקי

    להגיב
  15. אריק9 בספטמבר 2012 ב 10:50

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

    דליקטס.

    להגיב
  16. אבי קינן2 בנובמבר 2012 ב 8:48

    אין שום צורך להצפין ואין שום צורך לשלוח את התשובה יחד עם השאלה,

    במערכת שמוכננת היטב שולחים רק את השאלה, ב-GET REQEUEST ולא ב-POST (שאיטי יותר), השימוש ב-GET מאפשר לנו גם להשתמש ב-CACHE עבור השאלות (עבור חלק מהבקשות לפחות).

    מעבר לזה, בשימוש עם KeepAlive ומערכת Backend עמידה, ההשפעה על הגולש תהיה אפסית (2 בקשות לכל שאלה לעומת 1).

    כל הטררם שכתבתי מתייחס לפרויקט רציני, ולא למשחק של 200 איש בשבוע.

    אבי קינן.

    להגיב
  17. יורם9 באוקטובר 2013 ב 7:45

    מי שמבין באבטחת מידע לא מתקרב לטכנולוגיות (לפחות צד-שרת) של מיקרוסופט. "שרת" שמריץ GUI, שמערכת ההרשאות שלו ניתנת לעקיפה באינספור דרכים, שרגיש לוירוסים, שהקרנל שלו מממש פונקציונליות יוזר-ספייס מובהקת, פשוט אינו ראוי להיקרא שרת.

    להגיב