Обновить
512K+

Java *

Объектно-ориентированный язык программирования

247,58
Рейтинг
Сначала показывать
Порог рейтинга
Уровень сложности

Строим свой SSO. Часть 5: Итоговый SSO, Защита от XSS/CSRF, Custom Grant Type

Уровень сложностиСредний
Время на прочтение44 мин
Охват и читатели10K

Всем привет! Мы продолжаем нашу серию статей по созданию собственного SSO. В этой статье мы увидим итоговый проект и разберём самые интересные решения из него. Подумаем над безопасностью приложения и настроим защиту от XSS и CSRF атак, а также изучим разные Security Headers. В заключение статьи мы создадим собственый Grant Type.

Читать далее

Аннотации vs Документационные комментарии vs Маркерные интерфейсы

Время на прочтение3 мин
Охват и читатели2.4K

Прежде чем обсуждать, когда использовать аннотации вместо комментариев, важно сначала понять, что такое аннотации и для чего они используются в Java.

Аннотации не заменяют комментарии к документации (у них есть и другие применения), но во многих случаях (особенно в тех случаях, когда нам нужны аналогичные структурированные комментарии) они предпочтительнее комментариев. Причина в том, что аннотации являются типами в Java, как и любой другой тип данных, определяемый пользователем. И, следовательно, их можно использовать после того, как они определены.

Аннотации в Java на самом деле представляют собой всего лишь форму интерфейсов, и, следовательно, определение типа аннотации похоже на определение интерфейса. Ключевому слову «интерфейс» в определении аннотации предшествует символ «@».

Типичный комментарий к документации — это то, что обычно появляется в начале любого определения класса. Он содержит имя автора, версию, дату, дату последнего изменения и т. д. Итак, пример комментария будет выглядеть примерно так:

Читать далее

Пишем кастомный Plugin SonarQube

Уровень сложностиСредний
Время на прочтение9 мин
Охват и читатели3.8K

Привет всем! Недавно я решил поэкспериментировать с SonarQube и создать свой собственный кастомный плагин для проверки кода на соответствие моим правилам разработки. В этой статье я поделюсь с вами своим опытом и покажу, как вы тоже можете создать такой плагин своими руками.

Читать далее...

Побитовые проверки в Java и почему они так неоднозначны

Уровень сложностиСредний
Время на прочтение8 мин
Охват и читатели9K

Операторы "&" и "|" не вызывают вопросов, когда применяются в подходящих ситуациях. Но знаете ли вы о всех последствиях использования побитовых операторов вместо логических в Java? В этой статье мы рассмотрим как плюсы производительности такого подхода, так и минусы его читабельности.

Читать далее

Camunda для backend-разработчика — как ей пользоваться

Уровень сложностиСредний
Время на прочтение8 мин
Охват и читатели49K

Я написала этот текст из желания помочь разработчикам, которым только предстоит познакомиться с Camunda. С чего начать и как не потеряться - подробно, с кодом и скринами.

Читать далее

Исправляем следующие 10 000 багов, связанных с наложением ссылок

Время на прочтение18 мин
Охват и читатели5.7K

Почему появляются баги? Существует много причин, но если мы взглянем на конкретные примеры, то сможем увидеть закономерности — и спроектировать наши системы так, чтобы избежать целых классов ошибок. 

Под катом автор блога Considerations on Codecrafting рассматривает ошибки, связанные с наложением ссылок, предлагает методы их предотвращения и призывает внедрить эти методы на уровне проектирования новых языков.

Читать далее

Как защитить веб сервисы при помощи шлюза OpenIG

Уровень сложностиСредний
Время на прочтение16 мин
Охват и читатели3.3K

Обеспечение безопасности веб сервисов — одна из важных частей процесса разработки. Если если в инфраструктуре несколько сервисов, то каждый из них должен быть должным образом защищен. Если реализовывать проверки политик безопасности в каждом сервисе, то затраты на разработку и поддержку таких сервисов существенно возрастают. При этом не избежать дублирования кода и ошибок разработки. Поэтому, управление защитой сервисов должно быть централизованным. Далее мы рассмотрим, как организовать централизованную защиту приложений на примере API-шлюза с открытым исходным кодом OpenIG, а так же добавим проверку авторизации доступа с JWT токеном

Исходный код для статьи https://github.com/maximthomas/openig-protect-ws/

Читать далее

«Скрипач не нужен» или что делать с тестовыми паролями

Уровень сложностиСредний
Время на прочтение13 мин
Охват и читатели2.9K

В любой разработке рано или поздно появляются тестовые стенды — отдельные инсталляции тестовой сборки вашей разрабатываемой системы, с тестовыми данными и тестовыми же учетными записями. Именно отсюда происходит знаменитое «admin/admin», которое вбивал в поля авторизации наверное каждый разработчик.

Теперь представьте что у вас в разработке не один проект а скажем 50, часть из которых требует нескольких стендов. Знакомо?

Читать далее

От логов к аудиту

Уровень сложностиСредний
Время на прочтение8 мин
Охват и читатели13K

Статья родилась, как водится, из рабочей задачи — нужно было внедрить аудит-логирование в некоторые микросервисы на Java и Spring.

Читать далее

Обновление Java с 17 на 21: через тернии к звездам

Уровень сложностиПростой
Время на прочтение10 мин
Охват и читатели19K

Меня зовут Денис, я тимлид команды R&D в Naumen Service Management Platform.

Так как наш продукт написан в основном на Java, мы с большим нетерпением ждали очередной LTS релиз в прошлом году, предвкушая мощь виртуальных потоков и крутизну доработанного pattern matching.

