Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 限制对烧瓶REST API的访问_Python_Rest_Api_Flask_Cors - Fatal编程技术网

Python 限制对烧瓶REST API的访问

Python 限制对烧瓶REST API的访问,python,rest,api,flask,cors,Python,Rest,Api,Flask,Cors,我已经用python和flask构建了一个GetRESTAPI。 我在自己的网站上调用这个API,我想避免其他网站使用它 为此,我在api定义的头中设置 '访问控制允许来源'='**' 是****允许拨打电话的网站域名 这足以避免其他人使用我的api吗?是的,请确保使用正确的格式 访问控制允许源: 这将只允许来自example.com的请求 至于你的第二个问题,如果其他人正在使用或可以从mydomain.com发送请求,那么他们当然可以使用你的API。如果您真的担心其他人使用您的API,我强烈建

我已经用python和flask构建了一个GetRESTAPI。 我在自己的网站上调用这个API,我想避免其他网站使用它

为此,我在api定义的头中设置

'访问控制允许来源'='**'

是****允许拨打电话的网站域名


这足以避免其他人使用我的api吗?

是的,请确保使用正确的格式

访问控制允许源:

这将只允许来自example.com的请求

至于你的第二个问题,如果其他人正在使用或可以从mydomain.com发送请求,那么他们当然可以使用你的API。如果您真的担心其他人使用您的API,我强烈建议您使用Flask WTF实现CSRF保护,这样就没有人可以伪造请求。

在Flask中执行COR的更好方法

我可能会使用Flask CORS为您的Flask项目添加适应性跨源资源共享功能

第一个pip安装烧瓶CORS:

pip install -U flask-cors
然后在应用程序实例化内部实现:

from flask import Flask
from flask_cors import CORS

app = Flask(__name__)
cors = CORS(app, resources={r"/api/*": {"origins": "example.com"}})
这将允许您仅从example.com访问该特定路径,并为您处理所有标题,与Avian建议的类似,但方式类似于Flasky。当然,如果您希望特定的源站或任何源站能够访问完整的API或部分API,您可以使用通配符

这足以避免其他人使用我的api吗

不,这只会阻止人们使用JS从其他网站/来源访问您的API。它不会阻止人们使用CuRL或等效工具直接访问您的API。如果您想阻止对API的访问,您应该实现某种形式的令牌/密钥身份验证凭据,以便仅对您希望获得访问权限的用户进行身份验证,并将未经授权的401返回给任何没有有效凭据的用户。

CORS 我已经用python和flask构建了一个GetRESTAPI。我在自己的网站上调用这个API,我想避免其他网站使用它

Robert Putt建议使用Flask CORS包是解决这一问题的正确方法,但他自己也指出,这不会阻止其他人使用您的API,这将导致我们进入下一个问题,我将尝试更详细地解决

滥用原料药 这足以避免其他人使用我的api吗

简短的回答是否定的,因为您的API可以通过许多其他方式使用,比如使用邮递员、自动脚本或被机器人废弃,仅举几例

保护API的通常步骤是使用令牌形式的秘密,如用于识别执行请求的内容的API密钥,也称为web应用或移动应用,以及用于识别执行请求的用户的用户身份验证令牌,但两者都注定会很容易地从其原始使用范围中提取出来,并被攻击者用在自动脚本或Postman等工具中手动使用。这在攻击者控制的设备中很容易实现,但也可以通过攻击者笔记本电脑中运行的免费wifi捕获门户实现。当攻击者在机场、火车站/公共汽车站和其他公共场所使用免费wifi捕获门户技术时,他们将诱骗用户安装自定义证书,使其能够解密所有https连接,从而获得对其令牌的访问权,因此,能够在用户不知情的情况下代表他们执行对API服务器的调用,这将在允许用户正常浏览站点的同时完成

因此,任何在客户端运行并且需要一些秘密才能访问API的东西都注定会被以多种方式滥用,并且您可以了解更多关于移动API安全技术的文章。本文将教您如何使用API密钥、用户访问令牌、HMAC、TLS固定来保护API,以及如何绕过它们。这些文章更多地是针对移动应用程序的API,但它们很好地说明了为什么不能在web应用程序上下文中有效地保护API,只能使其更加困难


最后,我建议您的web应用程序也使用,这将允许您设置内容安全策略,并实时报告违规情况。

此操作。此外,确保保护自己不受CSRF的影响,并对您的私人路由实施基于令牌的访问。