如何在 IIS 过滤中将标头列入白名单?

如何在 IIS 过滤中将标头列入白名单?

我们正在考虑将 CloudFlare 部署为网站的 WAF。其中一个要求是限制北美以外的地区访问该网站。幸运的是,CloudFlare 支持 GeoLocation,并使用位置标头标记对原始服务器的请求。

但是现在我需要弄清楚如何将国家列入白名单。理想情况下,我希望指定CAUS或任何内容作为允许的值,并拒绝其他所有内容,但在 IIS 中,它似乎仅支持黑名单。

有没有办法仅在 IIS 中执行此操作,或者是否有人知道可以执行此操作的第三方模块?

答案1

您可以使用IIS 重写模块

使用规则匹配所有 URL,并使用条件检查 CloudFlare 注入的 http 标头,检查国家/地区值并拒绝所有非来自美国或加拿大的请求。

示例规则如下:

<rewrite>
    <rules>
        <rule name="RequestBlockingRule1" stopProcessing="true">
            <match url=".*" />
            <conditions>
                <add input="{HTTP_CF_IPCOUNTRY}" pattern="^CA|US$" negate="true" />
            </conditions>
            <action type="CustomResponse" statusCode="403" statusReason="Forbidden: Access is denied." statusDescription="Using this site from your location is not supported." />
        </rule>
    </rules>
</rewrite>

CF-IPCountry将是 CloudFlare 注入的标头的名称。

相关内容