19 найкращих методів безпеки API, які слід застосовувати та залишатися в безпеці

Безпека API є одним із найважливіших аспектів, про який вам потрібно подбати майже в будь-якій програмі.

Сьогодні API є найкращим способом інтеграції вашої програми з іншими програмами. Вони забезпечують шлюз до вашої програми, тому API мають бути достатньо безпечними, щоб ви не отримували небажаних відвідувачів.

Давайте розглянемо деякі вразливості API, які можуть становити загрозу для вашої програми.

Поширені вразливості API

#1. Міжсайтовий сценарій (XSS)

XSS-атаки поширені у веб-додатках, але також можуть відбуватися через API, якщо вхідні дані користувача не очищаються належним чином. Зловмисники можуть запускати шкідливі скрипти на сервері та отримувати доступ до конфіденційних даних.

#2. Порушення обмеження швидкості

Порушення функції обмеження швидкості API може дати зловмисникам можливість бомбардувати ваш сервер величезною кількістю запитів. Згодом може виникнути збій сервера, і вашій клієнтській базі може бути важко зв’язатися з вами.

#3. Неправильна автентифікація

Якщо API неправильно налаштовано за допомогою надійного методу автентифікації, будь-яка третя сторона може отримати доступ до вашої системи через API. Авторизація також важлива, оскільки вона визначає, хто може отримати доступ до якого ресурсу API до певного періоду часу.

#4. Небезпечна передача даних

Дані, які надсилаються споживачам вашого API, мають бути зашифровані на шляху. Якщо це не так, то існує ймовірність того, що зловмисники можуть отримати витік даних за допомогою атаки “людина посередині”. Ось чому для передачі даних завжди рекомендується використовувати безпечний протокол, наприклад HTTPS.

#5. Застарілі/застарілі залежності

Інтерфейси API мають багато зовнішніх залежностей, які використовуються для виконання складних завдань і для розвантаження складної логіки. Якщо ці залежності мають вразливість, то опосередковано ваш API також стає вразливим. Завжди оновлюйте версії залежностей.

Тепер, коли ви знаєте вразливості API, давайте розглянемо деякі найкращі методи захисту вашого API.

Читайте також: Найкращі альтернативи Postman для тестування API для розробників

Безпека API – найкращі методи

Керування версіями API

Дуже важливо регулярно відстежувати та оновлювати свої API за допомогою оновлених залежностей, оскільки ці залежності можуть містити серйозні вразливості. Ви можете повідомити користувачів API, випустивши версію виправлення API відповідно до семантичне версії.

Підтримуйте свій API в актуальному стані — це найменше, що ви можете зробити, щоб запобігти його використанню зловмисниками.

Аутентифікація

Існує безліч способів автентифікації користувача API. Найпростішим способом є використання імені користувача/пароля, але це надто просто і залежить лише від того, наскільки надійним є пароль.

  Antivirus Plus 2018 зі знижкою 58% (діє 6 грудня)

Іншим способом є використання ключів API для доступу до API. Ви можете надати кожному користувачеві API унікальний ключ, який він зможе використовувати.

Аутентифікація JWT — це техніка, за якої облікові дані користувача перетворюються на маркер із цифровим підписом, а потім надсилаються користувачеві. Потім користувач надсилає той самий токен для кожного запиту на сервер для перевірки сервером. JWT також мають термін дії.

Найефективнішим рішенням є OAuth. Це дозволяє третім сторонам отримати доступ до API з уже наявними обліковими даними для входу. Наприклад, якщо ви вже ввійшли в Google, програма може використовувати ці облікові дані для входу у ваш обліковий запис без пароля. Ваш обліковий запис Google стає паролем.

Авторизація

Авторизація – це інша річ, ніж автентифікація. Поки ви авторизуєте користувача, він уже автентифікований для використання вашого API, і це лише те, до якого ресурсу API він може отримати доступ.

Наприклад, професор університету може мати доступ до всіх студентів у групі, але один студент може отримати доступ лише до їхніх даних. У цьому випадку студент і професор автентифіковані в одній системі, але мають право виконувати лише певні дії.

Забезпечення належної роботи авторизації API може запобігти неавторизованому доступу до ресурсу.

Редакція даних

Редагування даних — це процес вибіркового розкриття інформації користувачам і захисту конфіденційної інформації. Належна авторизація може призвести до кращого редагування даних. Норми конфіденційності даних, такі як GDPR, також базуються на редагуванні даних. Небажана третя сторона не повинна мати змоги зазирнути в особисті або конфіденційні дані.

Ви можете реалізувати реакцію даних, реалізувавши проміжне програмне забезпечення або менеджер шлюзу.

Шифрування

Це стало найважливішою перевіркою безпеки в сучасному світі. Шифрування є обов’язковим, якщо ви маєте справу з будь-якою конфіденційною інформацією. Найменше шифрування, яке ви можете зробити, це використання протоколу HTTPS, який використовує TLS (Transport Layer Security) рукостискання та SSL (Secure Socket Layer).

Наскрізне шифрування – ще один спосіб надійно захистити дані під час передачі. Дані, які зберігаються в базі даних, також повинні бути зашифровані на випадок, якщо зловмисник зможе зламати базу даних і отримати доступ до даних.

Обробка помилок

Інформація про інфраструктуру додатка може витікати до зловмисників через детальні повідомлення про помилки. Щоб уникнути цього, зберігайте повідомлення про помилки загальними та запроваджуйте спеціальну обробку помилок. Переконайтеся, що жодна конфіденційна системна інформація не зареєстрована в деталях помилки.

Перевірка введених даних і очищення даних

