Что такое REST

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

Representational State Transfer — архитектурный стиль программирования для распределенных систем, в частности для веб-сервисов и веб-API. Концепцию REST ввёл Рой Филдинг в его диссертации в 2000 году. REST описывает ряд принципов и ограничений, которые делают веб-сервисы проще, легче и более масштабируемыми.

Какие у REST принципы

  1. Безсостояние (Statelessness). Каждый запрос от клиента к серверу должен содержать всю необходимую информацию для обработки запроса. Сервер не должен сохранять контекст клиента между запросами.

  2. Единообразие интерфейса (Uniform Interface). Rдиный интерфейс между клиентом и сервером упрощает и декапсулирует архитектуру сервиса. Это облегчает взаимодействие клиента с сервером.

  3. Кеширование (Cacheability). Ответы сервера должны быть неявно или явно помечены как кэшируемые или нет. Кеширование может уменьшить время отзыва и повысить производительность системы.

  4. Клиент-серверная архитектура (Client-Server). Это разделение интересов подразумевает, что, например, пользовательский интерфейс размещен на клиентской стороне, а управление данными — на серверной. Такое разделение упрощает разработку и масштабирование.

  5. Многоуровневая система (Layered System). Клиент, который заходит на RESTful веб-сервис, не может знать, непосредственно общается он с конечным сервером, или с промежуточным уровнем (например, прокси сервером или балансировщиком нагрузки).

  6. Код по требованию (optional). Серверы могут временно расширять или настраивать функционал клиента, передавая ему исполняемый код, например, скрипты. Этот принцип является необязательным.

В контексте веб-API, RESTful сервисы предполагают использование стандартных HTTP-методов (GET, POST, PUT, DELETE и т.д.) для выполнения операций над ресурсами, которые идентифицируются посредством URI.

Например, в RESTful API для ведения блога, URI может представлять конкретную статью, а HTTP-методы могут использоваться для чтения (GET), создания (POST), изменения (PUT) или удаления (DELETE) этой статьи.

Зачем нужен этот архитектурный стиль

REST для веб-API — это хорошее решение многих задач разработки веб-сервисов, которые дают интерактивность, эффективность и доступность на различных платформах и устройствах. Давайте чуть подробнее о плюсах:

  • Разграничение клиентской и серверной сторон упрощает расширение систем.

  • Использование стандартных HTTP-методов позволяет легко взаимодействовать с ресурсами API на разных платформах.

  • API и клиенты могут разрабатываться параллельно и на разных языках программирования.

  • REST облегчает подключение различных сервисов и сторонних систем благодаря четко определенным интерфейсам.

  • Многоуровневая архитектура скрывает внутренности системы и облегчает контроль доступа.

Что REST даёт для кибербезопасности

Есть несколько опосредованных вещей, которые важны для контекста ИБ. И хотя REST сам по себе не решает все задачи безопасности, аспекты дизайна могут помочь создать более безопасную среду для обработки данных и взаимодействия приложений.

  1. Здесь используют понятный и универсальный набора HTTP операций (GET, POST, PUT, DELETE). Это упрощает более строгий контроль доступа и проведение аудита безопасности взаимодействий с веб-сервисами.

  2. В каждом запросе передается вся необходимая информация, что определяет отсутствие необходимости хранения сведений о состоянии пользователя на сервере. Это снижает риск утечки пользовательских данных при возможной атаке на сервер.

  3. Строгая структура ресурсов и URL позволяет точно определить, какие операции допустимы, что упрощает реализацию политик безопасности и управление доступом.

  4. Поскольку ответы от сервера могут быть кешированы, это снижает количество прямых запросов к серверу, ограничивая таким образом векторы атак и снижая риск DoS-атак.

  5. Клиенты общаются с API, не зная о структуре ведущей системы, что затрудняет потенциальным злоумышленникам выполнение целенаправленных атак на конкретные компоненты системы.

  6. REST часто использует HTTPS, который предоставляет шифрование и аутентификацию данных, повышая тем самым общую безопасность взаимодействий между клиентом и сервером.

Last updated