Предотвращение взлома API - PullRequest
       0

Предотвращение взлома API

0 голосов
/ 25 сентября 2019

У нас есть REST-API на основе ASP.NET WebApi.И мы распространяем клиентскую библиотеку bia nuget .net для связи с нашим API.

Контроллеры WebApi и клиентская библиотека совместно используют модели клиентов.Если я добавлю какое-то новое необязательное поле в модель - это нормально, но когда в каком-то новом выпуске мы случайно добавим новое значение перечисления в API, предыдущая версия клиента сгенерирует исключение, если получит новое значение перечисления.

Итак, есть ли способ проверить обратную совместимость API и клиента и не допустить взлома изменений?

Ответы [ 2 ]

1 голос
/ 25 сентября 2019

Это похоже на типичный пример использования версий REST API.

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

Различные режимы управления версиями:

  1. Управление версиями URL

    api.example.com / v1

  2. Управление версиями с использованием заголовка, если вы хотите сохранить один URL для ресурса

    Принять: Версия: v1

См. Руководство по версиям API для Microsoft здесь .

Библиотека довольно хорошо документирована.

0 голосов
/ 25 сентября 2019

В данном конкретном случае: don't использовать enum в клиентских библиотеках.Такая ситуация будет происходить каждый раз, когда вам нужно расширить это перечисление.Я полагаю, вы не хотите создавать новую версию API для каждого такого изменения.Внутри вашего клиента вы должны принять строковые значения и затем попытаться разобрать его.Если он проанализирован - ОК, если нет - задайте YourEnum.None.

В общем: чтобы предотвратить внесение изменений, вы должны создать интеграционные тесты и запустить их на своем сервере CI.Если вы добавите новое правило в API - существующие интеграционные тесты не должны провалиться.При этом нет 100% гарантии.Это зависит от того, насколько вы дотошны при написании интеграционных тестов.Та же самая история, что и для юнит-тестирования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...