В предыдущей статье я постарался вкратце объяснить, что такое протокол CORS и как он работает. В этой статье я предлагаю разобраться с настройками CORS на стороне Spring Web, Spring Security и Spring Boot.
Читать далее CORS в Spring WebCross-Origin Resource Sharing (CORS)
Наверняка большинство веб-разработчиков когда-то сталкивались с CORS при выполнении межсайтовых запросов из JavaScript. Причём на эти запросы либо приходили ответы со статусом 403 Forbidden, либо сам браузер отказывался работать с запросом или даже успешным ответом. Предлагаю разобраться с темой CORS.
Читать далее Cross-Origin Resource Sharing (CORS)Анализ уязвимостей в зависимостях
В современных условиях разработки программного обеспечения крайне редко встречаются проекты, не имеющие внешних зависимостей, и большинство из них — различные библиотеки для работы с различными базами данных. Большая же часть проектов разрабатывается с использованием сторонних зависимостей — библиотек и фреймворков, которые предоставляют готовые решения для большого количества задач. Однако в сторонних зависимостях могут скрываться уязвимости, которыми злоумышленники могут воспользоваться при атаке на разрабатываемые вами проекты. Но потенциальное наличие уязвимостей в сторонних библиотеках не должно стать поводом для отказа от них — вместо этого лучше поддерживать зависимости в актуальном состоянии и анализировать их на предмет уязвимостей.
Различные инструменты для отслеживания уязвимостей в зависимостях интегрированы в IDE, SonarQube и CI/CD-решения, а в этой статье речь пойдёт о Dependency Track.
Читать далее Анализ уязвимостей в зависимостяхSC24EP01 Разработка веб-приложения
В первом ролике цикла я демонстрирую разработку классического веб-приложения со Spring WebMVC, Thymeleaf и Jakarta Bean Validation. В ролике демонстрируется несколько способов создания нового проекта на основе Spring Boot, вкратце описывается многоуровневая архитектура и шаблон проектирования MVC, создание базовых компонентов приложения, валидация данных и интернационализация. Кроме этого продемонстрировано несколько способов запуска приложения на основе Spring Boot.
Читать далее SC24EP01 Разработка веб-приложенияРазработка проектов со Spring
Рассказывая о результатах своей видео-блоггерской деятельности за 2023 год, я упомянул о желании записать как минимум один цикл роликов в 2024 году. И этот цикл роликов у меня уже готов! Ну, а посвящён он снова разработке проектов со Spring, но на этот раз, в отличие от серии «Spring по верхам» я решил охватить больший набор тем, а заодно раскрыть их более подробно.
В этом видео я рассказываю о том, что вас ждёт в этом цикле роликов.
Читать далее Разработка проектов со SpringSpring Boot, Maven и Docker
Разработку и развёртывание современного серверного программного обеспечения невозможно представить себе без использования контейнеров, тем более, когда речь идёт о развёртывании в Kubernetes. В этой статье я продемонстрирую несколько вариантов того, как можно упаковать Maven-проект на основе Spring Boot в контейнер в формате OCI (Open Container Initiative), ну или попросту в Docker-контейнер.
Читать далее Spring Boot, Maven и DockerВалидация методов — Jakarta Bean Validation
В этой статье, посвящённой Jakarta Bean Validation, будет подробно рассмотрен процесс валидации методов, а также применение ограничений к аргументам и возвращаемым значениям методов и конструкторов. Кроме этого будет рассмотрено каскадирование валидации, а так же нюансы валидации методов при использовании наследования.
Читать далее Валидация методов — Jakarta Bean ValidationВалидация объектов — Jakarta Bean Validation
В этой статье, посвящённой Jakarta Bean Validation, будет подробно рассмотрен процесс валидации объектов: применение ограничений к элементам классов, их валидация, а также валидация записей (record
).
Знакомство с Jakarta Bean Validation 3.0
Jakarta Bean Validation — это спецификация, описывающая API для валидации объектов в рамках Jakarta EE. Вы можете использовать данную спецификацию для валидации в проектах вне зависимости от используемого фреймворка или сервера приложений. Более того, вы можете использовать Jakarta Bean Validation в полностью самостоятельных проектах, не основанных на Jakarta EE или каком-либо фреймворке.
Идейным предшественником Jakarta Bean Validation 3.0 является Bean Validation 2.0 из Java EE, однако все изменения в спецификации заключаются в переименованиях, связанных с миграцией проекта из Java EE в Jakarta EE.
В рамках этой статьи будет рассмотрен минимальный набор зависимостей, необходимый для использования Jakarta Bean Validation, описаны основные интерфейсы и ограничения или правила валидации.
Читать далее Знакомство с Jakarta Bean Validation 3.0CSRF – Spring Security в деталях
Наверняка каждый разработчик веб-приложений или сайтов на практике сталкивался с защитой от CSRF-атак, предоставляемой фреймворками и библиотеками. В фреймворке Spring Security защита от этого вида эксплойтов тоже присутствует, однако многие начинающие разработчики предпочитают отключать её, не пытаясь разобраться в природе CSRF-атак, способах защиты от них и правильном использовании средств защиты.
В этой статье будет описан принцип действия CSRF-атаки и продемонстрированы несколько вариантов приведения таких атак. Затем будут перечислены признаки уязвимости веб-приложений перед CSRF-атаками и способы защиты от них. После этого будет подробно описана защита от CSRF-атак, предоставляемая Spring Security: компоненты, реализующие её, и их настройка. В завершение статьи будет описано несколько сценариев использования защиты от CSRF-атак в разных видах веб-приложений: в сайтах со статическими страницами, в сайтах с асинхронными запросами и в одностраничных веб-приложениях (SPA, PWA).
Читать далее CSRF – Spring Security в деталях