ווטסאפ - לינוקס, BSD, קוד פתוח ותוכנה חופשית בעברית. Whatsup - Linux, BSD, open source and free software in Hebrew

 
 
  כניסת חברים · רישום · שכחתי סיסמה  
tux the penguin

quick_linkescaping אוטומטי ב-Django

published at 22/11/2007 - 02:00 · ‏פורסם mksoft · ‏tags פיתוח · שלח לחברידידותי למדפסת
פיתוח לאחר שקטע קוד מסויים שכתבתי בפרוייקט שנבנה מול ענף הפיתוח של Django הפסיק לעבוד (הציג קוד HTML שעבר escaping למרות שלא היה אמור *), התברר שנוסף לאחרונה escaping אוטומטי. לרגע הצצתי מהחלון לוודא שאין איש רכוב על חמור לבן.

כמה מילים מה זה ומדוע זה חשוב: אחת הפרצות הנפוצות ביישומי ווב היא ה-XSS. הפרצה מאפשרת לתוקף "להזריק" קוד HTML וסקריפט שמורצים ע"י המשתמש שלא חושד במאומה תחת ההרשאות שיש לו ליישום. בד"כ הזרקת הקוד מגיעה עקב קלט מהמשתמש שלא הומר כראוי (כגון תגים של html). הדרך להתמודד עימם היא לבצע "escaping", כלומר להמיר את התווים בעלי המשמעות מבחינת הקוד ליישויות שמוצגות ע"י הדפדפן (כגון המרת הסימן "גדול מ" אשר פותח תגי html ליישות ‎&gt‎;‎). יש להיות זהירים ולוודא שכל המשתנים המועמדים לפורענות יעברו את הסינון הראוי.

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

ל-RoR יש תוסף ל-ActiveRecord שעושה זאת, אך לדעתי זה מתבצע במקום הלא נכון (זה אמור להתבצע ברמת ה-view, לא ברמת ה-model).

*לתוהים: בקטע הקוד בו נתקלתי בתכונה, לא הייתה פרצה שכזו :-P התוכן המועבר לתבנית עבר escaping מראש (היה קוד טפסים שיוצר והועבר לתבנית)
 

קישורים רלוונטיים

· עוד על פיתוח
· חדשות מאת mksoft


הסיפור הנקרא ביותר בנושא פיתוח:
הטבלה המחזורית של האופרטורים

escaping אוטומטי ב-Django | כניסה / יצירת מנוי חדש | 3 תגובות
סף חסימה
  
ההערות הינן מטעם כותביהן. אין צוות האתר לוקח אחריות על תוכנן
Re: escaping אוטומטי ב-Django (ניקוד: 0)
ע"י פינגווין אנונימי ב 22/11/2007 - 11:41
The web frameworks didn't want to implement it because nobody didn't want to take a responsibility about XSS

[ השב לזאת ]

Re: escaping אוטומטי ב-Django (ניקוד: 1)
ע"י mksoft (meir@mksoft.co.il)
ב 22/11/2007 - 21:44
(מידע על משתמש | שלח הודעה) http://mksoft.co.il/
נראה לי שזה בא ממקום של: "זה לא צריך להיות בתשתית".

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

בכל מקרה כל התשתיות האלה (הפתוחות לפחות) מגיעות עם רשיונות BSD ו-L/GPL שמסירים אחריות, אז אין להם מה לדאוג ;-)

[ השב לזאת ]

Re: escaping אוטומטי ב-Django (ניקוד: 0)
ע"י פינגווין אנונימי ב 23/11/2007 - 17:44
קיים כבר ב flexy.
http://pear.php.net/manual/en/package.html.html-template-flexy.tag.variable.php

[ השב לזאת ]