在我的问题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;
我可以通过解码标头和大小来获得一些有效的代码,并知道我是否收到了整个消息,或者还有更多待处理的消息。但是什么阻止恶意用户故意改变这些消息并使我的机器崩溃?例如。将其中一个大小值或偏移量更改为大于我的消息。
如何使我的服务器对收到的任何消息都安全可靠?
答案 0 :(得分:0)
无。您必须验证收到的数据。
当然,您可以/应该对通过网络发送的数据进行加密,以防止中间人攻击,但这并不能阻止某人向您发送垃圾数据。
所以你必须检查数据是否是垃圾。如果偏移量指向消息之外,那么就会发生一些可疑的事情,你将不得不处理这个问题。
答案 1 :(得分:-2)
只需序列化数据http://en.wikipedia.org/wiki/Serialization
然后检查偏移是否有效。