您现在的位置:新疆网站建设-新疆网站制作-新疆二域设计>> 帮助中心>服务器相关>> 服务器中如何禁用危险的HTTP方法(TRACE、OPTIONS等)

服务器中如何禁用危险的HTTP方法(TRACE、OPTIONS等)

作者:管理员  来源:互联网  发布时间:2025-09-19 09:58:51  点击数:0

在Nginx中禁用危险HTTP方法(TRACE、OPTIONS等)

在Nginx中禁用危险的HTTP方法(如TRACE、OPTIONS)可以通过多种方式实现。以下是几种常用方法:


方法一:使用limit_except指令(推荐)

server {
    listen 80;
    server_name example.com;
    
    location / {
        # 只允许GET、POST、HEAD方法
        limit_except GET POST HEAD {
            deny all;
        }
        
        # 其他配置...
        proxy_pass http://backend;
    }
}


方法二:更全面的方法限制

server {
    listen 80;
    server_name example.com;
    
    # 全局禁用危险方法
    if ($request_method !~ ^(GET|HEAD|POST)$) {
        return 405;
    }
    
    location / {
        # 特定location的配置
        proxy_pass http://backend;
    }
    
    # 对于需要OPTIONS方法的API接口(如CORS)
    location /api/ {
        # 允许OPTIONS方法用于CORS预检请求
        if ($request_method = OPTIONS) {
            add_header Access-Control-Allow-Origin "*";
            add_header Access-Control-Allow-Methods "GET, POST, OPTIONS";
            add_header Access-Control-Allow-Headers "Authorization, Content-Type";
            add_header Access-Control-Max-Age 1728000;
            return 204;
        }
        
        # 限制其他危险方法
        if ($request_method ~ ^(TRACE|TRACK)$) {
            return 405;
        }
        
        proxy_pass http://api_backend;
    }
}


方法三:使用map指令(更高效)

# 在http块中定义
http {
    map $request_method $denied_method {
        default         0;
        TRACE           1;
        OPTIONS         1;
        # 添加其他需要禁用的方法
    }
    
    server {
        listen 80;
        server_name example.com;
        
        location / {
            if ($denied_method) {
                return 405;
            }
            
            proxy_pass http://backend;
        }
    }
}


验证配置

检查配置文件语法:

nginx -t

重新加载Nginx:

nginx -s reload

测试禁用方法是否生效:

# 测试TRACE方法
curl -X TRACE http://example.com

# 测试OPTIONS方法(如果已禁用)
curl -X OPTIONS http://example.com


注意事项

OPTIONS方法:在某些情况下(如CORS),可能需要允许OPTIONS方法。请根据实际需求调整配置。

返回状态码:通常返回405(Method Not Allowed)或403(Forbidden)。

性能考虑:使用if指令可能影响性能,特别是在高流量环境中。考虑使用limit_except或map方法。

测试:在应用更改前,确保充分测试所有正常功能不受影响。




windows 2008-2012中禁用危险HTTP方法(TRACE、OPTIONS等):


在站点根目录下建立web.config,内容如下,如果文件已经存在,请添加红色部分

<?xml version="1.0" encoding="UTF-8"?>

<configuration>

<system.webServer>

    <security>

      <requestFiltering>

        <verbs allowUnlisted="true">

          <add verb="OPTIONS" allowed="false"/>

          <add verb="TRACE" allowed="false"/>

        </verbs>

      </requestFiltering>

    </security>

</system.webServer>

</configuration>




windows 2003中禁用危险HTTP方法(TRACE、OPTIONS等):


控制面板-ISAPI筛选器-启用自定义重写组件,然后编辑/others/discuz/httpd.conf 如果您已有其他规则,请添加到第一条规则

RewriteEngine on

RewriteCond %{THE_REQUEST} ^(TRACE|OPTIONS)

RewriteRule .* - [F]




Apache中禁用危险HTTP方法(TRACE、OPTIONS等)

在站点根目录下创建.htaccess文件,内容如下,如果您已有其他规则,请添加到第一条规则

RewriteEngine On
RewriteCond %{REQUEST_METHOD} ^(TRACE|OPTIONS)
RewriteRule .* - [F]



上一篇:Linux服务器如何关闭ipv6
下一篇:服务器安全:Windows系统安全风险-本地NTLM重放提权的防范

版权所有 新疆二域信息技术有限公司 All Rights Reserved 地址:乌鲁木齐市北京南路高新街217号盈科广场B座615 备案号:新ICP备14003571号-6 新公网安备 65010402000050号