nginx

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > nginx > Nginx限制跨域请求

Nginx配置origin限制跨域请求的详细过程

作者:我和你并没有不同

这篇文章主要介绍了Nginx配置origin限制跨域请求的相关知识,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

按照等保要求,跨域的不安全性,需要修复。

这个需要根据客户端传递的请求头中的Origin值,进行安全的跨站策略配置,目的是对非法的origin直接返回403错误页面。

漏洞复现

复现方式为在 Header 中指定 Origin 请求头,看是否可以请求成功。

能够请求成功,说明未对请求头进行控制,有漏洞。

curl-H'Origin:http://test.com'http://192.168.15.32:80

修复办法

在http中定义一个通过map指令,定义跨域规则并返回是否合法

http {
    ...
    // 再白名单里边返回0,不在返回1
    map $http_origin $allow_cors {
        default 1;
        "~^https?://.*?\.tripwolf\.com.*$" 1;
        "~^(https?://(dmp.finerice.cn)?)$" 1;
        "~*" 0;
    }
    server {
        # 指定允许其他域名访问        
        add_header Access-Control-Allow-Origin $http_origin;
        # 允许的请求类型
        add_header Access-Control-Allow-Methods GET,POST,OPTIONS;
        # 许的请求头字段
        add_header Access-Control-Allow-Headers "Origin, X-Requested-With, Content-Type, Accept";
        location / {
            # 进行请求拦截
            if ($allow_cors = 0){
                return 403;
            }
            root /mnt/data;
        }
    }
}

验证方法

通过POSTMAN进行请求模拟,配置不同的Origin,查看返回结果。

如果不需要跨域,则直接清理掉add_headerAccess-Control-Allow-Origin等相关配置,就不这么复杂了。

到此这篇关于Nginx配置origin限制跨域请求的文章就介绍到这了,更多相关Nginx限制跨域请求内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文