跳转至

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

Gixy Check ID: hash_without_default

map 与 geo 等哈希块应设置安全的 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; # 阻止这些
}

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

为什么重要

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

在问题进入生产环境之前发现它

GetPageSpeed Amplify 按计划在每台 NGINX 主机上运行 Gixy,并在出现新问题和 CVE 时发出告警,同时展示运行时指标。 设置持续监控.