Почему DotNetNuke отключали проверку?

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

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

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

5
задан Troy Hunt 9 March 2010 в 21:03
поделиться

2 ответа

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

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

4
ответ дан 14 December 2019 в 04:36
поделиться

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

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

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

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

4
ответ дан 14 December 2019 в 04:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: