2014-01-09 3 views
1

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

Я хотел бы спросить, какие варианты здесь, чтобы исправить это. Конечно, мы можем реализовать проверку на стороне веб-сервера для каждого поля и, например, бросить какое-то исключение и отклонить, если ввод длиннее некоторого предопределенного значения. Но мне любопытно, есть ли другие способы, как это сделать. Возможно, какая-то конфигурация в web.config или на уровне сервера IIS, некоторый глобальный обработчик и т. Д.

+0

что делает и хочет. Вы хотите ограничить длину символов элементов ввода? – Raghubar

+0

Да, я хотел бы ограничить количество символов, которые пользователь может ввести до некоторого максимума. Обычно пользователь не вводит больше, например, 100 символов в поле одной формы. Поскольку поиск говорит, что пользователь не должен иметь возможность вводить большой объем данных, например, более 1 тыс. Символов в поле ввода. Я ищу варианты, как выполнить проверку на стороне сервера. В идеале - по конфигурации или по каким-то общим для всех остальных полей. – mybrave

+0

u может установить свойство maxlength = "30" элементов управления. – Raghubar

ответ

1

Отъезд maxRequestLength настройка в web.config.

Задает предел порога буферизации входного потока в КБ. Это ограничение можно использовать для предотвращения атак типа «отказ в обслуживании», вызванных, например, пользователями, отправляющими большие файлы на сервер. Значение по умолчанию - 4096 (4 МБ).

<configuration> 
    <system.web> 
     <httpRuntime maxRequestLength="1024" /> 
    </system.web> 
</configuration> 

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

Если вы хотите, чтобы применить только к определенным разделам вашего приложения, вы можете добавить переопределение с помощью <location> элемента:

<location path="Attachments/Upload"> 
    <system.web> 
     <httpRuntime maxRequestLength="20480" /> 
    </system.web> 
</location> 
+0

Благодарим за предложение, но я все же хочу провести некоторое тестирование, но изменения на этом уровне, скорее всего, невозможны, так как приложение поддерживает загрузку вложений, и это ключевые настройки, позволяющие это сделать. – mybrave

+0

Ответ обновлен, как вы можете настроить его для этого сценария. – SilverlightFox

+0

Спасибо - только что предложил предложенный конфигуратор, и он выглядит перспективным. – mybrave

Смежные вопросы