服务器中如何禁用危险的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重放提权的防范
