当前位置: 首页 > 知识库问答 >
问题:

更改proto字段号的安全性

那博瀚
2023-03-14

例如,如果我从以下更改:

message Request {
  int foo = 1;
}

message Request {
  int bar = 1;
  int foo = 2;
}

将foo从1更改为2安全吗?文档说不要:<代码>这些数字用于标识消息二进制格式中的字段,并且在使用消息类型时不应更改 ,但我想知道为什么。

共有1个答案

易宣
2023-03-14

如果您有使用第一个版本生成的消息的序列化版本,则无法使用第二个版本的消息反序列化。如果使用protobuf生成模型以存储在DB中或发布在Apache Kafka之类的代理中,则需要遵循约定。如果使用proto buffer生成模型和服务以供联机使用,则不应破坏任何内容(如果要重新生成所有模型)

另请参阅保留关键字,以免重复使用旧数字。进一步阅读也在这里

 类似资料:
  • 假设我有一条消息 并且我想将更改为。我真的必须更改数字吗?(例如为4和不建议使用3)。 我和一个朋友正在讨论这个问题。他在Protobuff方面更有经验(我是新手),但从我阅读的文档来看,我实际上不明白为什么有必要这样做。 虽然这些文件没有直接解决我所看到的问题,但我的理由如下: 上述内容可能会序列化为 反序列化基本上可以理解为 哦,好的,那是1,所以读取接下来的32位 哦,好的,那是3,所以把接

  • 问题内容: 有什么方法可以更改显示在HTML的密码字段中的星号()或在某些浏览器中的项目符号()? 问题答案: 您不能在标准密码字段中更改密码屏蔽字符。您可以使用文本框来伪造它,但是由于缺乏从密码文本框中获得的保护,因此它导致了较弱的安全模型。附带说明一下,更改这样的项目的行为通常不是一个好主意,因为用户已经习惯了一种掩蔽形式,并且您将引入另一种掩蔽形式- 如果没有充分的理由这样做,我会d避免使用

  • 这篇文章描述了原始文件中编号标签的用途,在序列化和反序列化数据时基本上匹配字段。我的问题是:如果我更改现有字段的编号会发生什么? 举同样的例子,假设这是原始数据 我想添加一个新字段,在分页字段之前添加这个字段在逻辑上是有意义的-如果我还没有使用

  • 问题内容: 我想在userpost上实现SO类标签。我有一个名为tag_data的表,其中的列为idId,title,count。我有一个单独的表,该表链接了帖子与其可能使用的许多标签之间的关系。 继承人的问题,我如何获得当前计数,将其增加或减少一并安全地存储它。因此,在我选择和更新之间,没有其他连接/线程会更新它吗? 问题答案: 我假设您还想要新的计数,否则,这毫无疑问,只需更新set coun

  • 我正在编写一个应用程序,它使用PDFbox库来填充PDF文件中的字段。 在其中一个字段中,我将文本设置为希伯来字母。 当我在Android设备上运行代码时,我会得到以下日志: 我试图在堆栈溢出中找到一些关于它的信息,但我找到的答案都与填充表单有关。它都与有关。 你能帮我解决这个错误并用PDFBox在表格中填写希伯来字母吗?

  • 我正在从事一个项目,我们需要向用户提供现场级访问。 示例: 假设有一个名为employee的实体,其中包含多个字段 应用程序应该允许在实体的字段级别进行安全访问。 用户被允许根据访问来编辑/读取字段。 我们已经想到了使用Spring acl的实现,但它提供了实例级安全性。 有人能告诉我一个优雅的方法来实现它吗? 提前谢谢。