Jestem trochę mylący z wzorcem URL w ochronie wiosny. Ponieważ w zabezpieczeniach http rdzeni serwletu, wzorce adresów URL /
i /*
służą do określania jednego lub więcej katalogów. /
jest używane dla jednego katalogu, a /*
jest używane z wielu katalogów. Ale w okresie wiosennym bezpieczeństwo wprowadzono także kod /**
, który jest głównym celem wzorców adresów URL w zabezpieczeniach.Bezpieczeństwo wiosenne: Różnica między/** i/* adresem URL w Spring-Security
Odpowiedz
Według dokumentacji Wiosna Bezpieczeństwa głównym celem /**
jest złapać-wszystkie symbole wieloznaczne:
W praktyce zaleca się, aby używać bezpieczeństwo metody w swojej warstwie usług, aby kontrolować dostęp do aplikacji i nie polegaj wyłącznie na ograniczeniach bezpieczeństwa zdefiniowanych na poziomie aplikacji WWW. Adresy URL ulegają zmianie i trudno jest uwzględnić wszystkie możliwe adresy URL, które może obsługiwać aplikacja, oraz sposób manipulowania żądaniami. Powinieneś spróbować ograniczyć się do korzystania z kilku prostych ścieżek do mrówek, które są łatwe do zrozumienia. Zawsze staraj się używać podejścia "odrzuć domyślnie", w którym jest zdefiniowany symbol wieloznaczny (/ ** lub **) i odmowa dostępu.
My również nie należy zapominać, że
Wzorce są zawsze oceniane w kolejności są zdefiniowane. Dlatego ważne jest, aby bardziej szczegółowe wzorce zostały zdefiniowane wyżej na liście niż mniej specyficzne wzory.
W ten sposób możemy mieć coś takiego:
<security:http pattern="/rest-service/**" authentication-manager-ref="authenticationManager" auto-config="false" access-decision-manager-ref="accessDecisionManager">
<security:intercept-url pattern="/rest-service/report/export/xml" access="AUTH_REPORT_EXPORTXML" />
<security:intercept-url pattern="/**" access="AUTH_SYSTEM_LOGIN" />
<security:http-basic />
</security:http>
co oznacza, że dla wszystkich żądań musimy władzę AUTH_SYSTEM_LOGIN, ale specjalnie dla/Rest-usługi/raport/export/xml użytkownik będzie musiał Uprawnienie AUTH_REPORT_EXPORTXML, ponieważ jest zdefiniowane powyżej. Jak oni też mówią, że lepiej nie polegać tylko na tym więzów bezpieczeństwa, co oznacza, że jest ona dobra również powielać tych metod usługowych z zabezpieczonej adnotacją jak ten:
@Secured("AUTH_REPORT_EXPORTXML")
W ogóle, jak rozumiem, nie ma różnicy między /*
i /**
z tą różnicą, że ostatnia przechwytuje wszystkie symbole wieloznaczne.
Różnica między/* &/** jest taka, że druga dopasowuje całe drzewo katalogów, w tym podkatalogi, gdzie tylko/* pasuje tylko na poziomie określonym w.
@Override
protected void configure(HttpSecurity http) throws Exception {
// ...
.antMatchers(HttpMethod.GET, "/**").permitAll
.antMatchers(HttpMethod.POST, "/*").permitAll
// ...
}
W tej konfiguracji każdy "Get" zapytanie będzie dozwolone, na przykład:
- /książka
- /książka/20
- /książka/20/autor
Wszystkie te adresy URL dopasowują tekst do wzorca "/ **".
Dozwolone adresy URL dla "Napisz":
- /rezerwacja
- /Magazyn
Urls powyżej meczu z "/ *"
- 1. Wiosenne bezpieczeństwo i niestandardowe uwierzytelnianie zewnętrzne
- 2. Bezpieczeństwo wiosenne: programowane logowanie
- 3. Bezpieczeństwo wiosenne: Formularz logowania pomiń
- 4. Wiosenne bezpieczeństwo w celu potwierdzenia logowania RestapI
- 5. Wiosenne bezpieczeństwo hasPermission nie działa
- 6. Bezpieczeństwo wiosenne Pojedyncze logowanie w środowisku Windows
- 7. bezpieczeństwo wiosny: jaka jest różnica między kontem zablokowanym i nieaktywnym
- 8. Jaka jest różnica między ścieżką a adresem URL w systemie iOS?
- 9. Różnica między window.location.assign (url) i window.open (url, "_self")
- 10. SpringSecurity: nie można usunąć JSESSIONID
- 11. Wyłącz logikę składowania SavedRequest SpringSecurity
- 12. Jaka jest różnica między SpringJUnit4ClassRunner i SpringRunner
- 13. "URL z WWW i URL bez WWW" - czy jest między nimi jakaś różnica?
- 14. Uruchom aplikację z adresem URL
- 15. Wiosenne bezpieczeństwo: Wyjątek ClassNotFoundException lub IllegalArgumentException po wdrożeniu
- 16. Różnica między encodeURL i encodeRedirectURL
- 17. Jaka jest różnica między url vs urlRoot
- 18. Ignoruj nazwę użytkownika w SpringSecurity
- 19. Różnica między łącznikiem URL, złączem HttpURLConnection i łącznikiem HttpsURLCLC
- 20. Różnica między google() i maven {url 'https://maven.google.com'}
- 21. laravel 4 Różnica między URL :: aktywów (aktywa) i()
- 22. Różnica między Url.RouteUrl() i Url.Action() w MVC3
- 23. Różnica między intencjami na Twitterze i adresami URL Twittera
- 24. Różnica między $ @ i $! w perl
- 25. Różnica między "i" w Lua
- 26. Bezpieczeństwo wiosenne Spowodowane przez: org.springframework.security.config.annotation.AlreadyBuiltException: Ten obiekt został już zbudowany
- 27. MySQL: Różnica między ",", "i"
- 28. Composer.phar różnica między | i ||
- 29. Różnica między | = i^= css
- 30. Różnica między "% ~ dp0" i ". \"?