Итак, как отмечают другие, это плохая идея, вам не следует встраивать дыры в вашу систему авторизации. На самом деле авторизация вообще не должна происходить на страницах, а в модулях Http, которые просматривают запрос до того, как страница его обработает.
Чтобы конкретно ответить на вопрос, если вы не используете ViewState и не устанавливаете значение ViewStateUserKey, которое является уникальным для вашего аутентифицированного пользователя, тогда легко заставить вашу систему думать, что IsPostback верен, когда это не так. Он проверяет поля viewstate и event, и viewstate можно подделать. Даже если он зашифрован с помощью машинного ключа, этого недостаточно, поскольку злоумышленник может сам зайти на страницу, скопировать зашифрованное состояние просмотра и использовать его в своей злонамеренной атаке.
В обзоре рассмотрите, как обычно выполняется аутентификация в системе, и используйте что-нибудь с полки, а не свернутое вручную.
* РЕДАКТИРОВАТЬ *
Длинный ответ: когда вы говорите о безопасности, вы хотите разделить ее на угрозы и перечислить их. Как только вы поймете свои угрозы, вы сможете определить свой риск от этих угроз. Если у вас есть угрозы и риск, вы можете определить, стоит ли смягчать угрозу, и как это сделать. Например, многие люди носят ремни безопасности, потому что несчастные случаи являются обычным явлением, но мы ничего не делаем, чтобы защитить себя от вторжения инопланетян.
Вы, похоже, обеспокоены следующими угрозами:
- Неаутентифицированные пользователи, получающие доступ к вашему
сайт
- Какой-то пользователь, который аутентифицирован, но
не имеет требуемой привилегии
видя некоторую часть вашей страницы
- Подделка межсайтовых запросов
Чтобы смягчить первую угрозу, посмотрите на стандартные готовые компоненты для выполнения аутентификации, такие как FormsAuthenticationModule, который является частью Аутентификации с помощью форм. Эти компоненты встроены в ASP.Net и хорошо разработаны.
Как только пользователь будет должным образом аутентифицирован в вашем приложении, чтобы определить, имеют ли они определенные привилегии, посмотрите на Role Based Authorizaton и RoleManagerModule. Это даст вам возможность связать набор ролей с каждым удостоверением, которое было авторизовано с помощью проверки подлинности с помощью форм.
Наконец, вы, возможно, ничего не знаете, но наткнулись на другую проблему безопасности, которая является злонамеренным пользователем и может убедить авторизованного пользователя вашего приложения, находящегося в другом месте в Интернете, вызвать POST на вашей странице. Злоумышленник может создать скрытую форму на другой веб-странице и использовать JavaScript для отправки ее на свою веб-страницу. Если авторизованный пользователь уже вошел в систему, то любое действие, которое должно было произойти на странице, будет выполнено как жертва, но все параметры POST контролируются злоумышленником (который написал код для формы и ее значений).
Чтобы обезопасить себя от этого, проще всего использовать значение ViewStateUserKey, о котором я упоминал ранее, и убедиться, что используется либо EnableViewStateMAC, либо ViewStateEncryption. Шифрование является предпочтительным, так как HMAC будет только следить за тем, чтобы злоумышленник не мог вмешаться в состояние просмотра, но его содержимое все еще можно восстановить. Шифрование обеспечивает конфиденциальность и целостность.