首页 > 解决方案 > 如何保护 azure web 应用程序免受滥用电话的侵害?

问题描述

我有两个 web 应用程序,一个是 angular 6,另一个是 .net core web api。Angular 应用程序使用 API 来获取数据。其中一些 api 是公共 api。这意味着调用它们不需要身份验证。

我的问题是,保护这些公共 API 的最佳方法是什么?通过保护,我的意思是不让匿名用户调用这些 api 和滥用数据。

在我看来,这些是我能做的:

  1. CORS,但问题是邮递员和其他休息工具仍然可以调用我的api
  2. 使用 azure api 管理?通过速率限制?有没有更好的办法?
  3. 使用某种 api 密钥,但 Angular 应用程序无论如何都会公开它们。
  4. 在我的 c# 应用程序中,我得到用户代理、主机、呼叫来源并基于这些进行限制?

基本上,我想限制匿名用户操纵和调用我的帖子 api,并将不相关或重复的数据推送到我的后端,而不使用任何类型的 AD,因为我的 api 将公开。我希望只有少数授权的应用程序可以调用我的 api。

请告诉我以上哪一项是正确的,并请推荐一种更好的方法。

PS:我的后端是.net core 2.2,

谢谢

标签: c#azuresecurityazure-web-app-serviceazure-api-management

解决方案


我可以推荐以下解决方案,

  1. 在 Azure API 应用上托管您的 API 并将其导入 APIM。然后使用 APIM 的 IP 配置 API APP 的 IP 限制。这意味着,只有 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.接下来在 APIM 上启用订阅密钥/API 密钥并将这些密钥保存在 Azure 密钥保管库中。所以你不需要在前端硬编码这些键。我希望你在 Azure 上托管这个 Angular 应用程序。(我不是 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


推荐阅读