「傷害太高了,我們快點多喝 HP藥水,好想要買防禦 XSS 的盾牌哦!」
CSP 是內容安全策略(Content Security Policy,簡稱CSP),主要是用來防禦 XSS 的。
「這個防禦書是主攻瀏覽器哦」
我們只要定義一下我們的 header
php 的範例
<?php
header("Content-Security-Policy: default-src *");
?>
Directive | 範例 | 描述 |
---|---|---|
default-src | 'self' cdn.example.com | 預設 |
script-src | 'self' js.example.com | Javascript |
style-src | 'self' css.example.com | CSS |
img-src | 'self' img.example.com | 圖片 |
connect-src | 'self' | Ajax, Websocket |
font-src | font.example.com | 字體 |
object-src | 'self' | 物件 |
media-src | media.example.com | 媒體 |
Source Value | 範例 | 說明 |
---|---|---|
* | img-src * | 萬用字元, 除了 data: blob: filesystem: |
'none' | object-src 'none' | 任何資源都不允許 |
'self' | script-src 'self' | 只允許自己同域名 |
data: | img-src 'self' data: | 允許 data 類如 base64 圖片 |
example.com | img-src example.com | 允許指定的域名 |
*.example.com | img-src *.example.com | 允許指定的域名底下的子域名 |
'unsafe-inline' | script-src 'unsafe-inline' | 允許使用 inline 元素,例如樣式屬性,onclick或 javascript:URI |
'unsafe-eval' | script-src 'unsafe-eval' | 允許進行不安全的動態程式碼,例如JavaScript eval() |