На этом сайте, если Вы делаете слишком много щелчков или добавлять комментарии слишком быстро или что-то как этот, что Вы перенаправляетесь к, "Вы человеческий" экран. Кто-либо знает, как сделать что-то подобное?
Вот очень хороший Captcha Control для asp.net, который вам в первую очередь понадобится
http://www.codeproject.com/KB/custom-controls/CaptchaControl.aspx
Тогда вы можете использовать его вместе с этой идеей, чтобы попытаться найти dos-атаки
остерегайтесь ошибки в этом коде в строке if (context.Request.Browser.Crawler) return false ;, он должен вернуть true или полностью удалить его для уверенности.
и сделайте его своей композицией для кликов или представлений.
Если пользователь делает слишком много кликов за период времени или много отправляет, то вы просто открываете capthaControl, и если кликов слишком много, активируйте действие dos. Таким образом, у вас есть 2 решения в одном, предотвращение атак Dos, с одновременным вводом капчи.
Я сделал что-то похожее на себя, но я изменил исходный код обоих, чтобы удовлетворить свои потребности.
Еще одна интересная ссылка на другой код для атаки dos.
http://madskristensen.net/post/Block-DoS-attacks-easily-in-ASPNET.aspx
Надеюсь, это вам поможет.
Это почти наверняка эвристика, которая пытается «угадать», что пользователь представляет собой некую форму автоматизированного процесса, а не человека, например:
Обычно значения «x» и «y» формулируются так, что «реальный человек» вряд ли сделает, например :
После того, как у вас есть набор правил, вы можете реализовать некоторый код, который проверяет их в начале каждого запроса будь то метод, который вызывается в Page_Load, что-то на вашей главной странице, что-то в конвейере asp.net, это самый простой момент! ;)
Предположим ...
Напишите обработчик HTTP, который записывает запросы и сохраняет их в сеансе.
При поступлении нового запроса проверьте, сколько запросов хранится (и срок действия старых).
Если количество запросов за последние несколько минут превышает заданный порог, перенаправить пользователя.
Если вы делаете это в ASP.NET, вы можете выполнить эту проверку на главной странице сайта (или написать IHttpHandler
).
Если вы используете платформу MVC, вы можете написать базовый контроллер, который будет выполнять эту проверку для каждого действия.
Используя rails, вы можете написать фильтр before_request
.
С asp.net MVC вы можете написать атрибут [ActionFilterAttribute]
Я бы также проверил заголовок user agent в запросе - если он не похож на популярный браузер (или пуст), то выведите страницу "Вы человек?".
просто проверьте, сколько хитов / минут вы получаете с определенного ip или сессии или чего угодно, и решите, какой порог вы предпочитаете, и все готово
.У вас должен быть сеанс для отслеживания активности пользователя.
В сеансе у вас может быть счетчик для комментирования и публикации, например:
(псевдокод вместо C #, извините :)
if (post_event) {
posts_during_1_minute_interval++;
if (time_now-reference_time > 1_minute) {
reference_time = time_now;
posts_during_1_minute_interval=0;
}
}
...
if (posts_during_1_minute_interval > 10) redirect("/are-you-human.htm");
где на странице are-you-human.htm можно найти recaptcha , как и здесь, на StcakOverflow.com
, см. также: http://blog.stackoverflow.com/2009/07/are-you-a-human-being/