2010-02-25 2 views
5

Может ли кто-нибудь пролить свет на то, почему DotNetNuke настроен с проверкой достоверности запроса и проверкой событий? Они оба находятся на уровне web.config для установки по умолчанию, которая, как представляется, является регрессивным подходом. Есть ли веские причины для этого и что такое функциональное воздействие на DotNetNuke, если они снова включены?Почему функция DotNetNuke отключена?

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

Обновление: дальнейшие мысли по этому вопросу в Request Validation, DotNetNuke and design utopia

ответ

4

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

Я бы предпочел, чтобы это было сделано на уровне страницы, где это необходимо. Глобальная валидация ни в коей мере не освобождает разработчика от проверки ввода в каждой точке, где она была захвачена, но я все еще поддерживаю, что эта функция является хорошей страховкой и ее отключение создает риск. Мне было бы очень интересно узнать, сколько сайтов DNN имеют уязвимости XSS в результате отсутствия глобальной проверки в сочетании с плохой практикой развития.

4

глобальной проверки всех входных плохая практика. Как и большинство приложений, DotNetNuke работает по принципу функции для проверки ввода.

Создание уязвимого кода сильно зависит от того, как используется пользовательский ввод. Например, SQL Injection и XSS полагаются на очень разные управляющие символы. SQL-инъекция может быть вызвана не фильтром одного из трех символов '"\, где, как и большинство XSS, вызвано не фильтром <>. SQL Injection может быть также вызвано не с помощью управляющих символов, например, этот код будет уязвим для SQL инъекций, поскольку он не имеет иметь кавычки вокруг ID:

SqlCommand("SELECT username FROM users where id="+id) 

Глобальный проверки входных данных, таких как magic_quotes_gpc под PHP также будет сбой, чтобы предотвратить этот тип атаки, и это одна из причин его удаления в PHP6.

+2

Вы говорите, что глобальная проверка сама по себе плоха или только если она используется вместо явной проверки ввода в каждом случае? Я не понимаю, как использовать его в качестве дополнительной защитной сетки. Конечно, Microsoft считала, что это стоит того. –

+0

@Troy Hunt Да, глобальная проверка ввода - это плохо. Это делает программистов ленивыми, и он никогда не сможет предотвратить все уязвимости. Хотя я признаю, что magic_quotes_gpc предотвратит большинство SQL-инъекций. Проблема в том, что * most * недостаточно хорош, для получения Pnw3d требуется только 1 уязвимость. Программисты должны нести ответственность за созданные ими уязвимости и должны знать, как их исправлять. – rook

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