CSRF – Spring Security в деталях

Наверняка каждый разработчик веб-приложений или сайтов на практике сталкивался с защитой от CSRF-атак, предоставляемой фреймворками и библиотеками. В фреймворке Spring Security защита от этого вида эксплойтов тоже присутствует, однако многие начинающие разработчики предпочитают отключать её, не пытаясь разобраться в природе CSRF-атак, способах защиты от них и правильном использовании средств защиты.

В этой статье будет описан принцип действия CSRF-атаки и продемонстрированы несколько вариантов приведения таких атак. Затем будут перечислены признаки уязвимости веб-приложений перед CSRF-атаками и способы защиты от них. После этого будет подробно описана защита от CSRF-атак, предоставляемая Spring Security: компоненты, реализующие её, и их настройка. В завершение статьи будет описано несколько сценариев использования защиты от CSRF-атак в разных видах веб-приложений: в сайтах со статическими страницами, в сайтах с асинхронными запросами и в одностраничных веб-приложениях (SPA, PWA).

Читать далее CSRF – Spring Security в деталях

Docker Compose и Testcontainers в Spring Boot 3.1

Одними из наиболее значимых нововведений в недавнем релизе Spring Boot 3.1 на мой взгляд являются поддержка Docker Compose и Testcontainers, а так же новая концепция подключений к сервисам, которая позволяет с минимальным количеством кода подключаться к сервисам, развёрнутым в контейнерах.

Читать далее Docker Compose и Testcontainers в Spring Boot 3.1

Точки входа аутентификации — Spring Security

Для того чтобы Spring Security инициировал процесс аутентификации пользователя используются специальные компоненты — точки входа, которые реализуют интерфейс AuthenticationEntryPoint. Точка входа может инициировать процесс аутентификации в зависимости от выбранного способа аутентификации. Так, если в приложении используется Basic-аутентификация, пользователю будет отправлен HTTP-ответ со статусом 401 Unauthorized и заголовком WWW-Authenticate: Authorize Basic …​, о чём я уже рассказывал в статье о Basic-аутентификации.

Читать далее Точки входа аутентификации — Spring Security

Отладка контекста безопасности — Spring Security в деталях

При работе с контекстом безопасности Spring Security иногда возникают ситуации, когда разрабатываемое приложение начинает себя вести не очевидно, отвечать ошибками с HTTP-статусом 403, но без каких-либо подробностей, в том числе и в логах. В рамках этой статьи предлагаю разобраться с тем, как можно добиться большей конкретики от Spring Security при возникновении подобных ситуаций.

Читать далее Отладка контекста безопасности — Spring Security в деталях

Получение информации о пользователе — Spring Security в деталях

Зачастую при реализации какой-то функциональности в приложении требуется доступ к информации о текущем аутентифицированном пользователе. Spring Security предоставляет несколько способов получения информации о пользователе, предлагаю их рассмотреть в этой статье.

Читать далее Получение информации о пользователе — Spring Security в деталях

Basic-аутентификация в Spring Security

Одним из наиболее простых способов аутентификации в HTTP является Basic-аутентификация. Данный способ аутентификации можно назвать универсальным, так как он может использоваться как на обычных сайтах, так и в сервисах, реализующих REST или SOAP. Кроме того Basic-аутентификацию можно использовать и в протоколах на основе HTTP, например в WebDAV.

В Spring Security есть поддержка Basic-аутентификации, и, более того, это один из основных способов аутентификации в Spring Security наравне с традиционной формой входа.

Читать далее Basic-аутентификация в Spring Security

Аутентификация в Spring Security

Процесс предоставления пользователю доступа к информационной системе состоит из трёх этапов: идентификации, аутентификации и авторизации.

Читать далее Аутентификация в Spring Security

Погружение в Spring Security для Servlet API

Spring Security — это очень мощный и гибкий фреймворк, применяемый для обеспечения безопасности приложений на платформе Java, преимущественно веб-приложений, основанных на Spring Framework. Впрочем, он может применяться и в проектах на основе Jakarta Servlet API, не использующих Spring Framework.

Читать далее Погружение в Spring Security для Servlet API

Spring JDBC в деталях: SimpleJdbcInsert

Решил я проанализировать источники трафика на моём сайте и обнаружил, что на сайт частенько заходят в поисках информации о SimpleJdbcInsert, о чём я толком не рассказывал. Поэтому этой статьёй я постараюсь закрыть этот пробел.

SimpleJdbcInsert — один из вспомогательных инструментов, предоставляемых Spring Framework JDBC для работы с реляционными базами данных, задача которого — предоставить удобный механизм для вставки новых строк в таблицы.

Читать далее Spring JDBC в деталях: SimpleJdbcInsert

Spring Security: Маскировка CSRF-токена

В своих проектах я крайне редко использую защиту от CSRF-атак, предоставляемую Spring Security, ввиду того, что подавляющая часть этих проектов — REST-сервисы без хранения состояния. Но один из проектов использует файлы cookies на стороне браузера для хранения состояния, а в этом случае для защиты от CSRF-атак нужно использовать средства Spring Security. И при переводе проекта на Spring Boot 3 я обнаружил, что Spring Security начал игнорировать передаваемый в заголовке CSRF-токен.

Читать далее Spring Security: Маскировка CSRF-токена