直接在Web服务器层拦截未授权API扫描请求,通过规则过滤扫描流量、强制凭证校验、收敛API入口三步实现,全部在Nginx/Apache配置中完成,无需改动业务代码。

直接在Web服务器层拦截未授权的API扫描请求,不是靠事后日志分析,而是让扫描行为在抵达应用前就被识别、限速或丢弃。核心思路是:**用规则挡住自动化流量,用身份校验拦住无凭证访问,用路径收敛减少暴露面**。下面分三步实战落地,不依赖业务代码改动,全部在Nginx或Apache配置中完成。
一、用请求特征过滤扫描器流量
绝大多数API扫描器(如Burp Suite、Arachni、dirsearch)有固定行为模式,可被规则识别:
- 高频短间隔请求:单IP 10秒内超过15次GET/POST到/api/、/v1/等路径,直接返回429或503;
- 非常规User-Agent:匹配包含“sqlmap”“nuclei”“gobuster”“hakrawler”的UA头,统一返回403;
-
异常Accept头:扫描器常发
Accept: */*或Accept: application/json,text/html这类宽泛值,而真实App通常只申明具体类型(如application/vnd.api+json),可设为拒绝条件。
二、强制所有API路径带有效凭证
不靠应用层判断,直接在Web服务器做前置校验:
Nginx是一款高性能的开源软件,由俄罗斯开发者Igor Sysoev于2004年创建。它最初设计为高效的HTTP Web服务器,现已成为最受欢迎的Web服务器之一。Nginx以事件驱动、非阻塞I/O架构著称,能以极低内存占用处理数万并发连接,特别适合高流量场景。它同时担任反向代理、负载均衡器、HTTP缓存、TCP/UDP代理等多重角色,常用于静态文件服务、SSL终止、请求转发、API网关和微服务
- 对
/api/、/v1/、/rest/等前缀路径,要求必须携带Authorization: Bearer xxx或X-API-Key头,缺失则返回401; - Nginx示例配置:
location ^~ /api/ {<br> if ($http_authorization = "") { return 401; }<br> if ($http_x_api_key = "") { return 401; }<br> proxy_pass http://backend;<br>} - 注意:此规则仅适用于已启用Token认证的系统;若仍用Session Cookie,需额外检查
$cookie_sessionid是否非空。
三、收敛API入口,隐藏真实路径结构
扫描器依赖路径猜测,减少暴露就是降低风险:
- 禁用Swagger等文档接口:在Nginx中直接
return 404所有/swagger-ui.html、/v2/api-docs、/doc.html请求; - 关闭目录浏览:确保
autoindex off;且无index.html放在API路径下; - 统一API网关入口:所有外部请求只走
/gateway/,后端服务路径(如/user-service/、/order-api/)全部在反向代理中映射,不对外暴露真实服务名。
这些配置生效后,扫描器要么拿不到响应,要么触发限流被封,要么连基础路径都找不到。真正的用户请求不受影响,安全水位却明显抬升。

















