Nginx Web安全相關配置 前言 HTTP header配置 SSL配置 統一錯誤頁面配置

前言

作者曾經寫過一篇博客:Spring Security 與 HTTP 安全 header。介紹了和安全相關的HTTP響應頭,以及它們在Spring Security中如何配置。儘管Spring Security已經爲我們減少了很多配置工作量,然而本人在實際開發中發現直接在web應用中配置這些響應頭仍然不夠靈活。因安全要求,需要大量web應用批量添加安全響應頭。逐個修改Spring Security的配置十分繁瑣,對於沒有用到Spring Security的web項目,配置起來還需要查詢不同web框架的配置方式,效率十分低下。

這裏推薦使用Nginx。Nginx是一款功能強大的HTTP和反向代理服務器。它自然支持HTTP響應頭的配置。我們將所有的安全配置從web應用遷移到Nginx上。這樣可以將配置統一,再也不用去反覆研究各個web項目使用的框架,針對性的修改配置了。

關於安全方面加固的內容,本博客不定期更新。

HTTP header配置

我們通過Nginx的add_header指令添加響應頭。指令用法如下所示:

server {
    location / {
        proxy_pass http://...
        add_header 'Referrer-Policy' 'no-referer'; 
        add_header X-Download-Options 'noopen';
        add_header X-Permitted-Cross-Domain-Policies 'none';
    }
}

常見的安全響應頭的配置指令如下:

add_header Content-Security-Policy "default-src 'self' xxx.xxx.com(允許的地址);
add_header X-Content-Type-Options "nosniff";
add_header X-XSS-Protection "1; mode=block";
add_header X-Frame-Options SAMEORIGIN;
add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";
add_header 'Referrer-Policy' 'origin'; 
add_header X-Download-Options noopen;
add_header X-Permitted-Cross-Domain-Policies none;

各位讀者可以按照實際的需求酌情添加。每個響應頭的作用和參數解釋請參考Spring Security 與 HTTP 安全 header

SSL配置

在禁止使用HTTP的場合,我們可以通過Nginx開啓HTTPS。SSL配置並不複雜,如下所示:

server {
    ssl on;
    ssl_certificate /path/to/cer.crt;
    ssl_certificate_key /path/to/keyFile.key;
}

上面配置中,分別通過ssl_certificatessl_certificate_key指定SSL證書和密鑰。

統一錯誤頁面配置

開發web應用的時候將錯誤堆棧返回能夠方便開發者定位問題。但是生產環境在頁面中暴露錯誤堆棧式致命的。惡意用戶通過分析堆棧能夠得知很多web服務後臺的內容,例如採用的依賴,框架,它們的版本號,使用什麼數據庫和版本。外界獲取了這些信息,對我們web服務安全性造成很大的隱患。無論出於安全,還是美觀,我們務必要配置統一的錯誤頁面。

Nginx配置統一錯誤頁面的方式非常簡單。我們只需指定錯誤代碼和遇到這些錯誤代碼時需要跳轉到的URL就可以了。當然我們再爲這個URL配置一個靜態頁面,就實現了統一錯誤頁面。配置方法如下所示:

server {
    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        root /path/to/50x.html;
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章