Перевірка вхідних даних дуже важлива під час роботи з API, оскільки ви не знаєте вхідні дані, поки користувач не надішле їх.

  Як підсумки рецензій зі штучним інтелектом Amazon полегшать прийняття рішень про покупки

Очищення — це процес видалення будь-якого небажаного виконуваного коду з корисного навантаження. Зловмисник може ввести сценарій Javascript, і якщо ви не очистите його перед передачею у свій HTML, він виконуватиметься як сценарій і отримуватиме дані.

Неналежна дезінфекція може призвести до атак міжсайтових сценаріїв (XSS).

Системи виявлення вторгнень

Також відомі як IDS, системи виявлення вторгнень допомагають контролювати та виявляти мережевий трафік, що надходить до API. Якщо він виявить будь-яку незвичну поведінку в трафіку, він може зареєструвати та сповістити відповідні органи.

Загалом існує два типи систем: мережеві та хост-базовані. У мережевих системах система розподіляється між різними контрольними точками для моніторингу трафіку в кількох точках. У системі на основі хоста він розгортається на одному хості.

Такі системи є чудовим способом визначити, хто намагається отримати доступ до вашої мережі, перш ніж вони перешкодять вашим даним.

Білий список IP-адрес

Білий список IP-адрес — це спосіб дозволити лише вибраним IP-адресам доступ до вашого API та вашої мережі. Ця техніка може не працювати, якщо у вас є загальнодоступний API, оскільки надто складно перераховувати кожну IP-адресу.

Це вигідно, якщо ви знаєте, що лише деякі програми системи матимуть доступ до вашого API.

Веб-токени JSON

JWT зазвичай використовуються для автентифікації користувача шляхом надсилання користувачеві маркера з цифровим підписом, створеного з його облікових даних. Це працює, оскільки приховує фактичні облікові дані користувача, і вам також не потрібно зберігати облікові дані в базі даних або на стороні користувача.

JWT можна розділити на три секції: заголовок, корисне навантаження та підпис. Розділ корисного навантаження містить облікові дані користувача, а заголовок може містити таку інформацію, як використаний алгоритм. Розділ підпису підписується сервером і клієнтом цифровим підписом при кожному наступному запиті.

JWT зазвичай мають термін дії, після якого сервер генерує новий маркер і надсилає його користувачеві.

Логування та моніторинг

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

Обмеження швидкості

Якщо API не реалізує обмеження швидкості, він вразливий до атак DDoS через неочікуваний приплив мережевого трафіку. Зловмисники можуть засипати систему величезною кількістю запитів за невеликий проміжок часу, в результаті чого сервер виходить з ладу.

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

Безпечні залежності

Уразливості виникають не лише у вашому коді API, вони також можуть бути частиною будь-яких залежностей третіх сторін, які ви можете використовувати у своєму API. Ось чому важливо регулярно відстежувати та сканувати свої залежності та виявляти будь-які вразливості, які можуть бути в них.

  Як використовувати Face ID на вашому iPhone під час носіння маски

Ви можете реалізувати заплановане завдання для регулярного сканування та оновлення залежностей, якщо їх можна оновити за допомогою версії виправлення, що виправляє вразливість. Крім того, вибирайте залежності, які є більш безпечними та забезпечують часті оновлення безпеки.

Заголовки безпеки повинні повертатися разом із відповіддю API, щоб надати веб-переглядачу вказівки щодо безпеки API та того, як він має діяти. Важливі заголовки, які ви можете надіслати для підвищення безпеки:

  • Cache-Control: встановіть для нього значення no-store, щоб уникнути зберігання конфіденційної інформації у браузері.
  • Content-Security-Policy: встановлення параметра frame-ancestors «none» дозволяє уникнути кадрування відповідей API в iframe.
  • Content-Type: цей заголовок важливий, оскільки без нього браузер намагається вгадати тип відповіді API, і це може призвести до атак з перехопленням. Для відповіді JSON ви можете встановити значення application/json.
  • X-Content-Type-Options: установіть його на nosniff, щоб наказати браузеру не вгадувати тип MIME відповіді та шукати його лише в заголовку Content-Type.

Стандарти та рамки безпеки

Створіть свій API за допомогою попередньо визначених стандартів безпеки та фреймворків, щоб гарантувати, що ваш API відповідає останнім вимогам безпеки.

Термін дії токена

Якщо ви використовуєте токени носія, термін дії токена має бути коротким, оскільки для цього потрібна повторна автентифікація користувача, що добре. У JWT зазвичай є два токени: маркери доступу та оновлення. Токени оновлення живуть довго, а токени доступу — недовго. У будь-якому випадку ваші токени повинні мати термін дії.

Брандмауер веб-додатків

WAF, він же брандмауер веб-додатків, — це шлюз, який відстежує, фільтрує та блокує будь-який шкідливий мережевий трафік. Часто це найкращий спосіб запобігти зловмисним атакам через протокол HTTP.

Використання шлюзів API

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

Нульова довіра

Ідея стратегії нульової довіри полягає в тому, щоб не довіряти жодному централізованому джерелу. Безпека має бути багаторівневою та реалізована на кількох контрольно-пропускних пунктах.

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

Автоматика стає в нагоді в таких випадках. Ви можете використовувати автоматизовані інструменти для регулярного моніторингу та блокування незвичних або підозрілих дій.

Заключні слова

Ви можете зробити дуже багато, щоб захистити свої API. У програмному забезпеченні завжди є якісь лазівки, якими можна скористатися. Такі лазівки призводять до вразливості нульового дня. Отже, щоб захистити свої API, найменше, що ви можете зробити, це оновлювати їх згідно з останніми стандартами безпеки.

Подивіться на найкращі інструменти динамічного тестування безпеки програм.