c# - 如何保护 azure web 应用程序免受滥用电话的侵害?
问题描述
我有两个 web 应用程序,一个是 angular 6,另一个是 .net core web api。Angular 应用程序使用 API 来获取数据。其中一些 api 是公共 api。这意味着调用它们不需要身份验证。
我的问题是,保护这些公共 API 的最佳方法是什么?通过保护,我的意思是不让匿名用户调用这些 api 和滥用数据。
在我看来,这些是我能做的:
- CORS,但问题是邮递员和其他休息工具仍然可以调用我的api
- 使用 azure api 管理?通过速率限制?有没有更好的办法?
- 使用某种 api 密钥,但 Angular 应用程序无论如何都会公开它们。
- 在我的 c# 应用程序中,我得到用户代理、主机、呼叫来源并基于这些进行限制?
基本上,我想限制匿名用户操纵和调用我的帖子 api,并将不相关或重复的数据推送到我的后端,而不使用任何类型的 AD,因为我的 api 将公开。我希望只有少数授权的应用程序可以调用我的 api。
请告诉我以上哪一项是正确的,并请推荐一种更好的方法。
PS:我的后端是.net core 2.2,
谢谢
解决方案
我可以推荐以下解决方案,
- 在 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
推荐阅读
- wordpress - 是否有特定于 post_type-term 组合的模板?
- xml - 如果传递多个值进行匹配,XSLT 2.0 key() 函数将不起作用
- amazon-web-services - 当文件上传到 S3 中的特定文件夹时,是否可以触发 AWS lambda 函数?
- kubernetes - Operator-SDK 和 NewController 功能
- excel - 从一个excel库中检索值并将其放在另一列中
- python - Python:从 DataFrame 中获取不同的男性和女性名字的数量
- rest - 使用 REST API 在标头中进行身份验证
- java - 如果类别字符串具有重音字符,则 EWS SOAP 请求在 updateItem 上失败
- sql - 基于 zplid 和代码类型,我无法在 zfeaturekey 列的所有行上获得 NULL 行?
- python - 在 Python 中,如何键入提示“具有属性”?