2009-11-24 1 views
4

В WCF maxConcurrentSessions по умолчанию 10, поэтому ограничение сервера на наличие более 10 открытых TCP-подключений к нему.Почему maxConcurrentSessions по умолчанию имеет такое низкое значение? И что такое безопасная ценность?

Почему это так?

Является ли безопасным для меня просто установить его на очень высокое значение для сервера, который имеет «несколько» (или двух) клиентов, но должен поддерживать открытость netTcpBinding для каждого клиента из-за отправки событий на клиенты?

ответ

11

Предполагаю, что ваш режим экземпляра за сеанс. Вы можете установить это значение в Int32.Max, если требуется. Как бы то ни было, хорошо понять концепцию дросселирования WCF подробно.

Значение очень низкое, чтобы предотвратить атаки DOS, поскольку команда WCF хочет, чтобы службы были «безопасными по умолчанию».

Вот хорошее чтение, взгляните на this blog post here

Обратите внимание, что эти значения являются чрезвычайно низким ... намного ниже, чем у многих людей хотел им быть. Мысль команда WCF заключалась в том, что они хотели, чтобы WCF был «безопасным по умолчанию», а уменьшили смену DOS-атак, являющихся , запущенными против вашего сервиса. Эта идея может показаться замечательной, но в практике это вызывает серьезные проблемы.

В самом деле, вы почти наверняка побежал в эти вопросы, если вы используете связывания как WsHttpBinding, что поддерживает сеансы. Почему это? по умолчанию количество сеансов в 10, это , поначалу означает, что 10 пользователей могут получить доступ к вашему сервису на том же времени. Тем не менее, сеансы WCF - это не веб-сеансы. В отличие от веб-сессий, , которые управляются сервером и обычно отслеживаются с помощью HTTP печенье, WCF сессии инициируются прокси клиента и не закончится, пока они тайм-аут, или клиент посылает запрос явную отказаться от сессия. Вот что, поскольку каждый прокси-сервер инициирует собственный сеанс , пользователь, который делает несколько запросов сразу, может потенциально быть , используя несколько сеансов одновременно. Теперь вы можете подумать, что вы в безопасности, если у у вас нет многопоточного кода , который делает такие вещи ... но это не совсем так. Поскольку пользователь должен сделать явный запрос к серверу, чтобы отменить его сеанс, возможно , что вы оставите сеансы случайно.Люди, которые были работы с ASMX служб, часто не понимают, что им нужно, чтобы закрыть их прокси-объекты, а те немногие, что действительно понимают, что объекты должны быть закрыты часто делают ошибку рассматривать их как одноразовые предметы, , что приводит к тому, что сеансы остаются открытыми. Имея в виду, что по умолчанию предел сессии 10, это означает, что если сделать десять звонков в службу использованием WsHttpBinding в относительно короткий промежуток времени, вы можете в конечном итоге блокировку вашей службы до тех пор, сеансов не истекает ,

Решение, сделанное здесь командой WCF , может вызвать недоумение. Для того, чтобы атаковать злоумышленниками , для совершения DOS-атак в отношении ваших услуг, они сделали это гораздо проще выполнить атаку DOS против вашего обслуживания. Нет больше вы нужны ресурсы, чтобы затопить сервер с запросами, так что он больше не может ответить, вы просто должны сделать несколько вызовов без явного требующего соединения, чтобы закрыть и максимума из подсчета сеансов. Если не установлено значение , это значение чрезвычайно велико, вы рискуете иметь сервер, отказывающийся от , принимать любые входящие соединения, , несмотря на то, что он охлаждает с нулевым использованием ЦП.

1

Вы можете установить это намного выше - до тех пор, пока у вашего сервера есть ресурсы для обработки запросов. По умолчанию оно равно 10, так как это легко победит любые атаки на отказ в обслуживании. Если у вас есть мощный сервер, посвященный этой единственной службе, вы можете установить ее на 10 000, если хотите. Для этого не существует волшебного номера - вам нужно сбалансировать спрос на одной стороне и ресурсы сервера на другом, и это максимальное количество одновременных сеансов помогает предотвратить расплавление!

+0

Отказ от использования вашего сервиса после установления 10 соединений - это интересный способ победить атаки на отказ в обслуживании ... Otoh, это хорошо для окружающей среды, так как серверный процессор будет оставаться довольно спокойным. –

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