我用 Flask 在 python 中构建了一个 get REST API。我从我自己的网站调用这个 API,我想避免其他网站使用它。
为此,在我设置的 api 定义的标题中
'Access-Control-Allow-Origin' = '****'
**** 允许拨打电话的网站域名。
这足以避免其他人使用我的 api 吗?
30秒到达战场
浏览 153回答 3
3回答
临摹微笑
CORS我用 Flask 在 python 中构建了一个 get REST API。我从我自己的网站调用这个 API,我想避免其他网站使用它。Robert Putt 建议使用 Flask CORS 包是解决这个问题的正确方法,但他自己指出这不会阻止您的 API 被其他人使用,这将导致我们到您的下一个问题,我将尝试在更多详情。API 滥用这足以避免其他人使用我的 api 吗?简短的回答是否定的,因为您的 API 可以通过许多其他方式使用,例如使用 Postman、自动化脚本或被机器人废弃,仅举几例。保护 API 的通常步骤是使用令牌形式的秘密,例如用于识别执行请求的内容的 API 密钥,也就是 Web 应用程序或移动应用程序,以及用于识别执行请求的用户的用户身份验证令牌,但两者都注定容易从其原始使用范围中提取出来,并被攻击者在自动化脚本中或在 Postman 等工具中手动使用。这在攻击者控制的设备中很容易完成,但也可以通过在攻击者的笔记本电脑中运行的免费 wifi 强制门户来完成。当攻击者在机场、火车站/公交车站和其他公共场所使用免费 wifi 强制门户技术时,他们会诱骗用户安装自定义证书,这将允许他们解密所有 https 连接,从而获得他们的令牌,因此,任何在客户端运行并需要一些秘密来访问 API 的东西都注定会以多种方式被滥用,您可以在有关移动 API 安全技术的本系列文章中了解更多信息。本文将教您如何使用 API 密钥、用户访问令牌、HMAC、TLS Pinning 来保护 API 以及如何绕过它们。这些文章更多地是在移动应用程序的 API 上下文中,但它们很好地说明了为什么不能在 Web 应用程序上下文中有效地保护您的 API,你只能让它变得更加困难。最后,我建议您的 Web 应用程序也使用CSP 标头,这将允许您设置内容安全策略并实时报告违规情况。