API (Application Programming Interface) — это интерфейс программирования приложений. Другими словами — это совокупность инструментов и функций, которые необходимы для создания новых приложений. С помощью API одна программа может интегрироваться и взаимодействовать с другой.
В этой статье мы расскажем вам об основах безопасности API, рассмотрим распространенные типы кибератак, а также поделимся лучшими способами защиты от них.
Безопасность API — это практика защиты API от кибератак и неправомерного использования. Меры безопасности API гарантируют, что все обработанные запросы поступают из надежных источников, а все ответы защищены. Цель API — облегчить передачу данных между вашей системой и внешними пользователями.
Ниже мы рассмотрим самые распространенные атаки на API, с которыми вы можете столкнуться:
Самый простой способ получить доступ к API — перехватить данные авторизованного пользователя. Например, если токен аутентификации попадет в руки злоумышленников, то его можно использовать для доступа к другим ресурсам. Киберпреступники могут угадать или взломать слабые пароли аутентификации.
MITM (Man-In-The-Middle) — это атака-посредник, при которой хакеры перехватывают запрос или ответ между конечным пользователем и API.
Таким образом трафик будет проходить через промежуточный узел злоумышленника, который получит все отправляемые пользователем данные (логин, пароль, ПИН-код и т.д.). Так хакеры могут украсть конфиденциальные данные, например, учетные данные или платежную информацию.
API-интерфейсы с пробелами в аутентификации и проверке также уязвимы для внедрения кода, особенно, когда злоумышленник отправляет скрипт на сервер приложения через запрос API.
DDoS-атаки перегружают ресурсы сервера большим количеством запросов API, чтобы замедлить или привести к сбою работу веб-сервера. Часто такие атаки осуществляются одновременно из нескольких вредоносных источников.
Ниже мы рассмотрим несколько полезных советов по обеспечению безопасности API. Следуя нашим рекомендациям, вы значительно снизите риски, которые могут возникнуть с поддержкой API.
Перед обработкой запроса API выполняет аутентификацию, то есть проверяет личность пользователя или программу, от которой поступил запрос.
Как правило, API-интерфейсы аутентифицируются с помощью пароля, многофакторной аутентификации или токена. Чтобы аутентифицировать запрос с помощью токена, API сопоставляет токен в запросе, с токеном в базе данных.
Протокол OAuth — это общепринятый стандарт для аутентификации пользователей API. OAuth основан на HTTP, поэтому он будет удобен для REST API.
На базовом уровне OAuth дает администраторам API возможность предоставлять токены аутентификации утвержденным третьим лицам.
Администраторы могут устанавливать собственные правила доступа, которые определяют, какие запросы API разрешены в зависимости от источника запроса.
После проверки личности пользователя, API должен предоставить доступ к авторизованным ресурсам. Например, пользователю может быть разрешен доступ к API, но если у него нет разрешения добавлять информацию в базу данных приложения с помощью метода POST, то любой запрос будет отклонен. Информация об авторизации также может содержаться в запросе в виде токена.
В отличие от других типов API, API REST должны аутентифицировать и авторизовать каждый запрос на сервере, даже если несколько запросов исходят от одного и того же пользователя.
Авторизация может регулироваться ролями пользователей, где каждая роль будет иметь разные разрешения. Роли упрощают контроль и изменение разрешений пользователей, а также уменьшают вероятность того, что злоумышленник получит доступ к конфиденциальным данным.
Бывает, что запросы из достоверных источников являются попытками взлома. Поэтому API-интерфейсам нужны правила, чтобы определить, является ли запрос достоверным или недействительным и вредоносным.
Запрос API должен обрабатываться только после того, как его содержимое пройдет тщательную проверку.
Для предотвращения MITM-атак любая передача данных от пользователя на сервер API или наоборот должна быть зашифрована.
Поскольку API-интерфейсы REST используют HTTP, шифрование происходит с помощью протокола Transport Layer Security (TLS) или его предыдущей итерации, протокола Secure Sockets Layer (SSL).
Эти протоколы содержат букву S в «HTTPS» («S» означает «безопасный») и являются стандартом для шифрования веб-страниц REST API.
TLS/SSL шифруют данные только при их передаче. Они не шифруют данные, которые находятся за пределом вашего API, поэтому конфиденциальные данные также должны быть зашифрованы на уровне базы данных.
Все ответы, которые вы отправляете конечному пользователю, должны включать только информацию об успешном или неудачном выполнении запроса, а также любую другую информацию, непосредственно связанную с ресурсом. Другими словами, вам нужно избегать чрезмерного обмена данными.
Чтобы предотвратить атаки, API может наложить ограничение скорости, чтобы контролировать количество запросов к серверу API.
Существует два основных способа ограничения скорости запросов API: квоты и регулирование. Квоты ограничивают количество разрешенных запросов от пользователя в течение определенного промежутка времени, в то время как регулирование замедляет соединение пользователя, но позволяет ему использовать ваш API.
Оба метода должны разрешать обычные запросы API, но предотвращать потоки трафика.
Источник: hubspot.com
Я даю согласие OOO «ЭсБилдер» (далее «BINN») на обработку моих персональных данных в соответствии со статьями 6, 9, 10, 18 Федерального закона от 27 июля 2006 года № 152-ФЗ «О персональных данных», указанных в онлайн-форме и/или предоставленных мною с целью:
Способы обработки персональных данных могут быть любыми, включая сбор, систематизацию, накопление, хранение, уточнение, обновление, изменение, воспроизведение, обезличивание, блокирование и уничтожение.
Настоящее согласие применяется в отношении обработки следующих данных: имя, номер телефона, адрес электронной почты (E-mail).
Настоящее согласие предоставляется сроком на пять лет. По истечении указанного срока действие согласия считается продленным на каждые следующие пять лет при отсутствии сведений о его отзыве.
Согласие может быть отозвано мною в любой момент путем направления в BINN подписанного мною письменного заявления.