小编jef*_*eff的帖子

生产环境的 Flask-Login 与 Flask-Security

我正在构建一个功能,供用户注册、登录、验证和授权自己,特别是使用 Python (Flask) 作为后端。我找到了一些解决方案,例如flask-loginflask-security

据我了解,flask-login实际上并没有进行任何身份验证,而是将所有 JWT 类型的工作留给我,而是flask-security处理这些场景。

话虽这么说,我有几个问题:

  1. 在我看来,它flask-security是建立在flask-login. 因此,使用该库似乎更好(至少对我来说),而不是尝试在重新设计身份验证方面重新发明轮子。最后一次更新是flask-security在 2020 年 4 月 23 日。这让我相信人们仍然在积极寻找改进方法。也就是说,flask-security两者是更好的选择吗?

  2. 我也想在生产中使用它。那么这也是一个可行的解决方案吗?

python security production-environment flask

9
推荐指数
1
解决办法
5701
查看次数

当请求中存在 CSRF 令牌时,“CSRF 会话令牌丢失”

我习惯Flask-WTF将其 CSRF 安全功能用于我的 API。正如标题所示,我从 API 获得的响应显示“CSRF 会话令牌丢失”。但是,在检查开发人员工具中的网络选项卡后,最初访问 API 返回的会话出现在 cookie 部分中。此外,CSRF 令牌存在于请求标头中。下面是一些图片来说明我的意思:

请求失败

在此输入图像描述

请求成功

在此输入图像描述


过程

  1. 客户端向 API 发出初始请求
  2. API 创建会话,在浏览器中设置 cookie,并在响应标头中返回 CSRF 令牌
  3. 客户端在每个后续请求中附加 CSRF 令牌

例子

前端是用React开发的,后端是用Python(Flask)开发的。两者均由Heroku托管。域名注册商位于GoDaddy,我使用Cloudflare作为我的 DNS 来重新路由流量并设置正确的域名。

示例请求如下所示:

const headers = {
   'Content-Type': 'application/json',
   'X-CSRF-Token': csrfToken 
};
...
const handleFormSubmission = async e => {
    e.preventDefault();
    await axios.post('https://backend.com/add-results', { tokenId: tokenId }, { withCredentials: true, headers: headers })
}
Run Code Online (Sandbox Code Playgroud)

并且后端有以下设置:

...
    CORS(app, origins=["https://www.example.com"], expose_headers=["Content-Type", "X-CSRFToken"], …
Run Code Online (Sandbox Code Playgroud)

python flask reactjs

7
推荐指数
1
解决办法
7346
查看次数