Перейти к основному содержимому

· 5 мин. чтения

1. Обзор

В этом руководстве мы рассмотрим, как злоумышленник может использовать десериализацию в коде Java для взлома системы.

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

2. Уязвимости десериализации

Java широко использует десериализацию для создания объектов из входных источников.

· 4 мин. чтения

1. Введение

В этом руководстве мы кратко рассмотрим интерфейс Java java.io.Externalizable . Основная цель этого интерфейса — упростить пользовательскую сериализацию и десериализацию.

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

После этого мы собираемся обсудить ключевые отличия от интерфейса java.io.Serializable .

2. Внешний интерфейс

· 7 мин. чтения

1. Обзор

UUID (универсальный уникальный идентификатор), также известный как GUID (глобальный уникальный идентификатор), представляет собой 128-битное значение, уникальное для всех практических целей. Их уникальность не зависит от центрального регистрационного органа или координации между генерирующими их сторонами , в отличие от большинства других схем нумерации.

В этом руководстве мы увидим два разных подхода к реализации для создания идентификаторов UUID в Java.

2. Структура

Давайте посмотрим на пример UUID, за которым следует каноническое представление UUID:

· 4 мин. чтения

1. Введение

В Java мы обычно пишем собственные методы для обработки преобразований между байтами и шестнадцатеричными строками. Однако в Java 17 представлен java.util.HexFormat , служебный класс, который позволяет преобразовывать примитивные типы, массивы байтов или массивы символов в шестнадцатеричную строку и наоборот .

В этом руководстве мы рассмотрим, как использовать HexFormat и продемонстрируем предоставляемые им функции.

2. Работа с шестнадцатеричными строками до Java 17

Шестнадцатеричная система счисления использует основание 16 для представления чисел. Это означает, что он состоит из 16 символов, обычно это символы 0-9 для значений от 0 до 9 и AF для значений от 10 до 15.

· 5 мин. чтения

1. Обзор

Атрибут serialVersionUID — это идентификатор, который используется для сериализации/десериализации объекта класса Serializable .

В этом кратком руководстве мы обсудим, что такое serialVersionUID и как его использовать на примерах.

2. UID серийной версии

Проще говоря, мы используем атрибут serialVersionUID , чтобы запомнить версии класса Serializable , чтобы убедиться, что загруженный класс и сериализованный объект совместимы.

· 2 мин. чтения

1. Обзор

В этом кратком руководстве мы рассмотрим, как преобразовать стандартную строку в InputStream , используя обычную Java, Guava и библиотеку ввода-вывода Apache Commons.

Эта статья является частью серии «Java — Back to Basic» здесь, на ForEach.

2. Преобразование с помощью обычной Java

Давайте начнем с простого примера использования Java для преобразования — с использованием промежуточного массива байтов :

· 9 мин. чтения

1. Обзор

Блочный шифр с симметричным ключом играет важную роль в шифровании данных. Это означает, что один и тот же ключ используется как для шифрования, так и для дешифрования. Advanced Encryption Standard ( AES) — это широко используемый алгоритм шифрования с симметричным ключом.

В этом руководстве мы узнаем, как реализовать шифрование и дешифрование AES с использованием архитектуры криптографии Java (JCA) в JDK.

2. Алгоритм AES

· 2 мин. чтения

1. Обзор

Advanced Encryption Standard ( AES) — это широко используемый алгоритм симметричного блочного шифрования. Вектор инициализации (IV) играет важную роль в алгоритме AES.

В этом руководстве мы объясним, как сгенерировать IV в Java. Кроме того, мы опишем , как избежать исключения InvalidAlgorithmParameterException , когда мы генерируем IV и используем его в алгоритме шифрования .

2. Вектор инициализации

Алгоритм AES обычно имеет три входа: открытый текст, секретный ключ и IV. Он поддерживает секретные ключи длиной 128, 192 и 256 бит для шифрования и расшифровки данных блоками по 128 бит. На рисунке ниже показаны входы AES:

· 4 мин. чтения

1. Введение

RSA, или, другими словами, Ривест-Шамир-Адлеман , представляет собой асимметричный криптографический алгоритм. Он отличается от симметричных алгоритмов, таких как DES или AES , наличием двух ключей. Открытый ключ, которым мы можем поделиться с кем угодно, используется для шифрования данных. И частный, который мы храним только для себя и он используется для расшифровки данных.

В этом руководстве мы узнаем, как генерировать, хранить и использовать ключи RSA в Java.

2. Создайте пару ключей RSA

Прежде чем мы начнем фактическое шифрование, нам нужно сгенерировать нашу пару ключей RSA. Мы можем легко сделать это, используя KeyPairGenerator из пакета java.security :

· 5 мин. чтения

1. Обзор

В любом современном браузере совместное использование ресурсов между источниками (CORS) является актуальной спецификацией с появлением клиентов HTML5 и JS, которые потребляют данные через REST API.

Часто хост, который обслуживает JS (например, example.com), отличается от хоста, который обслуживает данные (например, api.example.com). В таком случае CORS обеспечивает междоменное взаимодействие.

Spring обеспечивает первоклассную поддержку CORS, предлагая простой и эффективный способ его настройки в любом веб-приложении Spring или Spring Boot.

2. Конфигурация CORS метода контроллера