Co każdy robi, aby poradzić sobie z zabezpieczeniami (wyszukiwaniem i modyfikacją) poszczególnych rekordów w aplikacji ASP.NET MVC? Ta aplikacja ma warstwę Service/Business i warstwę Data Access, które są całkowicie oddzielone od interfejsu WWW. Używam już dostawców członkostwa i ról do obsługi uwierzytelniania i autoryzacji dla określonych obszarów/funkcji w mojej aplikacji, ale teraz muszę zabezpieczyć poszczególne rekordy.Zabezpieczenia rekordu/poziomu obiektu w aplikacji ASP.NET MVC
Na przykład powiedz, że Bob może tworzyć i edytować własne zapisy FooBar. Chcę zapewnić, że inni użytkownicy nie będą mogli przeglądać ani edytować wpisów Boba. Chcę chronić przed manipulowaniem adresami URL i/lub błędami w programowaniu. Możemy również chcieć umożliwić Bobowi udostępnianie swoich FooBarów innym użytkownikom, pozwalając im przeglądać, ale nie edytować jego zapisów.
Istnieje kilka podejść I mają pochodzić z:
- Czy kontrole bezpieczeństwa w warstwie dostępu do danych bezpośrednio w wyszukiwawczych i modyfikacja zapytaniami.
- Sprawdź zabezpieczenia w warstwie usług, wykonując dodatkowe zapytania bezpieczeństwa przed kontynuowaniem logiki biznesowej.
- Utwórz warstwę zabezpieczeń istniejącą między interfejsem użytkownika a warstwą usługi. Interfejs użytkownika będzie wykonywać wszystkie żądania za pośrednictwem warstwy zabezpieczeń.
- Stosuj programowanie aspektowe (AOP). Twórz aspekty bezpieczeństwa i dekoruj metody warstw serwisowych za pomocą atrybutów bezpieczeństwa.
Zrobiłem zabezpieczenia w warstwie dostępu do danych (w zapytaniach) w poprzednich projektach, i zawsze zmienia się w bałagan. Chciałbym wiedzieć, co robią inni i jakie są ramy, których używasz, aby ci pomóc (ramy AOP.)