我正在使用protobuf-net创建一个应用程序,用它通过网络发送/接收数据。
我很好奇某人是否可以发送会使该行抛出异常的内容:
var message = Serializer.DeserializeWithLengthPrefix<ReceiveType>(
memoryStream, PrefixStyle.Fixed32);
我假设到目前为止我们检查过:
MemoryStream
,该消息将用于反序列化消息(即没有切断流的风险)。到目前为止,我已经尝试了各种可能性,最坏的情况是message
字段为null
或其他默认值,即使对于必填字段以及邮件正文包含随机乱码时也是如此。
答案 0 :(得分:1)
当邮件正文包含随机乱码时
不太好。 Gibberish将通常使其抛出“无效线路类型”异常。您还可能会收到有关格式错误的varint,UTF8和其他一些内容的错误。消息必须是有效的protobuf数据。有些东西无法检测到,但在大多数情况下,它会因为无效数据而大声喊叫。
显然ReceiveType
中有意爆炸的任何代码(例如,属性获取)会导致它失败 - 所以模型/ DTO也必须有意义!