אני לא ממש בטוח איך בדיוק זה בעייתי אבל יש לי רושם שפונקציות מסדר גבוה ופונקציות למדה יכולות להוות בעיית אבטחה בקוד בגלל החופש שהן מאפשרות למשתמש להכניס לקוד תמים פעולות לא תמימות…אז שתי שאלות:
האם זה באמת בעיה או שאני מדמיין?
אם זו יכולה להיות בעיה, האם נלמד איך מתמודדים איתה?
Yam
היי,
באיזה סצנריו לדעתך זו יכולה להיות בעיית אבטחה?
תוכל לתאר לי אחת כזו?
reimaoz
אם אני כותב פונקציה מסדר גבוהה לסביבה שבה אני לא שולט לגמרי בקלט שלה, יכול להיות מצב שיקראו לה עם פונקציה לא קשורה לחלוטין שמבצעת איזו פעולה לא רצויה (סתם דוגמה טיפשית, דורסת המון פונקציות מובנות).
ובנוגע לפונקצית למדה, לא יודע אם זה אפשרי אבל אולי אפשר להכניס פונקציה כזו קקלט מהמשתמש בצורה שתריץ קוד במקום לבצע השמה למשתנה.
eyalmerav
בהקשר הזה כל פונקציה מובנית או מודול שלא אתה כתבת אך אתה בוחר להשתמש בו
יכולה להיות בו בעיית אבטחה
כי אתה לא באמת יודע מה יש בקוד שלהם…
לא?!
reimaoz
לא נראה לי שזה אותו דבר. ברור שיש גם בזה סיכון אבל אתה יכול לבחור לא להשתמש בפונקציות/מודולים שאתה לא מכיר. כשאתה “משחרר לטבע” פונקציה שמקבלת פונקציה כקלט אתה לא שולט ב 100% במה שהיא הולכת לעשות (לפחות זה החשד שלי אבל הוא לא מבוסס כל כך אז אולי אני טועה…).
eyalmerav
לא הבנתי… אתה גם יכול לבחור שלא להשתמש בפונקציות מסדר גבוה