Что делают все для защиты (извлечения и изменения) отдельных записей в приложении ASP.NET MVC?Это приложение имеет уровень обслуживания / бизнеса и уровень доступа к данным, которые полностью отделены от пользовательского веб-интерфейса.Я уже использую поставщиков членства и ролей для обработки аутентификации и авторизации для определенных областей / функций в моем приложении, но теперь мне нужно защитить отдельные записи.
Например, скажем, Боб может создавать и редактировать свой собственный FooBarзаписей.Я хочу убедиться, что другие пользователи не могут просматривать или редактировать записи Боба.Я хочу защититься от манипулирования URL и / или ошибок программирования.Мы также можем захотеть разрешить Бобу делиться своими FooBars с другими пользователями, позволяя им просматривать, но не редактировать свои записи.
Существует несколько подходов, которые я предложил:
- Выполните проверки безопасности на уровне доступа к данным, непосредственно в запросах на получение и изменение.
- Проверьте безопасность на уровне служб, выполнив дополнительные запросы безопасности, прежде чем переходить к бизнес-логике.
- СозданиеУровень безопасности, который существует между пользовательским интерфейсом и уровнем сервиса.Пользовательский интерфейс будет выполнять все запросы через уровень безопасности.
- Использовать аспектно-ориентированное программирование (AOP).Создайте аспекты безопасности и украсьте методы уровня Service атрибутами безопасности.
Я обеспечивал безопасность на уровне доступа к данным (в запросах) в предыдущих проектах, и он всегда превращается в беспорядок.Я хотел бы знать, что делают все остальные, и какие фреймворки вы используете, чтобы помочь вам (фреймворки AOP.)