Java protobuf有任何字段的安全问题吗?
所以 我正在考虑在服务到服务(通过网络)请求对象中使用Java protobuf有任何字段的安全问题吗?,java,security,polymorphism,protocol-buffers,Java,Security,Polymorphism,Protocol Buffers,所以 我正在考虑在服务到服务(通过网络)请求对象中使用Any字段: message ServiceRequest { google.protobuf.Any envelope; } 客户机将发送打包在信封字段中的任意数据,服务器将根据未打包的类型信息向请求处理程序分派数据(实现一种多态分派)。类型无法识别的请求将被记录/删除。客户端和服务器很可能使用Java构建 我的核心问题是:这种方法是否存在安全风险(或其他重大缺陷) 谢谢 它并不是完全任意的-它需要实际被识别为本地protobuf类
Any
字段:
message ServiceRequest {
google.protobuf.Any envelope;
}
客户机将发送打包在信封
字段中的任意数据,服务器将根据未打包的类型信息向请求处理程序分派数据(实现一种多态分派)。类型无法识别的请求将被记录/删除。客户端和服务器很可能使用Java构建
我的核心问题是:这种方法是否存在安全风险(或其他重大缺陷)
谢谢 它并不是完全任意的-它需要实际被识别为本地protobuf类型或被视为不透明的负载。它不允许调用方在本地实例化任意类型,这在一些系统中是一个安全漏洞(
BinaryFormatter
in.NET)。因此:我不会对此感到非常震惊,因为我想知道之一的是否更合适,因为它将事情限制在您积极期望的事情上。它不是完全任意的-它实际上需要被识别为本地protobuf类型,或者被视为不透明的负载。它不允许调用方在本地实例化任意类型,这在一些系统中是一个安全漏洞(BinaryFormatter
in.NET)。因此:我不会对此感到非常震惊,因为我想知道一个<代码>之一的<代码>是否更合适,因为它将事情限制在你积极期望的事情上。我很高兴你提到其中一个-这是我正在考虑的另一种方法。它肯定会提高类型安全性。这里是我正在努力解决的问题:多个客户端服务将这些请求用于不同的目的,并且几乎肯定会有不同(尽管相关)的服务响应这些请求。oneof字段有可能成为厨房水槽,并充当无关请求之间的耦合点。更不用说跨组件依赖性的增加了。@peterlitigAny
也是同一个厨房水槽——只是:你捂住眼睛,假装它不在那里;听起来你真正想要的是更细粒度地划分服务。我很高兴你提到了其中一种——这是我正在考虑的另一种方法。它肯定会提高类型安全性。这里是我正在努力解决的问题:多个客户端服务将这些请求用于不同的目的,并且几乎肯定会有不同(尽管相关)的服务响应这些请求。oneof字段有可能成为厨房水槽,并充当无关请求之间的耦合点。更不用说跨组件依赖性的增加了。@peterlitigAny
也是同一个厨房水槽——只是:你捂住眼睛,假装它不在那里;听起来您真正想要的是更细粒度地划分服务