如何防御发送垃圾数​​据包的攻击者?

时间:2013-09-23 09:42:22

标签: sockets networking tcp packet

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

为简单起见,“length”总是1字节长,它定义了“content”的字节数

我的问题是:

当攻击者发送“1 | a51”之类的数据包时,它将保留在tcp的接收缓冲区中 程序将解析错误,下一个数据包将像“5 | 1XXXX”一样启动, 然后其余的数据包保留在缓冲区中将全部解析错误,

如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

如果你得到垃圾,只需关闭连接即可。如果有的话,弄清楚它们的含义并不是你的问题。

答案 1 :(得分:-1)

而不是length | content,你还需要提供校验和,如果校验和不正确,你应该删除连接以避免部分接收。 这是tcp协议中的典型问题,因为tcp是基于流的。但就像http,它是tcp协议的应用程序一样,它有一个请求/响应结构,以确保连接的每一端都知道数据何时被完全传输。

但是你的场景有点棘手,因为黑客只会影响他自己的连接。虽然它无法改变其他连接的数据,但只有他可以控制你的应用程序和用户之间的路由/切换器。