解决Nginx修复CORS不安全配置漏洞的方法

在 Nginx 中修复 CORS 不安全配置漏洞至关重要。可在 Nginx 配置文件的对应 location 块内,添加 “add_header Access-Control-Allow-Origin [允许的域名]” 指令,精确设定允许跨域访问的域名,避免使用通配符 “*”。同时,可按需设置 “Access-Control-Allow-Methods” 指定允许的 HTTP 方法,“Access-Control-Allow-Headers” 规定允许的请求头,以此严格控制跨域资源共享权限,保障数据安全。

CORS漏洞描述

CORS 不安全配置漏洞,是在跨域资源共享场景下产生的风险。具体而言,当资源服务器的响应头 Access-Control-Allow-Origin 设置出现偏差时,那些按常理应当被限制访问的请求网站,便有机会突破访问控制机制,肆意读取资源服务器中的数据。这一漏洞可能引发诸多严重后果,比如用户隐私的泄露,个人信息被非法窃取,更甚者会导致账户被劫持,给用户带来极大的安全威胁与财产损失。

在针对目标网址 https://xxx.com/external/ 展开扫描测试后,发现其存在漏洞。经检测,该目标中 Access-Control-Allow-Origin 的值为 https://xxx.com.qa5bnet.cn 。漏洞探测流程中的请求流情况如下:

第 1 个请求为

GET /external/ HTTP/1.1
Host: xxx.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Language: en
Origin: https://xxx.com.qa5bnet.cn
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: none
Sec-Fetch-User: ?1
Upgrade-Insecure-Requests: 1
Accept-Encoding: gzip

第 1 个响应为

HTTP/1.1 401 
Access-Control-Allow-Methods: GET,POST,OPTIONS,PUT,DELETE
Access-Control-Allow-Origin: https://xxx.com.qa5bnet.cn
Connection: keep-alive
Content-Length: 0
Date: Mon, 13 Nov 2023 02:07:00 GMT
Www-Authenticate: BASIC realm="application"

修复漏洞

set $flag 0;

        if ($http_origin = ''){
            set $flag "${flag}1";
        }

        if ($http_origin !~* ^(http|https)://test\.test\.com$){
            set $flag "${flag}1";
        }

        if ($flag = "01"){
            return 403;
        }

        if ($http_origin ~* ^(http|https)://test\.test\.com$) {
            add_header Access-Control-Allow-Origin $http_origin;
            add_header Access-Control-Allow-Methods GET,POST;
            add_header Access-Control-Allow-Credentials true;
            add_header Access-Control-Allow-Headers DNT,Keep-Alive,User-Agent,If-Modified-Since,Cache-Control,Content-Type;
}

配置具体如下:

server {
        listen 80;
        server_name test.test.com;

        location / {
            set $flag 0;
    
            if ($http_origin = ''){
                set $flag "${flag}1";
            }
    
            if ($http_origin !~* ^(http|https)://test\.test\.com$){
                set $flag "${flag}1";
            }
    
            if ($flag = "01"){
                return 403;
            }
    
            if ($http_origin ~* ^(http|https)://test\.test\.com$) {
                add_header Access-Control-Allow-Origin $http_origin;
                add_header Access-Control-Allow-Methods GET,POST;
                add_header Access-Control-Allow-Credentials true;
                add_header Access-Control-Allow-Headers DNT,Keep-Alive,User-Agent,If-Modified-Since,Cache-Control,Content-Type;
    				}
        
            #将IP和端口改为DataEase服务器的访问地址和端口
            proxy_pass   http://192.168.110.251:81/;
            server_name_in_redirect off;

            # websocket 代理
            proxy_http_version      1.1;
            proxy_set_header        Upgrade         $http_upgrade;
            proxy_set_header        Connection "upgrade";

            proxy_set_header           Host $host:$server_port;
            proxy_set_header           X-Real-IP $remote_addr;
            proxy_set_header           X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header           X-Forwarded-Proto $scheme;

           
        }
  }

本文核心聚焦于 CORS 不安全配置漏洞的修复策略。具体而言,借助修改 Nginx 配置这一关键手段,把 Access-Control-Allow-Origin 精准设定为恰当的域名,从而有效规避在跨域资源共享过程中可能出现的隐私泄露隐患,为保障数据安全与用户隐私筑牢坚实防线。

@版权声明:

本网站所展示的图片均来源于互联网,我们致力于尊重原创作者的版权。若图片涉及版权问题,或图片所有者不希望图片被展示,请与我们联系,我们将在第一时间进行处理,包括但不限于删除图片。我们对图片的版权问题持开放态度,并愿意与版权所有者进行沟通协商。感谢您的理解与支持。

给TA打赏
共{{data.count}}人
人已打赏
0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索