【发布时间】:2015-03-10 11:40:39
【问题描述】:
对于那些使用 Google Protocol Buffers C++ 实现的人,它如何处理恶意或格式错误的消息?例如,它会崩溃还是继续运行?我的应用程序肯定会在某个时候收到恶意数据,我不希望它在每次收到格式错误的消息时崩溃。这是我在这个问题上能找到的唯一答案 (google mailing list)。
在发布代码之前,专门针对安全问题进行了审查。至少对于 C++ 和 Java 实现,有各种保护措施来防止损坏或恶意数据。 protobuf 库提供的整体消息大小也有限制(CodedInputStream::SetTotalBytesLimit);它还提供了递归限制,以防止深度嵌套的消息破坏堆栈。还有其他内部实现细节可以避免诸如内存耗尽之类的事情(特别是从接收指示巨大长度分隔值的消息)。
【问题讨论】:
-
使用HMAC 或至少某种形式的校验和。
-
校验和不能防御恶意。身份验证是,至少使用适当的加密实现。
-
@MSalters 身份验证也不是真正的恶意防御......它只允许您识别(假设您的密钥/证书没有被泄露)谁是恶意的......跨度>
-
@twalberg:是的,但如果只有一个有效的发件人,或者预先知道一小部分,这就足够了。您可能需要额外的机制来在运行时添加有效的源。
标签: c++ security protocol-buffers