add_header被覆盖 -配置错误

Posted null1433

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了add_header被覆盖 -配置错误相关的知识,希望对你有一定的参考价值。

nginx的配置文件分为Server、Location、If等一些配置块,并且存在包含关系,和编程语言比较类似。如果在外层配置的一些选项,是可以被继承到内层的。

但这里的继承也有一些特性,比如add_header,子块中配置后将会覆盖父块中的add_header添加的所有HTTP头,造成一些安全隐患。

如下列代码,整站(父块中)添加了CSP头:

server {
    ...
    add_header Content-Security-Policy "default-src ‘self‘";
    add_header X-Frame-Options DENY;
    
    location = /test1 {
        rewrite ^(.*)$ /xss.html break;
    }
    
    location = /test2 {
        add_header X-Content-Type-Options nosniff;
        rewrite ^(.*)$ /xss.html break;
    }
}

/test2的location中又添加了X-Content-Type-Options头,导致父块中的add_header全部失效:

技术图片

 

构建xss

ip/test1#<img src=1 onerror=alert(1)>

技术图片

 

以上是关于add_header被覆盖 -配置错误的主要内容,如果未能解决你的问题,请参考以下文章

python给word文档添加标题

python设置word文档格式内容

Nginx指令add_header和proxy_set_header的区别

爬虫第一天——add_header()和get_header()

Nginx add_header Sec-WebSocket-Protocol 不起作用

nginx upstream能判断后端节点状况吗