Проблемы безопасности при реализации сетевого протокола приложения

После моего вопроса Вот, Я пытаюсь реализовать какой-то синтаксический анализ сообщений на сервере.

В настоящее время сообщение выглядит так:

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

Другие решения

Просто сериализуйте данные http://en.wikipedia.org/wiki/Serialization

и затем проверьте, что смещения действительны.

-2

По вопросам рекламы [email protected]