2010-01-04 2 views
0

Я в настоящее время конвертирую приложение нашей базы данных с VB на ASP.NET. Это в значительной степени мое первое приложение ASP.NET, и у меня возник вопрос о безопасности. Я хочу, чтобы некоторые пользователи имели возможность добавлять или редактировать данные, в то время как другие пользователи могут просматривать и распечатывать отчеты. Теперь, насколько я понимаю, в ASP.NET я могу использовать аутентификацию на основе форм, чтобы ограничить доступ к определенным страницам, но то, что я действительно хотел бы сделать, это использовать одну и ту же веб-страницу для не только просмотра данных, но и редактирования он (с использованием сетки). Я не вижу, как это сделать, используя проверку подлинности на основе форм, не имея отдельных (но похожих) веб-страниц в разных папках, каждый со своим уровнем безопасности.Безопасность ASP.NET

Возможно, я всегда мог использовать одну и ту же веб-страницу, а затем проверить роли пользователей, чтобы определить, следует ли мне активировать кнопку «изменить» или нет. Это хорошая (и общая) практика программирования?

Благодаря

ответ

1

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

1

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

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

0

Я бы реализовать свой собственный пользовательский RoleProvider (MSDN Article). И тогда у вас разные роли, которые описывают различные уровни доступа в вашем приложении, и, как и в случае с blowdart, проверяют, когда кнопки, панели подвергаются различной, независимо от того, имеет ли пользователь доступ к этому ресурсу или нет.

Могу ли я рекомендовать использовать мониторинг SQL Profiler (или аналогичный) при тестировании страницы, если вы используете базу данных? Вы будете удивлены количеством звонков, которые получает db для кажущейся тривиальной загрузки страницы.

Кроме того, проверьте настройки безопасности в ASP.NET. Стоит взглянуть.

Cheers.

Смежные вопросы