文章最後將會提供一套CSP安全檢查工具,保護自身,避免踏入不安全地帶!
其實簡單來說就是白名單的概念,過濾入境人員,避免造成危害,在Web世界中亦是如此,防止載入不安全的內容,就算網站中具有注入腳本的地方也沒有關係,只要不載入或訪問外部資源就相對安全了。
為什麼制定安全政策這麼重要呢?
國家與國家之間雖然可以透過護照來入境,但總不可能所有人都無限制的進入吧!來來往往的人難免存在一些犯罪份子、通緝犯...等,如果未進行管制,那對國家的人民來說勢必會造成人身安全問題,因此對於入境人員就會有安檢機制,不能攜帶槍械、彈炮...等有害物品進入,被管制中的通緝犯也不能任意入境,這些都是基於安全政策,那麼網路世界呢? 其實Web中就是透過
Content Security Policy(CSP)的方式來制定這樣的規則。
可以制定哪些規則呢?
這邊僅著重於概念的描述,因此列出幾個常見的來源白名單配置選項,至於完整選項請參考
這裡。
- connect-src: 指定來訪的連接源, websocket、XHR...等。
- script-src:指定外部腳本的來源,通常我們會動態載入外部的腳本,那假設我們僅信任某些網站,就可以將這類網站資源加入白名單。
- image-src: 圖片的來源。
- media-src: video、audio...等影音來源。
- frame-ancestors: 是否允許網站內嵌。
- 更多規則請查看...
使用範例
以下的表達方式代表我們的腳本只能是相同domain來源,多組規則就使用;隔開。
Content-Security-Policy: script-src 'self'; img-src 'self'
什麼時候使用?
- 互動式網站,例如留言、聊天...等,可以讓使用者輸入的網頁。
- 與金流相關的重要功能。
- 與使用者個人資訊高度相關的頁面。
什麼時候不需要使用?
- 靜態網站:當網站的目標族群僅是提供瀏覽用。
- 不需要登入也沒有Cookie,那麼這類型網站就可以不必使用Content Security Policy (CSP)。
來檢驗我們瀏覽的網站是否足夠安全吧!
安裝完成後,我們在進入一個網站時,右上角就會有安全等級標示,如果我們想要了解該網站哪些規則未制定,那麼就可以點開來看詳細資訊,不過一般使用者只需要知道以下標示的顏色所代表的意義即可:
資源參考
📝更多Web相關文章