使用 Nginx 時,我是否必須在每個位置區塊中新增內容安全策略?

使用 Nginx 時,我是否必須在每個位置區塊中新增內容安全策略?

環境:Nginx、Node.js、數位海洋 Droplet

的文檔新增標題指令表明它可以在http,serverlocation上下文中使用。

但是當我添加我的內容安全策略當我測試它時,沒有檢測到http或上下文serverhttps://csp-evaluator.withgoogle.com/或者https://securityheaders.com/
當我將其添加到location區塊時,兩個網站都會檢測到它。

範例標題:

add_header content-security-policy "default-src 'self';"

我的nginx.conf有 5 個location區塊,其中一個用作代理。我需要添加content-security-policy到每個區塊還是有更好的方法?

location ~* \.(jpg|png|svg|webp|ico)$ { }
location ~* \.(css)$ { }
location ~* \.(htm|html)$ { }
location ~* \.(js)$ { }
location / {
    proxy_pass http://127.0.0.1:9999;
}

另外,我是否需要將所有其他主要安全標頭添加到每個區塊中?這似乎是多餘的,但如果這是保護網站安全的唯一方法,我會這樣做。

答案1

add_header指令有一個有趣的屬性。來自文件

可能有多個add_header指令。當且僅add_header噹噹前層級上沒有定義任何指令時,這些指令才會從先前的配置層級繼承。

這意味著如果您要添加其他如果這些區塊之一中包含頭文件,則需要重複或區塊中的location任何add_header指令。serverhttp

考慮使用included 檔案來組織您可能需要重複的指示。

相關內容