System.Web.HttpRequestValidationException: потенциально опасное значение Request.Form было обнаружено у клиента у бота?

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

System.Web.HttpRequestValidationException: A potentially dangerous Request.Form value was detected from the client (ctl00$ContentPlaceHolder1$results_search="...967.hcpm, <a href="http://www....").

Эта ошибка происходит в течение дня, каждый день, который, кажется, исходит от бота, если смотреть на ошибку, кажется, что бот помещает html ahref ссылки в поле поиска и пытается выполнить поиск, что приводит к ошибке.

После поиска я вижу два способа, которыми мы можем справиться, либо использовать Jquery, либо включить validateRequest в false, а затем использовать htmlencode в коде за страницей. Кто-нибудь знает, будет ли код jquery работать на боте? Я не уверен, как это делает бот, если он нажимает на страницу и нажимает кнопку или отправляет запрос каким-то другим способом, так как нажатие кнопки означает, что обратная передача запускает поиск, мы используем POST, поэтому ничего не посылаем через url к странице поиска, страница просто возвращает к себе и в PostBack, когда поиск выполняется.

+3
12 дек. '12 в 15:21
источник поделиться
4 ответа

Одно из решений заключалось в том, чтобы записывать эти ошибки против IP и блокировать доступ на уровне приложений, если они представляют слишком много.

Это не бомбоубежище, но сократило количество, которое у нас было. однако он по-прежнему включает в себя разработку и обработку, но экономит ваше внимание на IIS.

Однако вы действительно можете сделать это. Они будут спамить вашу форму и блокировать IP-адрес - это только краткосрочное решение, они ударят вас по нескольким IP-адресам и т.д. Просто убедитесь, что ваша проверка жесткая, и вы не восприимчивы к таким вещам, как инъекции и игнорируете ее, это факт жизни в наши дни.

Мы регулярно попадаем так, особенно в таких местах, как Китай.

+2
12 дек. '12 в 15:29
источник

В файле web.config в тегах вставьте элемент httpRuntime с атрибутом requestValidationMode="2.0".

Пример:

<configuration>
<system.web>
<httpRuntime requestValidationMode="2.0" />
</system.web>
</configuration>
+7
05 июн. '13 в 9:22
источник

это сработало для меня. Я смог удалить ошибку, добавив в файл web.config:

<httpRuntime requestValidationMode="2.0" />

Весь код:

<httpRuntime requestValidationMode="2.0" maxRequestLength="102400" />
<compilation debug="true" strict="false" explicit="true" targetFramework="4.0">

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

+1
13 дек. '13 в 18:51
источник

Вы можете попробовать другое решение. Он перенаправляет вашу страницу на URL-адрес по умолчанию (пожалуйста, установите страницу по defaultRedirect=" ") всякий раз, когда возникают такие ошибки.

<system.web>
    <customErrors mode="On" defaultRedirect="~/Home/Index"/>
</system.web>

Таким образом, бот больше не сможет спамить ваш почтовый ящик или другие проблемы, которые он создает сейчас!

+1
21 янв. '13 в 9:33
источник

Посмотрите другие вопросы по меткам или Задайте вопрос