Безопасность
В этом разделе рассказывается о том, как включить защиту от csrf атак и разрешить междоменные запросы.
Подключение CSRF и CORS в приложении
Для создания бина Customizer для CORS задайте настройку n2o.security.cors.enabled=true.
Для создания бина Customizer для CSRF задайте настройку n2o.security.csrf.enabled=true.
Подключение в конфигурацию безопасности
@Bean
public SecurityFilterChain filterChain(HttpSecurity http, Customizer<CorsConfigurer<HttpSecurity>> n2oCorsCustomizer, Customizer<CsrfConfigurer<HttpSecurity>> n2oCsrfCustomizer) throws Exception {
...
http.csrf(n2oCsrfCustomizer);
http.cors(n2oCorsCustomizer);
...
return http.build();
}
Настройки CSRF защиты
Настройки защиты от межсайтовой подделки запросов (Cross-Site Request Forgery).
| Наименование | Тип | Описание | Значение по умолчанию |
|---|---|---|---|
| n2o.security.csrf.enabled | boolean | Включить CSRF защиту | false |
| n2o.security.csrf.cookie-name | string | Имя cookie для CSRF токена | XSRF-TOKEN |
| n2o.security.csrf.header-name | string | Имя HTTP заголовка для CSRF токена | X-XSRF-TOKEN |
| n2o.security.csrf.parameter-name | string | Имя параметра для CSRF токена | _csrf |
| n2o.security.csrf.cookie-path | string | Путь для CSRF cookie | / |
| n2o.security.csrf.ignoring-request-matchers | Список строк | Список URL patterns, которые исключаются из CSRF защиты. Поддерживает Ant-style patterns (например: /api/public/**) | [] |
| n2o.security.csrf.secure | boolean | Использовать Secure flag для cookies (только HTTPS) | true |
Пример настройки CSRF защиты
n2o:
security:
csrf:
enabled: true
ignoring-request-matchers:
- /api/public/**
- /health
Настройки Cookie
Настройки для session cookies.
| Наименование | Тип | Описание | Значение по умолчанию |
|---|---|---|---|
| n2o.security.cookie.same-site | enum | SameSite политика для session cookie. Возможные значения: Strict, Lax, None | Lax |
Пример настройки Cookie
n2o:
security:
cookie:
same-site: Strict
Настройки CORS
Настройки междоменных запросов (Cross-Origin Resource Sharing).
| Наименование | Тип | Описание | Значение по умолчанию |
|---|---|---|---|
| n2o.security.cors.enabled | boolean | Включить CORS | false |
| n2o.security.cors.allowed-origins | Список строк | Разрешенные origins для CORS | null |
| n2o.security.cors.allowed-methods | Список строк | Разрешенные методы для CORS | GET, OPTIONS |
| n2o.security.cors.allowed-headers | Список строк | Разрешенные заголовки для CORS | * |
| n2o.security.cors.exposed-headers | Список строк | Список заголовков, которые может содержать фактический ответ и могут быть доступны | null |
| n2o.security.cors.allow-credentials | boolean | Должен ли браузер отправлять учетные данные, такие как файлы cookie, вместе с междоменными запросами | false |
Пример настройки CORS
n2o:
security:
cors:
enabled: true
allowed-origins:
- https://example.com
- https://app.example.com
allowed-methods:
- GET
- POST
- PUT
- DELETE
allowed-headers:
- Content-Type
- Authorization
exposed-headers:
- X-Total-Count
allow-credentials: true