protobuf 的安全问题 任何字段?

Security concerns with protobuf Any fields?

太棒了!

我正在考虑在服务到服务(通过网络)请求对象中使用 Any 字段:

message ServiceRequest {
   google.protobuf.Any envelope;
}

客户端将发送打包在 envelope 字段中的任意数据,服务器将根据未打包的类型信息分派给请求处理程序(实现一种多态分派)。具有无法识别类型的请求将是 logged/dropped。客户端和服务器可能会使用 Java.

构建

我的核心问题是:这种方法是否存在安全风险(或其他重大)缺点?

谢谢!

它不是 完全 任意 - 它实际上需要被识别为本地 protobuf 类型 被视为不透明的有效载荷。它不允许调用者在本地实例化任意类型,这在一些系统中是一个安全漏洞(例如,.NET 中的BinaryFormatter)。所以:我不会对此感到非常震惊,我想知道 oneof 是否更合适,因为这会将事情限制在你 积极期望的事情 .