用于无状态应用程序的 Python Flask-WTF CSRF
Posted
技术标签:
【中文标题】用于无状态应用程序的 Python Flask-WTF CSRF【英文标题】:Python Flask-WTF CSRF for Stateless Application 【发布时间】:2020-05-21 02:24:35 【问题描述】:我可以知道如何在不使用 cookie 的情况下使用 python Flask-WTF 库实现 CSRF,正如 James Ward (http://www.jamesward.com/2013/05/13/securing-single-page-apps-and-rest-services) 的这篇文章 (CSRF Token necessary when using Stateless(= Sessionless) Authentication?) 的回答中提到的那样。
目前我在 Google Cloud Run 中托管我的应用程序,它是无服务器和无状态的,它遇到了一个问题,即客户端在第一次加载后发出后续 ajax 请求时,有时(不是所有时间)找不到会话当服务器自动扩展和缩减时,在第一次加载期间创建的令牌。
提前谢谢你!
【问题讨论】:
【参考方案1】:关于如何使用 CSRF 的示例。
from flask import Flask
from flask_wtf.csrf import CSRFProtect
app = Flask(__name__) # initialise the flask app
app.config['SECRET_KEY'] = 'secret!' # create the secret key
csrf = CSRFProtect(app) # protect the csrf app
csrf.init_app(app) # initialise the csrf with the app
希望这可以帮助您了解如何在不初始化 cookie 的情况下使用 CSRF
【讨论】:
嗨@z.yea,感谢您的回复。但我认为我的问题不够清楚。我面临的问题是,当 Cloud Run 自动扩展和缩减之前在服务器上创建的 CSRF 会话令牌时,它会显示错误“CSRF 会话令牌丢失”。有没有办法解决这个问题或者不需要使用 CSRF 会话令牌?我当前的源代码与您在上面显示的相同。以上是关于用于无状态应用程序的 Python Flask-WTF CSRF的主要内容,如果未能解决你的问题,请参考以下文章
Google Cloud Profiler 显示 [未知 - 无 Python 线程状态]
将 ehcache 用于通过 docker 部署的应用程序,违反无状态规则
如何将 Spring Security 的 CSRF 功能用于无状态端点?