В контексте веб-сайта asp.net, какой самый эффективный способ проверить, имеет ли пользователь доступ к определенной записи? - PullRequest
0 голосов
/ 26 мая 2010

У меня есть веб-страница, которую вы передаете в параметре id (через строку запроса), который затем используется для извлечения данных из базы данных. Обычно пользователь переходит на эту страницу с другой страницы, на которой перечислены только те записи, к которым у него есть доступ. Однако, если они перейдут непосредственно на страницу, введя URL-адрес в адресной строке, они смогут эффективно просматривать любую запись, которая им нравится.

Например. Если они введут что-то вроде http://localhost/TestSite/ClientAdmin/ManageLocation.aspx?LocationID=5 в свою адресную строку, они смогут получить доступ к записи базы данных с идентификатором местоположения, равным пяти, даже если у них не должно быть доступа к ней.

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

Спасибо.

Ответы [ 2 ]

0 голосов
/ 26 мая 2010

Вместо того, чтобы делать дополнительную проверку при загрузке страницы, вы можете использовать INNER JOIN и фактически ничего не возвращать, если прав доступа нет.

Если все индексы есть, это не должно стоить очень дорого.

0 голосов
/ 26 мая 2010

Вы можете использовать Page.Request.UrlReferrer, чтобы увидеть, откуда они пришли, но это не совсем безопасный способ достижения этого.

Если у каждого пользователя есть «свои» данные, к которым другие пользователи не имеют доступа, то может показаться, что вы захотите взглянуть на правильную многопользовательскую работу - хотя зачастую это делается для каждой организации, а не для отдельной организации. пользователь:

http://en.wikipedia.org/wiki/Multitenancy

...