摘要
终结点使用 HTTP/2 设置框架来交换彼此的已定义的设置参数。HTTP/2 协议不会在设置的数目上定义的任何实际限制单个设置框架中包括参数 (最大允许值是2796202) 和上交换此类设置帧的次数没有限制。
使用 HTTP/2 的恶意客户端可以利用这一事实使 HTTP/2 服务器系统暂时稳定之前终止连接通过 Internet Information Services (IIS), 提高到 100%的 CPU 使用率。
解决方案
若要解决此问题,Microsoft 已提供 HTTP/2 设置参数的数量定义限制允许通过连接。这些限制不由 Microsoft 预设和查看 HTTP/2 协议和其环境要求后必须由系统管理员定义。
以下两个注册表项添加设置的限制:
路径: Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HTTP\Parameters
名称: Http2MaxSettingsPerFrame
类型: DWORD
最多可有 2796202 和数据: 支持最小值 7。修整成相应的最小/最大范围值的结束值。
路径: Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HTTP\Parameters
名称: Http2MaxSettingsPerMinute
类型: DWORD
数据: 支持最小值 7。较小的值调整为最小值。
注意:: 重新启动计算机或重新启动服务后,则需要读取配置的注册表值,在第一次添加或更改时。
设置了限制,
-
我f 单个设置框架包含更多settings 参数比"Http2MaxSettingsPerFrame"值,则立即断开该连接。
-
我settings 参数中存在多个包含设置的f 数框架在一分钟内收到交叉"Http2MaxSettingsPerMinute"值,则连接被终止。
适当地设置时,上述两个限制结合使用可以帮助终止违反这些限制恶意连接并形成的合法连接一个阈值