Обработка безопасности на уровне записи / объекта в приложении ASP.NET MVC

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

Например, скажем, Боб может создавать и редактировать свои собственные записи FooBar. Я хочу убедиться, что другие пользователи не могут просматривать или редактировать записи Боба. Я хочу защитить себя от манипуляций с URL-адресами и / или ошибок программирования. Мы также можем позволить Бобу делиться своими FooBars с другими пользователями, позволяя им просматривать, но не редактировать его записи.

Я придумал несколько подходов:

  • Выполняйте проверки безопасности на уровне доступа к данным, непосредственно в запросах на извлечение и изменение.
  • Проверьте безопасность на уровне сервиса, выполнив дополнительные запросы безопасности, прежде чем продолжить бизнес-логику.
  • Создайте уровень безопасности, который существует между пользовательским интерфейсом и уровнем сервиса. Пользовательский интерфейс будет делать все запросы через уровень безопасности.
  • Используйте аспектно-ориентированное программирование (АОП). Создайте аспекты безопасности и украсьте методы уровня сервиса атрибутами безопасности.

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

15
задан Sigray 23 November 2011 в 19:29
поделиться