Как реализовать Переполнение стека, “действительно ли Вы - человеческая” функция?

На этом сайте, если Вы делаете слишком много щелчков или добавлять комментарии слишком быстро или что-то как этот, что Вы перенаправляетесь к, "Вы человеческий" экран. Кто-либо знает, как сделать что-то подобное?

18
задан Omu 5 March 2010 в 21:06
поделиться

7 ответов

Вот очень хороший Captcha Control для asp.net, который вам в первую очередь понадобится

http://www.codeproject.com/KB/custom-controls/CaptchaControl.aspx

Тогда вы можете использовать его вместе с этой идеей, чтобы попытаться найти dos-атаки

http://weblogs.asp.net/omarzabir/archive/2007/10/16/prevent-denial-of-service -dos-attack-in-your-web-application.aspx

остерегайтесь ошибки в этом коде в строке if (context.Request.Browser.Crawler) return false ;, он должен вернуть true или полностью удалить его для уверенности.

и сделайте его своей композицией для кликов или представлений.

Если пользователь делает слишком много кликов за период времени или много отправляет, то вы просто открываете capthaControl, и если кликов слишком много, активируйте действие dos. Таким образом, у вас есть 2 решения в одном, предотвращение атак Dos, с одновременным вводом капчи.

Я сделал что-то похожее на себя, но я изменил исходный код обоих, чтобы удовлетворить свои потребности.

Еще одна интересная ссылка на другой код для атаки dos.

http://madskristensen.net/post/Block-DoS-attacks-easily-in-ASPNET.aspx

Надеюсь, это вам поможет.

3
ответ дан 30 November 2019 в 09:03
поделиться

Это почти наверняка эвристика, которая пытается «угадать», что пользователь представляет собой некую форму автоматизированного процесса, а не человека, например:

  • Более чем «x» запросов на выполнение одного и того же действия подряд
  • Больше, чем «x» действий за «y» период времени

Обычно значения «x» и «y» формулируются так, что «реальный человек» вряд ли сделает, например :

  • Редактирование одного и того же ответа 5 раз подряд
  • Голосование против 10 вопросов в течение 1 минуты

После того, как у вас есть набор правил, вы можете реализовать некоторый код, который проверяет их в начале каждого запроса будь то метод, который вызывается в Page_Load, что-то на вашей главной странице, что-то в конвейере asp.net, это самый простой момент! ;)

10
ответ дан 30 November 2019 в 09:03
поделиться

Предположим ...

Напишите обработчик HTTP, который записывает запросы и сохраняет их в сеансе.

При поступлении нового запроса проверьте, сколько запросов хранится (и срок действия старых).

Если количество запросов за последние несколько минут превышает заданный порог, перенаправить пользователя.

Если вы делаете это в ASP.NET, вы можете выполнить эту проверку на главной странице сайта (или написать IHttpHandler ).

Если вы используете платформу MVC, вы можете написать базовый контроллер, который будет выполнять эту проверку для каждого действия.

Используя rails, вы можете написать фильтр before_request .

С asp.net MVC вы можете написать атрибут [ActionFilterAttribute]

2
ответ дан 30 November 2019 в 09:03
поделиться

Я бы также проверил заголовок user agent в запросе - если он не похож на популярный браузер (или пуст), то выведите страницу "Вы человек?".

-2
ответ дан 30 November 2019 в 09:03
поделиться

просто проверьте, сколько хитов / минут вы получаете с определенного ip или сессии или чего угодно, и решите, какой порог вы предпочитаете, и все готово

.
1
ответ дан 30 November 2019 в 09:03
поделиться
3
ответ дан 30 November 2019 в 09:03
поделиться

У вас должен быть сеанс для отслеживания активности пользователя.

В сеансе у вас может быть счетчик для комментирования и публикации, например:

(псевдокод вместо 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/

2
ответ дан 30 November 2019 в 09:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: