如何保护Azure Web应用程序免受滥用呼叫的侵害?

时间:2019-05-29 17:30:10

标签: c# azure security azure-web-sites azure-api-management

我有两个天蓝色的Web应用程序,一个是角6,另一个是.net核心Web API。 Angular应用程序使用API​​来获取数据。这些API中有一些是公共API。这意味着无需身份验证即可调用它们。

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

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

  1. CORS,但问题是邮递员和其他休息工具仍然可以调用我的apis
  2. 使用Azure API管理吗?通过限速?有更好的方法吗?
  3. 使用某种api键,但是有角度的应用程序仍然会公开它们。
  4. 在我的c#应用中,我获得了用户代理,主机,呼叫来源并基于这些限制?

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

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

P.S:我的后端是.net core 2.2,

谢谢

1 个答案:

答案 0 :(得分:0)

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

  1. 在Azure API应用上托管您的API,并将其导入APIM。然后使用API​​M的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