服务器中如何禁用危险的HTTP方法(TRACE、OPTIONS等)
在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重放提权的防范