Flask教程笔记-CSRF token保护验证

#! coding=utf8
from flask import Flask, render_template
from flask_sqlalchemy import SQLAlchemy
from flask_bootstrap import Bootstrap
from flask_wtf.csrf import CsrfProtect
#导入CsrfProtect的模块
app = Flask(__name__)
app.config.from_object('config')
db = SQLAlchemy(app)
csrf = CsrfProtect(app)#app项目加载CsrfProtect
bootstrap = Bootstrap(app)
from app.views import IndexView

User Form验证模块代码

# -*- coding:utf-8 -*-
__author__ = 'pyphrb'
from flask_wtf import Form
from wtforms import StringField,SubmitField
from wtforms.validators import DataRequiredclass MyForm(Form):name = StringField('name', validators=[DataRequired(message=u"姓名不能为空")])submit = SubmitField(u'提交')

html代码index.html

<form method="POST" action="/submit">{{ form.csrf_token }}#判断name的表单验证是否有问题,有问题直接显示error信息{% if form.errors.name %}{{ form.name.label }} {{ form.name(size=20) }}{% for error in form.errors.name %}<span>{{ error }}</span>{% endfor %}{% else %}{{ form.name.label }} {{ form.name(size=20) }}{% endif %}{% if form.errors.csrf_token  %}{% for error in form.errors.csrf_token %}<span>{{ error}}</span>{% endfor %}{% endif %}#判断csrf是否有错误{{ form.submit }}
</form>

controller的view信息

__author__ = 'pyphrb'
from app import app
from flask import render_template, url_for, request, make_response
from flask import session, redirect, escape
from app.form import User
from app import csrf@app.route('/', methods=['GET','POST'])
def index():userForm = User.MyForm(request.form)return render_template('Index/index.html', form=userForm)@app.route('/submit', methods=['POST'])
def submit():userForm = User.MyForm()if request.method == 'POST' and userForm.validate():#判断访问是否是post并且通过验证表单,进行一下操作print 'xxx'return "xxxx"else:#验证失败,返回模板,提示错误信息return render_template('Index/index.html', form=userForm)

csrf验证注意事项

当你定义你的表单的时候,如果犯了 这个错误_ : 从 wtforms 中导入 Form 而不是从 flask.ext.wtf 中导入,CSRF 保护的大部分功能都能工作(除了 form.validate_on_submit()),但是 CSRF 保护将会发生异常。在提交表单的时候,你将会得到 Bad Request/CSRF token missing or incorrect 错误。这个错误的出现就是因为你的导入错误,而不是你的配置问题。

Flask教程笔记-CSRF token保护验证相关推荐

  1. FLASK RESTFUL TOKEN用户验证笔记

    笔记1 REST要求无状态,可以理解为没有session,而且session的存储遇到分布式集群的情况就比较难搞,所以对于用户验证目前网上大多数做法是token方式,第一次登录的时候,先提交用户名密码 ...

  2. flask token 登录验证

    flask token 登录验证 视频 https://www.youtube.com/watch?v=J5bIPtEbS0Q 代码 #!/usr/bin/env python # -*- encod ...

  3. 【Flask项目2】生成token和验证token(11)

    用户登录 用户登录的功能我们使用 Json Web Token(JWT) 来为登录用户生成token令牌,并返回给客户端,客户端有了令牌之后,每次访问服务器,都携带Token,后台经过验证就能知道当前 ...

  4. Burpsuite+SQLMAP绕过Token保护(Burpsuite Macros应用)

    0×00 带有token 保护的应用 有这样的一个应用(自己写的一个, 后面会附上代码),你手动去注入的时候,发现是有注入点的 加上一个单引号,报错了 确实是有注入 但是用sqlmap跑的时候却没有 ...

  5. cookie和token身份验证

    HTTP Cookie(也叫Web Cookie或浏览器Cookie)是服务器发送到用户浏览器并保存在本地的一小块数据,它会在浏览器下次向同一服务器再发起请求时被携带并发送到服务器上.通常,它用于告知 ...

  6. 千锋Flask学习笔记

    千锋Flask学习笔记 文章目录 千锋Flask学习笔记 写在前面 1. Flask介绍 2. Views 3. Request 4. Response 5. 会话技术 6. 模型和模板 7. 数据传 ...

  7. 【Docker 完整版教程笔记】

    文章目录 前言 Docker 概述 Docker 架构图 Docker安装 在线安装 离线安装 Docker 常用命令 帮助命令(--help) 镜像命令(images) docker images ...

  8. Flask后端笔记(三)Jinja2模板、过滤器、表单、宏、模板继承、包含

    Flask后端笔记 Jinja2模板 基本流程 变量 过滤器 字符串过滤器 支持链式使用过滤器 列表过滤器 自定义过滤器 表单 不使用Flask-WTF扩展时,表单需要自己处理 使用Flask-WTF ...

  9. JWT: 基于Token的验证

    现在SPA(Single Page Application, 单页面应用)和前后端分离已经是主流. 基于Token的验证非常适合这种构架. Difference between Token-based ...

最新文章

  1. mysql处理时间_MYSQL时间处理  (转)
  2. py-kms使用方法
  3. 杭电1420 Prepared for New Acmer
  4. NYOJ277 - 车牌号
  5. 黑客攻防实战入门读书笔记
  6. 【项目篇- 项目团队部分怎么写、如何作图?(两千字图文总结建议)】创新创业竞赛项目计划书、新苗国创(大创)申报书、挑战杯创业计划竞赛
  7. 时间序列学习(1):平稳性、自相关性
  8. Linux 的日志服务器 详解(Rsyslog)
  9. DHCP协议的运行过程
  10. 反客为主?00 后大学生 “反向背调” 雇主,Z 世代要重塑职场
  11. 用Vue做一个音乐app
  12. Microsemi Libero系列教程(一)——Libero开发环境介绍、下载、安装与注册
  13. jdk安装,提示错误1335
  14. 记WSL下MySQL安装和使用BUG
  15. GreenDao 使用详解(入门篇)
  16. 网上购车平台低首付购车噱头的运作模式
  17. (Python)Numpy矩阵增加/减少一个维度
  18. 【泛微ecology】/usr/WEAVER/ecology/filesystem目录下 文件说明
  19. 24个提高python新手效率的小技巧
  20. 结对项目—第一次作业(俄罗斯方块)

热门文章

  1. 生活不止眼前的苟且,还有诗和远方---面朝大海,春暖花开
  2. 做什么副业挣钱快?2021有哪些挣钱的副业?
  3. Linux下的压缩解压缩命令详解
  4. 【华为OD机试真题 python】火星文计算 【2022 Q4 | 100分】
  5. Java图表 ChartDirector
  6. oracle 循环查找,oracle for循环查找结果
  7. Springboot @SpringBootTest 单元测试执行两次的问题
  8. 上海铁路局2012春运车票预售期和起售时间将调整
  9. 读《怦然心动的人生整理魔法》
  10. JavaScript-关系运算符详解