0

我写了一个 TCP 套接字程序,并定义了一个文本协议格式,如:“长度|内容”,

为简单起见,“长度”始终为 1 字节长,它定义了“内容”的字节数

我的问题是:

当攻击者发送像“1|a51”这样的数据包时,它会停留在tcp的接收缓冲区中,程序会解析错误,下一个数据包会像“5|1XXXX”一样开始,那么剩下的数据包都会被解析错了,</p>

如何解决这个问题呢?

4

2 回答 2

1

如果你得到垃圾,只需关闭连接。弄清楚它们的意思不是你的问题,如果有的话。

于 2013-09-23T09:54:08.853 回答
-1

除了长度|内容之外,您还需要提供校验和,如果校验和不正确,您应该断开连接以避免部分接收。这是 tcp 协议中的一个典型问题,因为 tcp 是基于流的。但是就像http一样,它是tcp协议的一种应用,它具有请求/响应的结构,以确保连接的每一端都知道数据何时已完全传输。

但是您的情况有点棘手,因为黑客只能影响他自己的连接。虽然它不能更改来自其他连接的数据,但前提是他可以控制您的应用程序和用户之间的路由/切换器。

于 2013-09-23T09:53:42.403 回答