ארגז חול של דפדפן

Mariko Kosaka

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

הרעיון של "ארגז חול"

דפדפן כארגז חול
איור: הדפדפן כ-Sandbox

דפדפני אינטרנט מודרניים מבוססים על הרעיון של "ארגז חול". ארגז חול הוא מנגנון אבטחה שמשמש להרצת אפליקציות בסביבה מוגבלת. בדיוק כמו ארגז החול הפיזי במגרש משחקים, שבו ילדים יכולים ליצור כל מה שהם רוצים בגבולות הגבולות בלי להסתבך במקום אחר, קוד האפליקציה מאפשר לפעול בסביבה מוגבלת. לדוגמה, JavaScript יכול להוסיף ולשנות רכיבים בדף, אבל יכול להיות שהגישה שלו לקובץ JSON חיצוני תוגבל. הסיבה לכך היא תכונת ארגז חול שנקראת same-origin

למה צריך ארגז חול?

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

ארגז החול של הדפדפן הוא התכונה העיקרית שהופכת את הגלישה באינטרנט לחלקה יותר כי היא בטוחה יותר להריץ קוד שרירותי.

מאובטח משלב התכנון (secure-by-design)

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

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

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

סיכום

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