瀏覽器沙箱

Mariko Kosaka

為了防範攻擊,開發人員需要降低安全漏洞,並在應用程式中新增安全性功能。幸好,瀏覽器在網路上 提供許多安全性功能有些工具可供開發人員選擇加入,有些則會預設為啟用,保護使用者。

「沙箱」的概念

做為沙箱
圖:沙箱為瀏覽器

新世代的網路瀏覽器是以「沙箱」為主軸。沙箱是一種安全機制,可用於在受限制的環境中執行應用程式。就像遊樂場上的實體沙箱,兒童可以在邊界內部建立任何想要的內容,而不用另外設定混搭內容,應用程式程式碼可以在受限制的環境中自由執行。舉例來說,JavaScript 可以新增及修改網頁上的元素,但可能無法存取外部 JSON 檔案。這是因為沙箱功能稱為 same-origin

為什麼必須使用沙箱?

網路上,使用者每天會下載任意程式碼,並在電腦或手機上多次執行。如果有人說「嘿!請下載並執行這個應用程式!」的建議做法,不妨暫停應用程式,看看該應用程式是否來自可信任的來源、詳閱應用程式廠商的內容,或是仔細查看評論。有人傳送「請瀏覽此網誌文章」給您時,您覺得如何?您在點選此按鈕時,可能會不問「這個網站會下載哪種 JavaScript?」等問題。

瀏覽器沙箱是重要的功能,讓您可以更安全地執行任意程式碼,讓網路瀏覽過程更加順暢。

融入安全考量的設計

如果瀏覽器採用沙箱機制為每個網頁應用程式設定沙箱機制,我們是否應該考慮安全性?當然有!

首先,沙盒功能並非完美的護盾。即使瀏覽器工程師付出心力,瀏覽器仍有可能存在安全漏洞,攻擊者也可能會不斷嘗試略過沙箱 (例如使用 Spectre Attack)。

沙箱有時可能會妨礙使用者建立優質的網路體驗。舉例來說,瀏覽器可能會封鎖對其他網域上託管圖片的擷取要求。啟用跨來源資源共享 (簡稱 CORS) 即可在不同網域上共用資源,但如未謹慎地執行,您可以將資源公開給網路上的所有人,基本上會復原沙箱。

總結

只有在應用程式設計融入安全性考量,而且要從瞭解現有功能開始時,才能打造出安全的網路體驗。接下來的兩份指南將深入探討 CORS 和相同來源政策。