Почему в DotNetNuke проверка отключена? - PullRequest
5 голосов
/ 25 февраля 2010

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

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

Обновление: дальнейшие мысли по этому вопросу в Запрос проверки, DotNetNuke и дизайн утопия

Ответы [ 2 ]

4 голосов
/ 26 февраля 2010

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

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

4 голосов
/ 25 февраля 2010

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

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

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

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

...