Qt GRPC 安全注意事项
如果您正在使用 Qt GRPC,请考虑安全方面的问题,以保护用户、网络流量和硬件免受威胁。
以下是一些值得考虑的策略:
- 在发送或接收数据时使用加密。加密数据可增强对窃听及类似攻击的防护。 Qt Network 支持 TLS 加密,可使用不同的 TLS 后端和加密套件。有关详细信息,请参阅“安全套接层 (SSL) 类”。
- 使用强认证和授权机制。为了适应不同平台上的不同用户,您可以选择使用多种基于 OAuth2 和 OpenID 的服务。Qt 通过Qt Network 授权模块支持这些 API。
- 安全地验证和处理不可信数据。输入字段和其他传入数据容易受到注入攻击。有关更多信息,请参阅《处理不可信数据》。
- 限制最大传入消息大小。默认情况下,QtGrpc 会拒绝大于 4 MiB 的传入消息(符合 gRPC™ 规范)。该限制适用于经过传输层解密和任何按消息进行的解压缩后的解码 gRPC 帧有效载荷。您可以使用QGrpcChannelOptions::setMaximumReceiveMessageSize() 或QGrpcCallOptions::setMaximumReceiveMessageSize() 按通道或按单个 RPC 来提高或降低该限制。 该值将按字面意义使用:当值为
0时,仅接受空消息(例如google.protobuf.Empty),若要允许更大的消息,请相应地设置限制,但不得超过传输协议本身的最大值。当未显式设置该选项时,QGrpcHttp2Channel 会使用环境变量QT_GRPC_MAXIMUM_RECEIVE_MESSAGE_SIZE作为后备值。如果该环境变量未设置,则使用默认值。参见Environment variable fallbacks 。 - 使用指数退避来限制重连尝试次数。当服务器断开连接时,若客户端不经任何延迟就立即重连,可能会耗尽本地文件描述符、CPU 资源和网络带宽。 默认情况下,QtGrpc 会在重连尝试之间应用带有抖动的指数退避机制,初始间隔为 1 秒,乘数为 1.6,最大间隔为 120 秒(符合gRPC 规范)。 当服务器确认连接时,退避计时器会自动重置。QGrpcHttp2Channel 从环境变量
QT_GRPC_INITIAL_RECONNECT_BACKOFF_MS、QT_GRPC_MAXIMUM_RECONNECT_BACKOFF_MS和QT_GRPC_CONNECT_TIMEOUT_MS中读取初始间隔、最大间隔以及每次连接尝试的超时值。如果未设置这些变量,则使用默认值。请参阅Environment variable fallbacks 。 - 限制传入元数据的最大大小。默认情况下,QtGrpc 采用 16 KiB 的限制(符合gRPC 规范)。 该限制涵盖 RPC 接收的所有元数据,包括协议要求的元数据。QGrpcHttp2Channel 从
QT_GRPC_MAXIMUM_METADATA_SIZE环境变量中读取该值。小于 4 KiB 的值将被提升至该最小值(并发出警告),而大于传输协议支持最大值的值将被限制。如果未设置该环境变量,则使用默认值。参见Environment variable fallbacks 。 - 设置速率限制并监控流量以防止滥用。Qt GRPC 可能容易受到拒绝服务攻击,设置限制并进行彻底测试有助于降低流量过载的风险。
- 更新环境以修复安全漏洞。应更新系统硬件,以使用最新的安全功能和修复程序。
有关使用 Qt GPRC 的更多信息,请参阅《Qt GRPC 客户端指南》。
有关其他安全主题,请访问“Qt 中的安全”页面。
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.