表单处理Flask-WTF(一)

1. 为什么使用Flask-WTF?

  • request对象公开了所有客户端发送的请求信息。特别是request.form可以访问POST请求提交的表单数据。

  • 尽管Flask的request对象提供的支持足以处理web表单,但依然有许多任务会变得单调且重复。表单的HTML代码生成和验证提交的表单数据就是两个很好的例子。

优势:

  • Flask-WTF扩展使得处理web表单能获得更愉快的体验。该扩展是一个封装了与框架无关的WTForms包的Flask集成。

2. Flask-WTF 提供的功能

  • 集成 wtforms。
  • 带有 csrf 令牌的安全表单。
  • 全局的 csrf 保护。
  • 支持验证码(Recaptcha)。
  • 与 Flask-Uploads 一起支持文件上传。
  • 国际化集成。

3. 跨站请求伪造(CSRF)保护实现

默认情况下,Flask-WTF保护各种形式对跨站请求伪造(CSRF)攻击。一个CSRF攻击发生在一个恶意网站发送请求给受害者登录的其他网站。

为了实现CSRF保护,Flask-WTF需要应用程序去配置一个加密密钥。Flask-WTF使用这个密钥去生成加密令牌用于验证请求表单数据的真实性。示例4-1展示如何配置加密密钥。

app = Flask(__name__)
app.config['SECRET_KEY'] = 'hard to guess string'
  • app.config字典通常是框架、扩展或应用程序自身存放配置变量的地方,可以使用标准字典语法添加配置值到app.config中。配置对象提供方法来从文件或环境导入配置值。

  • SECRET_KEY配置变量作为Flask和一些第三方扩展的通用加密密钥。加密的强度取决于这个变量的值。给你构建的每个应用程序选择不同的密钥,并确保这个字符串不被其他任何人知道。

*注:为了提高安全性,密钥应该存储在一个环境变量中,而不是嵌入到代码中。

4. 跨站请求伪造(CSRF)攻击原理图这里写图片描述

猜你喜欢

转载自blog.csdn.net/gf_lvah/article/details/81128219
今日推荐