wiem, że mogę ograniczyć dostęp do 3 aplikacji ASP.NET MVC za pomocą znacznika autoryzacji w web.configatrybut Autoryzuj vs węzła zezwolenia w web.config
<authentication mode="Windows"></authentication> <roleManager enabled="true" defaultProvider="AspNetWindowsTokenRoleProvider" /> <authorization> <allow roles="MyDomain\MyGroup" /> <deny users="*" /> <deny users="?" /> </authorization>
lub zdobienia klasę bazową kontroler ze związkiem Atrybut [Autoryzuj()] (lub nawet z niestandardowym atrybutem autoryzacji)
[AdminOnly]
public class BaseController : Controller{}
Pytanie brzmi: czy są to rozwiązania alternatywne i równoważne? Czy zawsze powinienem stosować jedno podejście, a nie drugie? Których elementów należy pamiętać?
Rozsądne. Proszę, pozwól mi zrozumieć lepiej: jeśli nie zamierzam używać żadnego tagu (tj. Ograniczając dostęp do całej aplikacji), dlaczego i jak zdefiniowanie autoryzacji w pliku web.config może być luką w zabezpieczeniach? –
@Arialdo Martini, w znaczniku lokalizacji określasz ścieżkę: na przykład możesz ograniczyć dostęp do '/ admin'. Ale w MVC masz trasy. Te trasy są zdefiniowane w Global.asax. Odzwierciedlają one kontrolerów i działania. Tak więc należy kontrolować twoich kontrolerów i działania, a nie jakieś nieistniejące wirtualne ścieżki. –
tak, jasne. Co się stanie, jeśli ** nie użyję ** żadnego tagu lokalizacji i po prostu ustawiam autoryzacje na ** całą ** aplikację? Mam na myśli, co jeśli używam dokładnie web.config zgłoszonego w pytaniu, które nie zgłasza żadnego adresu URL ani żadnej trasy? Czy to może oznaczać lukę bezpieczeństwa? –