Защита редактируемых ASP.NET страницы при использовании строки запроса для передачи pageId

#.net #asp.net #security #asp.net-membership

#.net #asp.net #Безопасность #asp.net-членство

Вопрос:

Использование ASP.NET Поставщик членства…

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

Например, URL-адрес:

 www.example.com/editPage.aspx?pageId=12
  

Если доступ пользователей к определенной странице связан с их уникальным идентификатором (GUID) с таблицей, в которой хранятся страницы, к которым они могут получить доступ.

 tblUsers.UserId --> tblPagePermissions.PageID
  

Чтобы люди не могли просто изменять идентификатор страницы в URL, лучше всего просто проверять при загрузке страницы, чтобы узнать, есть ли у них доступ?

Есть ли лучший способ, чем просто поиск текущего идентификатора пользователя, вошедшего в систему, в базе данных в Page_Load() и сверка с таблицей разрешений.

Это скорее общий вопрос, а не связанный с тем, над чем я работаю в данный момент.

Где лучше всего использовать код, который защищает эти страницы, является ли проверка в Page_Load() в editPage.aspx наиболее подходящей, или есть более эффективный способ сделать это?

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

Page_Load(), HttpModule, где-то еще?

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

Ответ №1:

обычно я делаю это, создавая класс pagebase и делая все защищенные страницы наследуемыми от него. Затем я обрабатываю page_load в базе страниц и выполняю проверку там.

Ответ №2:

Независимо от используемых вами методов, вам всегда нужно проверять входные данные, которые вы получаете от клиента.

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