2010-07-17 1 views
0

Сервер/клиентское приложение взаимодействует друг с другом с использованием форматированных XML-данных, используя TCP-соединение. Это потрясающе, так как мне не нужно беспокоиться о сериализации/десериализации сложных данных.Безопасность сетевой службы: размер сетевого сообщения должен быть известен?

Чтобы разрешить получение данных XML, я добавляю длину документа XML (в байтах) к данным, отправляемым по сетевому сокету; таким образом, приложение-получатель знает, сколько данных считывается, прежде чем он сможет десериализовать данные в формате XML.

Теперь я пытаюсь представить возможные дыры в безопасности на клиентском/серверном приложении, которое использует такую ​​структуру сообщений.

Помимо проблем, связанных с переносимыми данными, я считаю, что данные в формате XML защищают сервер от вредоносных сообщений. Не так ли? Если ответ верен, остается только вопрос о том, что произойдет, если вредоносный клиент отправит мне сообщения, объявляющие огромный размер сообщения (путем изменения целого числа, вставленного в начале сообщения).

Результат будет DOS, поскольку процесс простодушного сервера очень очень большое (юридическое) сообщение ...

можно избежать информации «размера сообщения»? Как я могу предотвратить атаку DOS?

+0

Недостаточно информации о вашем пользовательском протоколе. Вы не должны повторно изобретать wheal, SOAP лучше во всех отношениях. – rook

ответ

0

Сетевой уровень не позволит вам считывать больше данных, чем доступно - вызовы recv блокируются. Так что да, в зависимости от вашей реализации это может привести к DOS.

Используйте select если вы не делаете уже. Вы можете передать список клиентов в select, и функция вернет клиента, готового для получения. Таким образом, злоумышленники не могут блокировать сервер.

+0

Сервер является многопоточным и уже использует неблокирующие сокеты. Проблема в основном связана с тем, что сервер должен кэшировать полученные данные до «понимания» сетевых сообщений. Я пытаюсь понять, существует ли лучший способ обработки слишком больших сообщений. – Luca

Смежные вопросы