开发者社区 > 云原生 > 中间件 > 正文

Tengine中针对跨域,options请求nginx就统一拦掉,直接同意指定域名跨域, 什么风险?

"Tengine中方式一
针对跨域,options请求nginx就统一拦掉, 直接同意指定域名跨域, 这种配置跨域方式建议吗?有什么风险?
server {
listen 80;

if ($request_method = 'OPTIONS') {
    add_header 'Access-Control-Allow-Origin' $http_origin;
    add_header 'Access-Control-Allow-Methods' $http_access_control_request_method;
    add_header 'Access-Control-Allow-Headers' $http_access_control_request_headers;
    add_header 'Access-Control-Max-Age' 1728000;
    add_header 'Content-Type' 'text/plain; charset=utf-8';
    add_header 'Content-Length' 0;
    return 204;
}

}

方式二
针对跨域,nginx全局配置,Origin指定域名跨域,这种请求最终后端会感知到,这种方式建议吗?

server {
listen 80;

add_header Access-Control-Allow-Credentials true;
add_header Access-Control-Allow-Headers     $http_access_control_request_headers;
add_header Access-Control-Allow-Methods     $http_access_control_request_method;
add_header Access-Control-Allow-Origin  $http_origin;

}
还有一个问题, 就是比如访问非法路径 /aaa/bbb/ccc 路径时,Nginx直接允许的话,后端就会处理这个路由, 遇到攻击时会不会有额外开销?"

展开
收起
十一0204 2023-12-05 20:45:45 64 0
2 条回答
写回答
取消 提交回答
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    在Nginx中,对于跨域请求,特别是预检请求(options请求),有一种常见的配置方式,那就是直接同意来自指定域名的跨域请求。然而,这种做法可能存在一些潜在风险。

    首先,如果服务器端错误地允许了未经授权的域名进行跨域访问,那么这可能导致敏感数据泄露或被恶意利用。因此,建议仅允许可信赖的域名进行跨域资源共享。

    2023-12-06 14:28:01
    赞同 展开评论 打赏
  • 意中人就是我呀!

    "1 : options, 是需要专门处理的。
    add_header Access-Control-Allow-Origin $http_origin always; 上面的header只有2xx时能正常带出。如果4xx 5xx不能正常带出。会。此群整理至钉群“Tengine和Tengine-Ingress开源交流群”。"

    2023-12-05 23:46:37
    赞同 展开评论 打赏

为企业提供高效、稳定、易扩展的中间件产品。

相关电子书

更多
域名升级时代的数字品牌保护 立即下载
CentOS Nginx PHP JAVA 多语言镜像使用手 立即下载
CentOS Nginx PHP JAVA多语言镜像使用手册 立即下载