Как защитить лазурное веб-приложение от оскорбительных звонков? - PullRequest
0 голосов
/ 29 мая 2019

У меня есть два веб-приложения на лазурном, одно угловое 6, другое - .net core web api. Angular приложение использует API для получения данных. Некоторые из этих API являются публичными API. Это означает, что для их вызова не требуется аутентификация.

Мои вопросы: каковы наилучшие подходы для защиты этих публичных API? Под защитой я подразумеваю не позволять анонимным пользователям называть эти данные API и злоупотребления.

По-моему, вот что я могу сделать:

  1. CORS, но проблема в том, что почтальон, а другой инструмент по-прежнему может вызывать мой apis
  2. Используете управление Azure API? Ограничением скорости? Есть ли лучший способ?
  3. Используйте какой-нибудь ключ API, но угловое приложение все равно их выставит.
  4. В моем приложении на c # я получаю пользовательский агент, хост, источник вызова и ограничиваюсь на основании этого?

По сути, я хочу запретить анонимному пользователю манипулировать и вызывать мой пост apis и передавать не релевантные или дублирующие данные в мой бэкэнд без использования какого-либо AD, так как мой apis будет общедоступным. Я хочу, чтобы только несколько авторизованных приложений могли вызвать мой apis.

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

P.S .: мой бэкэнд - .net core 2.2,

Спасибо

1 Ответ

1 голос
/ 30 мая 2019

Я могу порекомендовать ниже решение,

  1. Разместите свои API в приложении Azure API и импортируйте их в APIM. Затем настройте ограничение IP-адреса для API APP, используя IP-адреса APIM. Это означает, что только APIM может получить доступ к вашему хосту API. или вы можете внедрить аутентификацию сертификации клиента между APIM и хостом API. https://docs.microsoft.com/en-us/azure/app-service/app-service-ip-restrictions https://docs.microsoft.com/en-us/azure/api-management/api-management-howto-mutual-certificates

02.Далее включите ключ подписки / ключ API в APIM и сохраните их в хранилище ключей Azure. Таким образом, вам не нужно жестко кодировать эти ключи на веб-интерфейсе. Я надеюсь, что вы разместите это приложение Angular на Azure. (Я не специалист по Angular ... просто проверьте онлайн документы) https://docs.microsoft.com/en-us/azure/key-vault/quick-create-node

03. Позднее в зависимости от вашего сценария. При необходимости вы можете применять тарифные политики. https://github.com/MicrosoftDocs/azure-docs/blob/master/articles/api-management/api-management-sample-flexible-throttling.md

...