Чтобы предотвратить такую проблему, можно использовать решение, предоставляемое IIS 7.0, которое называется Модуль динамических IP-ограничений (DIPR) .
Основные функции динамического ограничения IP (DIPR):
Блокировка IP-адресов на основе количества одновременных запросов
Блокировка IP-адреса на основе количества запросов за период времени
Чтобы получить эту услугу на веб-сайте Azure, необходимо настроить некоторые изменения в файле web.config
вашего сайта.
1. Фрагмент кода для обработки одновременных запросов
<system.webServer>
<security>
<dynamicIpSecurity>
<denyByConcurrentRequests enabled="true" maxConcurrentRequests="10"/>
</dynamicIpSecurity>
</security>
</system.webServer>
Установите для включенного свойства denyByConcurrentRequests
(в узле dynamicIpSecurity
) значение true. Если клиент превысит количество одновременных запросов, его IP будет заблокирован временно для дальнейшего запроса на короткий период времени.
2. Код фрагмента для обработки maxRequests в течение указанного периода времени:
<system.webServer>
<security>
<dynamicIpSecurity>
<denyByRequestRate enabled="true" maxRequests="15" requestIntervalInMilliseconds="5000"/>
</dynamicIpSecurity>
</security>
</system.webServer>
Установить включенное свойство denyByRequestRate
. Свойство maxRequests
определяет количество запросов, которые данный IP-адрес клиента может отправить на ваш сайт, а requestIntervalInMilliseconds
определяет временные рамки.
IIS автоматически начнет блокировать запросы с IP-адресов, когда клиент превысит указанное вами правило . Таким образом, в соответствии со значением, которое я установил для клиента, делающего более 15 запросов в течение 5 секунд, он будет временно заблокирован.
Вы можете обратиться к , чтобы настроить динамические ограничения IP-адресов в веб-сайтах Windows Azure , если у вас есть какие-либо сомнения.