האם Framework צריך להתערב בגישות אבטחה ?

במהלך השבוע התפרסם מקרה בו Rails – ‏ framework בשפת רובי, מכיל בעיית אבטחה אשר מאפשרת לבצע סוג של הזרקת תוכן למידע שאסור לערוך אותו. למשל לפתוח מחדש דיווחי באגים ב GitHub (כפי שמגלה הבעיה הדגים, כולל שינוי תאריכים לעתיד).

לאחר קריאה יותר מעמיקה, הסתבר כי הבעיה היא לא ב Rails, אלא בחוסר שימוש ביכולות שיש לו, או חוסר שימוש נבון בהם, אשר גורמים לבעיה.

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

Rails מאוד שונה בגישה שלו מהרבה frameworks, בכך שהיא מגיעה בפילוסופיה האומרת כי הוא מכריח אותך לעבוד בגישה שלו:

Rails is opinionated software. It makes the assumption that there is a “best” way to do things, and it’s designed to encourage that way – and in some cases to discourage alternatives. If you learn “The Rails Way” you’ll probably discover a tremendous increase in productivity. If you persist in bringing old habits from other languages to your Rails development, and trying to use patterns you learned elsewhere, you may have a less happy experience.

כלומר  עלייך לעבוד בגישה שלו, או בכלל לא לעבוד איתו, אחרת לא תסתדר במיוחד.

כך שאנו זקוקים לשאול את השאלה: כיצד Rails צריך להתנהג בנושא ?

האם עליו להכתיב את הדרך להגן על שדות ?

או האם מתכנתים צריכים לדאוג לנושא בכל פעם מחדש (למשל Rails מוסיף לכל טבלה 2 שדות בעצמו, אבל לא מגן עליהם, למרות שברירת מחדל הוא מנהל אותן) ?

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

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

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

מה אתם חושבים ?

3 מחשבות על “האם Framework צריך להתערב בגישות אבטחה ?

  1. צפריר כהן

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

    1. ik_5 מאת

      כן, כי הוא עשה המון רעש, וזה התפרסם במספיק מקומות, בשביל שיתיחסו לזה.
      אהבתי את הציטוט שם של מישהו שאמר:
      If you advertise you framework as "even an idiot can make a page in 30 minutes"
      you will end up with a lot of idiots writing pages in 30 minutes…

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

      1. Sawyer X

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

        בכל מקרה, השאלה שאותי מעניינת היא למה לעזאזל יש אפשרות של mass assignment ב Rails? מה לעזאזל הם חשבו לעצמם?

        הדבר הזה לא יקרה ב Django או ב Catalyst או ב Dancer מכיוון שאין נסיון אוטומטית לתת ערכים לרשומות ב ORM שלך. זה פשוט.. מועד לפורענות.

כתיבת תגובה

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

הלוגו של WordPress.com

אתה מגיב באמצעות חשבון WordPress.com שלך. לצאת מהמערכת / לשנות )

תמונת Twitter

אתה מגיב באמצעות חשבון Twitter שלך. לצאת מהמערכת / לשנות )

תמונת Facebook

אתה מגיב באמצעות חשבון Facebook שלך. לצאת מהמערכת / לשנות )

תמונת גוגל פלוס

אתה מגיב באמצעות חשבון Google+ שלך. לצאת מהמערכת / לשנות )

מתחבר ל-%s