Я пишу приложение Asp.Net WebForms, где я называю страницу редактирования передачей данных о записи, подлежащей редактированию с использованием параметров строки запроса в URL.
Как:
http://myapp.path/QuoteItemEdit.aspx?PK=1234&DeviceType=12&Mode=Edit
На предыдущей странице приложения я предоставил пользователю GridView экранированных элементов, которые он может редактировать на основе привилегий своей учетной записи, и я вызываю страницу редактирования с указанным выше списком параметров, и страница знает, что делать , Я НЕ выполняю никаких дополнительных проверок на целевой странице, чтобы проверить, имеет ли пользователь доступ к переданному значению записи PK, как я планировал полагаться на предыдущую страницу, чтобы отфильтровать список, и все будет в порядке.
Однако очевидно, что теперь пользователь может ввести URL-адрес другого ПК и получить доступ к редактированию этой записи. (Или он может иметь доступ к Mode = View, но не Mode = Edit или Mode = Delete. По сути, я надеялся избежать проверки записи и прав доступа на целевой странице.
Я также протестировал тот же рабочий процесс, используя переменные Session для хранения PK, DeviceType и Mode перед вызовом целевой страницы и последующим чтением их из Session на целевой странице. Таким образом, здесь не задействованы параметры строки запроса. Это отнимает у пользователя контроль.
Итак, мне нужны отзывы об этих двух подходах, чтобы я выбрал общепринятый / стандартный способ решения этой проблемы, так как это выглядит как очень распространенный шаблон проектирования приложений для приложений CRUD.