#.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:
Независимо от используемых вами методов, вам всегда нужно проверять входные данные, которые вы получаете от клиента.
Вам нужно будет проверять это каждый раз, когда они обращаются к странице.