Как наиболее легко предотвратить изменение состояния элементов управления на клиенте? - PullRequest
1 голос
/ 09 июля 2010

То, чего я пытаюсь добиться, - это в основном предотвратить изменение состояния элементов управления моего сервера на стороне клиента.

Например, допустим, у меня есть бизнес-веб-приложения, которые показывают некоторые данные только для чтения обычным пользователям, но позволяют администратору редактировать данные. В этом случае я использую обычные серверные элементы управления ASP.NET, но отключаю их для обычного пользователя (enabled = false). Проблема, с которой я столкнулся, заключается в том, что любой опытный пользователь может изменить отключенный элемент управления на клиенте с помощью короткого кода JavaScript и установить флажок предположительно отключенного и непроверенного.

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

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

Ответы [ 4 ]

2 голосов
/ 09 июля 2010

Я бы сделал двойную проверку на стороне сервера.

Нет гарантии, что запрос всегда будет поступать с вашей (неизмененной) страницы.Любой может создать HTTP-запрос, который имитирует все, что делает ваш постбэк.

0 голосов
/ 10 июля 2010

Свойство Enabled флажка останется ложным даже после несанкционированного постбэка. Возможно, вы могли бы использовать это каким-то образом?

0 голосов
/ 09 июля 2010

мои 2 цента по твоей проблеме.Я бы предпочел использовать вид формы / подробный вид, если страница просмотра и редактирования находятся на одной и той же странице.

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

http://quickstarts.asp.net/QuickStartv20/aspnet/doc/ctrlref/data/detailsview.aspx

http://quickstarts.asp.net/QuickStartv20/aspnet/samples/data/GridViewMasterDetailsInsert_vb.aspx

0 голосов
/ 09 июля 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...