Nginx配置安全策略总结

  • Post author:
  • Post category:其他


以下均在

nginx.配置

即可



“Content-Security-Policy”头缺失或不安全

这里 script-src 放开了允许内联js

'unsafe-inline'

,其实这里并不是很安全,但公司项目的前端架构已经成型改动代码工作量太大,先跟着指定的ip或域名访问这样配置着。后面有时间在出动态生成 nonce属性值的文档。

add_header Content-Security-Policy "default-src 'self' *.baidu.com *.myqcloud.com ;  script-src 'self' 'unsafe-inline'  *.baidu.com ; connect-src 'self';img-src * data: blob: ; style-src 'self' 'unsafe-inline' 'unsafe-eval' *.baidu.com *.myqcloud.com https:  ;  frame-ancestors 'self'; font-src * https: data: ";



“X-Content-Type-Options”头缺失或不安全

add_header X-Content-Type-Options nosniff;



“X-XSS-Protection”头缺失或不安全

add_header X-XSS-Protection "1; mode=block";



HTTP Strict-Transport-Security头缺失或不安全

add_header Strict-Transport-Security "max-age=31536000; includeSubdomains; preload";



发现可高速缓存的SSL页面

# “Cache-Control: no-store”和“Pragma: no-cache”或“Cache-Control: no-cache”
add_header Cache-Control max-age=3600; 



检测到SHA-1密码套件

ssl_ciphers ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:!NULL:!aNULL:!MD5:!ADH:!RC4:!DH:!DHE:!SHA-1;
ssl_prefer_server_ciphers on;



检测到隐藏目录

location ^~ /(html|static|img) {
 	deny all;
}
location ^~ /地址名称/对应的目录/ {
 	deny all;
}
error_page 403 =404 /404.html;



检测到支持较老的TLS版本

# TLSv1.2 以上版本即可
ssl_protocols TLSv1.2 TLSv1.3;



未实施加密

set $open_http 0;
if ($scheme = http) {
     set $open_http "${open_http}1";
 }
 if ($scheme = https) { 
     set $open_http "${open_http}0";
 }
 if ($request_uri ~* "/地址名称/ajax/libs/") {
     set $open_http "${open_http}0";
 }
 if ($request_uri ~* "/地址名称/js/") {
     set $open_http "${open_http}0";
 }

 if ($open_http = "010") {
     return 403;
 }



启用了不安全的“OPTIONS”HTTP 方法

server {
    ...
    # 如果我们在服务器环境中,最好使用这样的结构:
    add_header Allow "GET, HEAD, POST" always;
    
    if ($request_method !~ ^(GET|HEAD|POST)$) {
      # 您还可以在“if”上下文中使用“add_header”:
      # add_header Allow "GET, HEAD, POST" always;
      return 405;
    
    }
    ...
}



版权声明:本文为xisgod原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。