美文网首页玩转大数据JavaNginx
Nginx Web安全相关配置

Nginx Web安全相关配置

作者: AlienPaul | 来源:发表于2022-10-24 16:29 被阅读0次

前言

作者曾经写过一篇博客: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;
    }
}

相关文章

网友评论

    本文标题:Nginx Web安全相关配置

    本文链接:https://www.haomeiwen.com/subject/jpsgzrtx.html