如何阻止机器人恶意请求Node/Express API的敏感漏洞端点
恶意扫描拦截实施方案
你提出的端点黑名单触发IP封禁方案是合理的,属于性价比极高的前置拦截手段,具体实现可以参考以下逻辑:
- 先维护全局恶意端点黑名单,按请求方法+路径匹配,示例列表包含但不限于
GET /.env、GET /.aws-secret、POST /wp-admin这类常见扫描路径 - 写一个全局前置中间件,优先级高于所有业务路由,每收到请求先匹配恶意端点列表,命中后直接将请求IP存入封禁池,返回403或者直接断开连接
- 封禁池可以用Redis实现,设置自动过期时间(比如24小时/7天,可根据攻击强度调整),避免永久封禁误杀偶发的正常请求
- 注意Heroku环境下要正确获取真实客户端IP,需要从
X-Forwarded-For请求头取第一个IP,不要直接取req.ip避免拿到Heroku反向代理的节点IP
多层拦截优化方案,进一步降低恶意请求对业务的影响
- 前置配置WAF规则:Heroku可以直接在应用设置里配置基础WAF规则,把常见的敏感路径扫描直接在接入层拦截,根本不会打到你的Express服务
- 速率限制器和IP封禁联动:把404请求的频率也纳入速率限制判定规则,比如1分钟内请求10个不存在的路径就直接触发临时封禁,不用等命中特定恶意端点
- 故意设置低优先级的"蜜罐路由":在所有业务路由最后、404处理逻辑之前,添加一批常见的恶意路径路由,命中就直接触发封禁,比全局匹配性能更高
- 对于已经被封禁的IP,直接返回空响应或者TCP重置,不要返回带业务特征的404/403报文,降低机器人的识别判定效率
注意事项
- 不要设置永久封禁,大量僵尸IP都是动态分配的,永久封禁只会导致你的封禁池越来越大,影响匹配性能
- 不要把正常业务可能用到的路径加入恶意端点列表,上线前做两次匹配规则校验,避免误封正常用户
- 定期导出封禁日志整理新的恶意路径,更新到黑名单列表里,长期下来拦截率可以达到95%以上
内容的提问来源于stack exchange,提问作者Jorche
相关产品推荐
相关产品推荐

