為防範攻擊,開發人員必須修復安全漏洞,並在應用程式中加入安全防護功能。所幸,瀏覽器在網路上提供許多安全功能。部分功能可供開發人員選擇啟用,部分功能則預設為開啟,以保護使用者。
「沙盒」的概念
現代網頁瀏覽器是根據「沙箱」的概念建構而成。沙箱是一種安全機制,用於在受限環境中執行應用程式。就像遊樂場的實體沙箱一樣,孩子可以在界線內隨心所欲地創作,不會弄髒其他地方,應用程式程式碼也能在受限的環境中自由執行。舉例來說,JavaScript 可以在網頁上新增及修改元素,但可能無法存取外部 JSON 檔案。這是因為沙盒功能「相同來源」
為什麼需要沙箱?
每天都有許多網路使用者下載任意程式碼,並在電腦或手機上執行多次。如果有人告訴你「嘿!下載並執行這個應用程式!」,您可能會暫停思考該應用程式是否來自信任來源、閱讀應用程式供應商的資訊,或仔細查看評論。如果有人傳送網址給您,並說「看看這篇網誌文章」,你可能會直接點選,而不會提出「這個網站會下載哪種 JavaScript?」等問題。
瀏覽器沙箱是瀏覽網頁時的重要功能,可安全執行任意程式碼,讓瀏覽體驗更加順暢。
融入安全考量的設計
如果瀏覽器會將每個網頁應用程式放入沙箱,我們是否還需要擔心安全性?當然有!
首先,沙箱功能並非完美防護機制。即使瀏覽器工程師努力不懈,瀏覽器仍可能存在安全漏洞,而攻擊者也總是會嘗試繞過沙箱 (例如透過 Spectre 攻擊)。
有時沙箱可能會妨礙打造優質的網頁體驗。舉例來說,瀏覽器可能會封鎖對不同網域上託管圖片的擷取要求。開啟跨源資源共享 (簡稱 CORS) 即可在不同網域上共用資源,但如果未謹慎操作,可能會將資源公開給網路上所有人,基本上就是撤銷沙箱。
總結
只有在應用程式設計中加入安全性,才能實現安全的網路體驗,而強大的設計始於瞭解現有功能。接下來兩篇指南會深入探討 CORS 和同源政策。