Skip to main content

Безопасность

В этом разделе рассказывается о том, как включить защиту от 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.enabledbooleanВключить CSRF защитуfalse
n2o.security.csrf.cookie-namestringИмя cookie для CSRF токенаXSRF-TOKEN
n2o.security.csrf.header-namestringИмя HTTP заголовка для CSRF токенаX-XSRF-TOKEN
n2o.security.csrf.parameter-namestringИмя параметра для CSRF токена_csrf
n2o.security.csrf.cookie-pathstringПуть для CSRF cookie/
n2o.security.csrf.ignoring-request-matchersСписок строкСписок URL patterns, которые исключаются из CSRF защиты. Поддерживает Ant-style patterns (например: /api/public/**)[]
n2o.security.csrf.securebooleanИспользовать Secure flag для cookies (только HTTPS)true
Пример настройки CSRF защиты
n2o:
security:
csrf:
enabled: true
ignoring-request-matchers:
- /api/public/**
- /health

Настройки для session cookies.

НаименованиеТипОписаниеЗначение по умолчанию
n2o.security.cookie.same-siteenumSameSite политика для session cookie. Возможные значения: Strict, Lax, NoneLax
Пример настройки Cookie
n2o:
security:
cookie:
same-site: Strict

Настройки CORS

Настройки междоменных запросов (Cross-Origin Resource Sharing).

НаименованиеТипОписаниеЗначение по умолчанию
n2o.security.cors.enabledbooleanВключить CORSfalse
n2o.security.cors.allowed-originsСписок строкРазрешенные origins для CORSnull
n2o.security.cors.allowed-methodsСписок строкРазрешенные методы для CORSGET, OPTIONS
n2o.security.cors.allowed-headersСписок строкРазрешенные заголовки для CORS*
n2o.security.cors.exposed-headersСписок строкСписок заголовков, которые может содержать фактический ответ и могут быть доступныnull
n2o.security.cors.allow-credentialsbooleanДолжен ли браузер отправлять учетные данные, такие как файлы 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

Настройки безопасности HTML

Перед вставкой HTML-код очищается от потенциально опасных тегов и атрибутов. Для этого используется рекомендованная конфигурация библиотеки DOMPurify.

Чтобы подключить собственные правила очистки, передайте конфигурацию csp в поле user. Это позволит изменить поведение очистки при вставке HTML.

note

csp поддерживает все параметры, поддерживаемые DOMPurify, а также дополнительный массив ALLOWED_DOMAINS – список доменов, для которых разрешён src у тегов <iframe>.

Для передачи необходимо указать настройки в файле user.properties

Пример, будет разрешена вставка <iframe> для доверенного домена https://example.ru, а также разрешена вставка аттрибута style

csp.allowed_tags=[iframe]
csp.allowed_attr=[style]
csp.allowed_domains=[https://example.ru]

Завершить настройку в файле config.json Где ключ соответствует формату ключей DOMPurify

{
"user": {
"csp": {
"ALLOWED_TAGS": "#{csp.allowed_tags}",
"ALLOWED_ATTR": "#{csp.allowed_attr}",
"ALLOWED_DOMAINS": "#{csp.allowed_domains}"
}
}
}

Атрибуты

НаименованиеТипОписание
ALLOWED_DOMAINSСтрокаСписок разрешённых доменов (точное совпадение или поддомен).
DOMPurify атрибутыСтрокаПараметры для DOMPurify
note

Для детального описания параметров DOMPurify обратитесь к официальной документации.