2012-02-01 4 views
4

Можно создать дубликат:
purpose for <pages enableEventValidation=“false”>EnableEventValidation = "false" - хорошая идея?

У меня есть еще один связанный с этим вопрос без ответа еще: my stackoverflow question

Однако моя проблема уходит, если я изложу EnableEventValidation="false".

Теперь мой вопрос: действительно ли это действительно важно, если я установил это на MasterPage?

Во всех ссылках на установку этого параметра на номер false никто не вызывает проблему безопасности, отличную от MSDN.

Любые предложения?

+0

Аналогичный вопрос: http://stackoverflow.com/questions/1503630/purpose-for-pages-enableeventvalidation-false – Zachary

ответ

14

Удаление проверки событий уменьшает количество контрольных точек безопасности в приложении. Вопрос в том, имеет ли это значение?

Простой пример, где это имеет значение

пользователю предоставляется 2 варианта, потому что они являются членами «Серебро» на сайте. Они создают запрос, который фактически подает вариант № 3 и получает привилегию «Золото», за которую они не платили.

примера, где он, вероятно, не имеет значения

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

Предлагаю ли вы, чтобы ваша база данных провела проверку? конечно нет. Но в этом примере никакого вреда не делается.

Если у вас есть сомнения, предположите, что это делает, и что кто-то найдет способ разорвать ваш код.

Идеальный подход

Во-первых, определить, почему проверка события взлома. По моему опыту, это обычно связано с неправильным использованием дизайна страницы/управления. За 15 лет разработки .NET я только однажды видел, что проверка событий нарушает дизайн элемента управления. Этот контроль был настолько сложным, что его в конечном счете пришлось переписать. Другими словами, если проверка событий вызывает проблему для вашего контроля, вы должны, вероятно, пересмотреть дизайн элемента управления, а не отключить проверку событий.

И наконец:

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

+0

Ваш ответ на самом деле помог мне решить, что делать? Благодаря! – PraveenLearnsEveryday

+0

Предполагаемый эксплойт о привилегии «Золото» должен всегда терпеть неудачу на стороне сервера. Не проверка входных значений на стороне сервера очень плохой дизайн. – Marcel

+4

@Marcel - следовательно, последний абзац выделен жирным шрифтом: «Определите и подтвердите свои критические бизнес-правила на стороне сервера и независимо от ASP.NET». Тем не менее, проверка событий * является * серверным механизмом. Лучше оставить его включенным, чем вообще ничего не делать. –

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