跳转至

map/geo 等哈希块缺少默认值

Gixy Check ID: hash_without_default

mapgeo 等哈希块应设置安全的 default 值。若缺省,未知键可能落入意料之外的状态,从而旁路安全控制。

不安全示例

# 无 default → 未知键行为不可预测
map $request_uri $allowed {
    /admin 0;
}

# geo 无 default
geo $block_client {
    192.0.2.0/24 1;
}

更安全的替代方案

# 提供安全默认值
map $request_uri $allowed {
    default 1;      # 默认拒绝
    /admin 0;       # 仅当后续逻辑显式设置时才允许
}

# 在 geo 中提供默认值
geo $block_client {
    default 0;      # 默认不阻止
    192.0.2.0/24 1; # 阻止这些
}

选择符合“最小权限”原则的默认值(控制访问时,默认拒绝)。

为什么重要

显式默认值让行为更可预测,并避免在新增键或输入异常时出现意外的允许/拒绝空洞。

加固 NGINX,使用维护的 RPM

使用 GetPageSpeed 提供的 NGINX Extras 在 RHEL/CentOS/Alma/Rocky 上获取持续更新的 NGINX 与模块。 了解更多.