实施应用网络协议的安全问题

时间:2014-11-01 10:12:33

标签: c++ network-protocols

在我的问题here之后,我试图在服务器计算机上实现某种消息解析。

目前有一条消息如下:

int _header_signature; 
int _offset_a; 
int _offset_b; 
int _size_a;
int _size_b; 
wchar_t stuff[_size_a];
wchar_t stuff2[_size_b]; 
int _footer_signature;

我可以通过解码标头和大小来获得一些有效的代码,并知道我是否收到了整个消息,或者还有更多待处理的消息。但是什么阻止恶意用户故意改变这些消息并使我的机器崩溃?例如。将其中一个大小值或偏移量更改为大于我的消息。

如何使我的服务器对收到的任何消息都安全可靠?

2 个答案:

答案 0 :(得分:0)

无。您必须验证收到的数据。

当然,您可以/应该对通过网络发送的数据进行加密,以防止中间人攻击,但这并不能阻止某人向您发送垃圾数​​据。

所以你必须检查数据是否是垃圾。如果偏移量指向消息之外,那么就会发生一些可疑的事情,你将不得不处理这个问题。

答案 1 :(得分:-2)

只需序列化数据http://en.wikipedia.org/wiki/Serialization

然后检查偏移是否有效。