Рекомендации
по безопасности API
для защиты ваших данных. Часть 1

API (Application Programming Interface) — это интерфейс программирования приложений. Другими словами — это совокупность инструментов и функций, которые необходимы для создания новых приложений. С помощью API одна программа может интегрироваться и взаимодействовать с другой. 

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

Что такое безопасность API

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

Типы кибератак на API

Ниже мы рассмотрим самые распространенные атаки на API, с которыми вы можете столкнуться:

 

  • Украденная аутентификация

Самый простой способ получить доступ к API — перехватить данные авторизованного пользователя. Например, если токен аутентификации попадет в руки злоумышленников, то его можно использовать для доступа к другим ресурсам. Киберпреступники могут угадать или взломать слабые пароли аутентификации.

 

  • Атака посредника (MITM)

MITM (Man-In-The-Middle) — это атака-посредник, при которой хакеры перехватывают запрос или ответ между конечным пользователем и API. 

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

 

  • Внедрение кода

API-интерфейсы с пробелами в аутентификации и проверке также уязвимы для внедрения кода, особенно, когда злоумышленник отправляет скрипт на сервер приложения через запрос API.

 

  • DDoS-атака 

DDoS-атаки перегружают ресурсы сервера большим количеством запросов API, чтобы замедлить или привести к сбою работу веб-сервера. Часто такие атаки осуществляются одновременно из нескольких вредоносных источников.

Рекомендации по безопасности API

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

1. Реализуйте аутентификацию

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

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

Протокол OAuth — это общепринятый стандарт для аутентификации пользователей API. OAuth основан на HTTP, поэтому он будет удобен для REST API. 

На базовом уровне OAuth дает администраторам API возможность предоставлять токены аутентификации утвержденным третьим лицам. 

Администраторы могут устанавливать собственные правила доступа, которые определяют, какие запросы API разрешены в зависимости от источника запроса.

2. Реализуйте авторизацию

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

В отличие от других типов API, API REST должны аутентифицировать и авторизовать каждый запрос на сервере, даже если несколько запросов исходят от одного и того же пользователя.

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

3. Подтвердите все запросы

Бывает, что запросы из достоверных источников являются попытками взлома. Поэтому API-интерфейсам нужны правила, чтобы определить, является ли запрос достоверным или недействительным и вредоносным.

Запрос API должен обрабатываться только после того, как его содержимое пройдет тщательную проверку.

4. Шифруйте все запросы

Для предотвращения MITM-атак любая передача данных от пользователя на сервер API или наоборот должна быть зашифрована. 

Поскольку API-интерфейсы REST используют HTTP, шифрование происходит с помощью протокола Transport Layer Security (TLS) или его предыдущей итерации, протокола Secure Sockets Layer (SSL). 

Эти протоколы содержат букву S в «HTTPS» («S» означает «безопасный») и являются стандартом для шифрования веб-страниц REST API. 

TLS/SSL шифруют данные только при их передаче. Они не шифруют данные, которые находятся за пределом вашего API, поэтому конфиденциальные данные также должны быть зашифрованы на уровне базы данных.

5. Включайте в ответы только необходимую информацию

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

6. Регулируйте запросы API и устанавливайте квоты

Чтобы предотвратить атаки, API может наложить ограничение скорости, чтобы контролировать количество запросов к серверу API.

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

Оба метода должны разрешать обычные запросы API, но предотвращать потоки трафика.


Источник: hubspot.com 

Условия передачи информации

Я даю согласие OOO «ЭсБилдер» (далее «BINN») на обработку моих персональных данных в соответствии со статьями 6, 9, 10, 18 Федерального закона от 27 июля 2006 года № 152-ФЗ «О персональных данных», указанных в онлайн-форме и/или предоставленных мною с целью:

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

Настоящее согласие применяется в отношении обработки следующих данных: имя, номер телефона, адрес электронной почты (E-mail).

Настоящее согласие предоставляется сроком на пять лет. По истечении указанного срока действие согласия считается продленным на каждые следующие пять лет при отсутствии сведений о его отзыве.

Согласие может быть отозвано мною в любой момент путем направления в BINN подписанного мною письменного заявления.