服務器中如何禁用危險的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重放提權的防范