В этой статье расскажу, с какими препятствиями на пути миграции систем на Java 21 столкнулась наша команда, что мы получили после обновления и стоит ли вообще обновляться.

Читать далее

Spring Boot 3.2: замените свой RestTemplate на RestClient

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели40K

Эта статья по Spring Boot 3.2 посвящена надстройке над  WebClient, которая называется RestClient и представляет собой более интуитивный и современный подход взаимодействия с RESTful сервисами.

В мире Spring Boot отправка HTTP запросов к внешним сервисам является весьма распространенной задачей. Традиционно при достижении этой цели разработчики полагались на  RestTemplate. Однако, по мере развития Spring Framework, на свет появился новый и более мощный способ обработки HTTP запросов: так называемый  WebClient. Spring Boot 3.2 представил нам надстройку над  WebClient, которая получила название RestClient. 

RestClient предлагает нам более современные и интуитивно понятные способы взаимодействия с RESTful сервисами. 

Читать далее

Книга: «Java для опытных разработчиков. 2-е издание»

Время на прочтение22 мин
Охват и читатели14K
image Привет, Хаброжители!

Язык Java – сердце корпоративного ПО. Если программист хорошо знает Java, он без особого труда найдет интересную работу. Поднимите ваши навыки Java на новый уровень вместе с экспертами. Основательно изучите такие мощные инструменты, как модели конкурентного выполнения и модули, и даже раскройте некоторые глубинные тайны Java.

Узнайте, как Java работает на уровне байт-кода. Освойте ценные приемы конкурентного выполнения и оптимизации быстродействия, а еще ключевые методы сборки, тестирования и развертывания. Также рассмотрите альтернативные языки для JVM – Kotlin и Clojure. Изучив материал, вы будете выделяться на фоне других разработчиков!
Читать дальше →

Как шаблонный метод может сломать ваш Java код

Уровень сложностиСредний
Время на прочтение9 мин
Охват и читатели15K

ООП — это замечательно. За несоблюдение этой парадигмы принято ругать, а знание паттернов зачастую является обязательным. Но даже правильный подход не страхует полностью от ошибок. О том, как сломать программу при помощи обычного шаблонного метода, мы сегодня и узнаем.

Читать далее

Ближайшие события

Как сделать пароль менеджер

Уровень сложностиПростой
Время на прочтение55 мин
Охват и читатели40K

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

Читать далее

Сервер на визитке

Уровень сложностиСложный
Время на прочтение7 мин
Охват и читатели34K

Все началось еще лет 10 назад, когда я впервые наткнулся на статью где было описано как эксперт по 3D-технологиям вместил сильно обфрусцированный код рейтрейсера на C++ в размеры своей визитки.

Читать далее

Разбираем магических зверей безопасности: AuthZ: abac/rbac, AuthN и 2FA

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели7.6K

Вы знаете, что меня действительно выбивает из колеи забавит? Даже люди, которые давно работают в IT, путают аутентификацию и авторизацию. На пару проектах я столкнулся с тем, что некоторые ребята, которые работают в индустрии годами, не видят разницы между этими двумя понятиями. И это не просто “я офигеваю” озадачивает – это может быть опасно для безопасности систем, так как из за ложного определения мысли производят совсем не однозначные выводы.

Ну так гоу погружаться в этот мир деталей!

Hibernate и спецификация JPA: приключение на 20 минут

Время на прочтение3 мин
Охват и читатели10K

На прошлой неделе в блоге сообщества Spring АйО вышла статья-перевод про интересный кейс падения производительности при переходе на Hibernate 6.5. Оказалось, что выражения вида publisherId in :ids при пустом ids приводит к серьезной деградации производительности. Баг вскоре был пофикшен, однако, не дает покоя вопрос, почему так произошло?
Ниже приводим историю появления и незамедлительного решения этой проблемы, от лица Гэвина Кинга, создателя Hibernate.

Читать далее

Как и зачем мы затащили GeckoView в Почту

Уровень сложностиСредний
Время на прочтение9 мин
Охват и читатели14K

Начиная с июня 2023 года мы стали получать жалобы от пользователей о том, что у них не отображаются письма в Android-клиенте Почты Mail.ru. В ходе исследования мы даже приглашали пользователя к нам в офис для отладки. В конце концов мы поняли, что проблема на стороне WebView, компонента, с помощью которого мы можем отображать веб страницы. Ни для кого не секрет, что WebView используется во многих банковских и почтовых клиентах, в приложениях интернет-магазинов, сервисов доставки и многих других. Также изучили другие почтовые сервисы, нам хотелось понять, как они с этим справились. Оказалось — никак :)

А теперь обо всём в подробностях и с кодом

Уязвимость в плагине JetBrains GitHub

Время на прочтение2 мин
Охват и читатели14K

Была обнаружена новая проблема безопасности, затрагивающая плагин JetBrains GitHub, потенциально приводящая к раскрытию токенов доступа сторонним сайтам. Проблема затрагивает все IDE на базе IntelliJ начиная с версии 2023.1, если у них включен и настроен/используется плагин JetBrains GitHub. 

Проблема уже устранена, и для всех IDE на базе платформы IntelliJ, начиная с версии 2023.1, выпущено обновление, содержащее исправление.

Читать далее

Java и C#. История одного вдохновения

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели12K

Вероятнее всего вы видели этот или похожий мемы. Когда я их видел, у меня возникал только один вопрос "А почему?". И я решил разобраться в истории сосуществования этих языков и их заимствований друг у друга

Читать далее