Как остановить ботов от публикации и создания исключений - PullRequest
5 голосов
/ 21 марта 2011

У меня есть форма, где любой может заполнить отзыв о чем-то, и эта форма не находится внутри области входа.

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

Вчера я попытался изменить названия текстовых полей, а также добавил «приманку». Но это та же проблема, что и с капчей, исключение происходит до того, как что-либо действительно будет опубликовано в коде.

Должен ли я действительно установить ValidateRequest = "false", чтобы позволить боту сделать шаг вперед и, возможно, прекратить делать запросы?

Все идеи очень ценятся.

Ответы [ 2 ]

1 голос
/ 21 марта 2011

Вы можете либо:

  • Установить ValidateRequest = "false" на странице, открывая возможность XSS.
  • Переопределить Page_Error (), а затем перехватить исключение иразберитесь с этим по-своему.

Я думаю, вам, возможно, придется объединить 2, чтобы заставить это работать.

protected void Page_Error(object sender, EventArgs e)
{
  Exception oops = Server.GetLastError();

  if(oops.GetBaseException() is System.Web.HttpRequestValidationException) 
  {
    System.Diagnostics.Debug.Assert(false);
  }
}
0 голосов
/ 12 апреля 2011

Может, бот довольно глупый.Вместо того, чтобы иметь эту форму поля в HTML зашифровать его с помощью JavaScript.Возможно, это достаточно запутает бота.

...