IT @ Jason Tools v3.65.1

CSP 規則設計器

設計與閱讀 Content-Security-Policy,做靜態情境檢查並產生部署草稿

政策設定

本站不掃描目標站、不執行你貼進來的 JavaScript,也不保證政策不會弄壞網站。所有結論都是「依已提供的政策」推導出來的,不是瀏覽器實測。

'self' 與相對路徑要靠它才判得出來。沒填的話相關判定會回「待確認」,不會亂猜。
僅記錄違規,不阻擋資源。
貼上現有政策(選填)

可以貼純政策、完整的 CSP 標頭,或是明確貼上的 meta 宣告。一個標頭值裡的多份政策、以及重複的 CSP 標頭都會各自保存,不會被聯集成一條比較寬鬆的政策。

本站不提供「最安全」一鍵範本。「同源起點」只加 default-src 'self'、object-src 'none' 與 base-uri 'self',它是起點不是終點,而且很可能會擋掉你現在正在用的資源。

指令與來源

點一列會在下面展開它的詳情。同名指令只有第一次出現的那一份生效,後面的會標成「重複」並保留位置 —— 那是標準的解析方式,不是最後值覆蓋。

指令 來源 操作
「未設定」不是選項 —— 沒設定代表走 fallback 或不受限制,要移除請用那一列的刪除鈕。
網域大小寫不影響比對,路徑會分大小寫。認不得的值會保留原文並標成未支援,本站不會把它當成允許。

政策預覽

上面是純政策,下面是完整的 HTTP 標頭。兩者可以分開複製與下載 —— 貼進 Nginx 設定與貼進說明文件要的不是同一份。

純政策

                完整標頭
                


                

情境檢查

只做字串與位元組比對,不發任何網路請求。可以明確判定的範圍:已知的文件來源、沒有重新導向、標準的 http/https 外部資源,而且政策裡沒有本站不支援的條件。

靜態推演,未發送網路請求。就算 CSP 允許,資源仍然可能被 CORS、混合內容、TLS、MIME 型別、網路或應用本身擋下來。

Hash 與 Nonce

貼的必須是 HTML 解析之後對應的實際文字,不是整段 script 標籤。所有空白、換行與 BOM 都保留,不 trim、不重排 —— 來源是 CRLF 還是 LF 會算出不同的 hash。

HTML 的多行輸入框依規範會把換行正規化成 LF,所以這個欄位打不出 CRLF —— 來源如果真的是 CRLF,這裡算出來的 hash 會跟伺服器上的不一樣。那種情況請用本機工具直接對檔案計算。

演算法

匯出與部署草稿

下載不代表已經部署。片段的跳脫規則是逐個伺服器依官方文件寫的(引號、反斜線與該伺服器會展開的字元),換行一律擋下不輸出 —— 那是標頭注入。命中會被展開的字元或還有 nonce 預留位置時一律標成教學草稿。

跳脫規則查過文件不等於這段設定在你的伺服器上跑過。本站沒有任何一種 web server 的部署驗證,套用之後請自己確認回應標頭。
Web server

                
meta 標籤

                

計畫 JSON 裡的 nonce 與內部網址具有敏感性,要分享之前請自己看過。每一種伺服器自己的注意事項寫在上面的片段底下;上游(CDN、反向代理)若也送了同名標頭要一併檢查。

違規記錄閱讀 0

把你端點收到的 CSP 違規報告貼進來,依頁面、指令、被擋的位址與模式分組。認得傳統的 csp-report、Reporting API 陣列,以及一行一筆的 JSON。

報告端點是公開的,任何人都可以往上面送 JSON;瀏覽器本身也可能刪減或漏送。所以這一區不提供「把全部來源加入白名單」—— 每一筆都要你自己看過。本站不提供遠端報告接收器。
違規報告(JSON)
使用說明 8 項
多份 Enforce 政策的限制是共同作用
一份允許、另一份阻擋,結果仍然是阻擋。本站逐份算完再取交集,不會先把來源清單聯集成一條 —— 那樣會造出一份比實際更寬鬆的政策,然後告訴你「可以載入」。
重複的指令是第一份生效,不是最後一份
CSP 的解析是「同名指令只採用第一次出現的那一份」。採最後值會得到與瀏覽器完全相反的結論,所以重複的那幾份會保留位置並標成不生效。
未設定不等於禁止,而且不是每個都退到 default-src
base-uri、form-action、frame-ancestors、sandbox 與報告類指令完全沒有 fallback,default-src 'none' 管不到它們。worker-src 則是先看 child-src、再看 script-src,最後才是 default-src。詳情卡會同時顯示實際採用的指令與繼承路徑。
認不得的東西一律回「待確認」
未知的指令與來源會保留原文並標成未支援,本站不會把它理解成允許,也不會替你刪掉或模擬效果。'none' 跟其他來源混在一起同樣是待確認 —— 那不是文法允許的寫法,各家瀏覽器的處理也不一致。
strict-dynamic 有自己的一套信任模型
它一出現,host 與 scheme 來源就全部失效,只剩 nonce、hash 與「由受信任腳本非剖析器插入」這條路。所以沒有提供發起方式與信任資訊時,本站不會只看 CDN 的網域就說允許。
Hash 一個位元組都不能差;nonce 只能是範例
換行改成 CRLF、多一個 BOM、前後多一個空白,算出來就是另一組 hash。nonce 的正式值必須每一個回應重新產生,而且要跟 HTML 裡的 nonce 屬性一致 —— 本站產生的只能拿來看格式,預留位置沒有換掉之前只能當教學草稿。
meta 與 HTTP 標頭不是等價的
meta 沒有 Report-Only,而且 frame-ancestors、report-uri 與 sandbox 由 meta 交付時會被忽略。遇到這些內容本站會阻擋輸出並說明理由,不會靜默省略 —— 省略了你會以為設好了。
這一版還沒有做的事
更多情境類型與完整的瀏覽器版本矩陣還沒做,所以畫面上不會有那些按鈕。本站也不提供遠端的報告接收端 —— Report-Only 要真的收得到報告,得自己部署接收服務。

依據:W3C CSP3 工作草案(2026-08-13)、MDN 的 CSP 部署指南、Nginx ngx_http_headers_module 文件。介面、上限與分期是本站的設計;草案列出的指令不代表所有瀏覽器都已經支援,實際部署前請以你要支援的瀏覽器實測為準。