#angular #spring-security #csrf #csrf-token #x-xsrf-token
#angular #spring-безопасность #csrf #csrf-токен #x-xsrf-токен
Вопрос:
Наше приложение представляет собой пружинную загрузку с angular. По соображениям безопасности нам необходимо реализовать CSRF. Мы выполнили реализацию, но все еще получаем запрет 403. Мыиспользуем аутентификацию для входа в OAM. Несмотря на то, что для HttpOnly установлено значение false, в браузере мы видим, что оно не равно false. Мы хорошо видим токен.
HttpClientXsrfModule.withOptions({cookieName: 'XSRF-TOKEN', headerName: 'XSRF-TOKEN'})
Это код в интерфейсе angular.
Мы уже реализовали приведенный ниже код в серверной части: Класс конфигурации:
http
.httpBasic()
.and()
.csrf() // csrf config starts here
ignoringAntMatchers(CSRF_IGNORE) // URI where CSRF check will not be applied
.csrfTokenRepository(csrfTokenRepository()) // defines a repository where tokens are stored
.and()
.addFilterAfter(new CsrfFilter(), CsrfFilter.class);
private CsrfTokenRepository csrfTokenRepository() {
CookieCsrfTokenRepository repo = CookieCsrfTokenRepository.withHttpOnlyFalse();
/*repo.setHeaderName(CsrfFilter.CSRF_COOKIE_NAME);*/
repo.setHeaderName("XSRF-TOKEN");
return repo;
}
И код фильтра:
private Filter csrfHeaderFilter() {
return new OncePerRequestFilter() {
@Override
protected void doFilterInternal(HttpServletRequest request,
HttpServletResponse response, FilterChain filterChain)
throws ServletException, IOException {
CsrfToken csrf = (CsrfToken) request.getAttribute(CsrfToken.class
.getName());
if (csrf != null) {
Cookie cookie = new Cookie("XSRF-TOKEN", csrf.getToken());
cookie.setPath("/");
response.addCookie(cookie);
}
filterChain.doFilter(request, response);
}
};
} ```
Any help and suggestions are welcome.
We are in doubt that may be OAM authentication does not go with CSRF implementation.
Ответ №1:
Angular имеет некоторые встроенные средства защиты от распространенных уязвимостей веб-приложений и атак, таких как XSS
и CSRF
. Смотрите следующую страницу:https://angular.io/guide/security
Комментарии:
1. Да, мы реализовали в точности то, что упомянуто на этой странице.