插件窝 干货文章 nginx-naxsi白名单规则是什么

nginx-naxsi白名单规则是什么

名单 规则 Nginx BasicRule 694    来源:    2025-04-26

Nginx NAXSI 白名单规则详解

NAXSI (Nginx Anti XSS & SQL Injection) 是一个开源的 Web 应用防火墙模块,用于 Nginx 服务器。白名单规则是 NAXSI 的核心功能之一,用于允许特定的请求模式通过防火墙检查。

基本概念

NAXSI 白名单规则用于: - 允许已知安全的请求模式 - 减少误报(false positives) - 针对特定 URL 或参数放宽安全限制

白名单规则语法

基本格式:

BasicRule wl:ID [mz:[ARGS|URL|BODY|$VAR]|$SPECIFIC_VAR] [negative] [match] [rx];

参数说明: - wl:ID:要白名单的规则 ID (0-1000 是 NAXSI 内置规则) - mz::匹配区域(请求的哪一部分) - ARGS:所有参数 - URL:URL 路径 - BODY:POST 数据 - $VAR:特定变量名 - negative:反向匹配(可选) - match:匹配模式(可选) - rx:使用正则表达式(可选)

白名单规则示例

  1. 白名单特定规则ID
BasicRule wl:1010;
  1. 白名单特定参数的所有规则
BasicRule wl:0 "mz:$ARGS_VAR:username";
  1. 白名单URL路径的所有规则
BasicRule wl:0 "mz:$URL:/api/v1/public";
  1. 使用正则表达式白名单
BasicRule wl:0 "mz:$URL:/admin/*|$ARGS_VAR:token" "rx";
  1. 白名单特定参数值的SQL关键字
BasicRule wl:1005 "mz:$ARGS_VAR:query";

白名单规则位置

白名单规则通常放置在: - Nginx 的 httpserver 部分(全局白名单) - location 块中(特定路径白名单)

最佳实践

  1. 尽量具体:不要过度使用全局白名单(wl:0)
  2. 测试规则:在生产环境前充分测试
  3. 定期审查:随着应用变化更新白名单
  4. 组合使用:可以组合多个条件,如:
BasicRule wl:1015 "mz:$ARGS_VAR:X-Requested-With|$HEADERS_VAR:X-Requested-With";
  1. 优先级:更具体的规则会覆盖更一般的规则

调试白名单

启用 naxsi.rules 调试模式查看哪些规则被触发:

LearningMode;
SecRulesEnabled;
DeniedUrl "/RequestDenied";
CheckRule "$SQL >= 8" BLOCK;
CheckRule "$RFI >= 8" BLOCK;
CheckRule "$TRAVERSAL >= 4" BLOCK;
CheckRule "$EVADE >= 4" BLOCK;
CheckRule "$XSS >= 8" BLOCK;

通过分析日志可以优化白名单规则,减少误报。