crsf-token表单防护

2023-11-06 20:12
文章标签 表单 token 防护 crsf

本文主要是介绍crsf-token表单防护,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

CRSF-Token

后端生成token

class CSRFTokenAPI(MethodView):def get(self):csrf_token = generate_csrf()  # 生成CSRF令牌response = make_response(jsonify({'csrf_token': csrf_token}))# response.set_cookie(httponly=True, secure=True, samesite='None')return response
csrf_token_view = CSRFTokenAPI.as_view('csrf_token_api')
bp.add_url_rule('/get_csrf_token/', view_func=csrf_token_view, methods=['GET'])

前端,以登录为例

async getCsrfToken() {try {const headers = {'Content-Type': 'application/json','Access-Control-Allow-Origin':'*','Access-Control-Allow-Credentials':'true',};const response = await axios.get(`${this.backendurl}/user/get_csrf_token/`,{withCredentials: true})// console.log(response)this.csrf_token=response.data.csrf_token;console.log("getCsrfToken:",this.csrf_token)} catch (error) {console.error(error);}},
async login() {await this.getCsrfToken()//邮箱提示信息元素var email1_msg = this.$refs.email1_msg;//密码提示信息元素var pwd1_msg = this.$refs.pwd1_msg;//登录表单html元素var loginform = this.$refs.loginform;// console.log(this.backendurl)// console.log("login里面的方法:",this.csrf_token)//添加令牌到请求头中const headers = { 'X-CSRFToken': this.csrf_token,'Content-Type': 'application/json','Access-Control-Allow-Origin':'*','Access-Control-Allow-Credentials':'true',};await axios.post(`${this.backendurl}/user/login/`, this.user_form,{headers:headers,withCredentials:true})// .post(`${this.backendurl}/user/login/`, this.user_form).then((res) => {if (res.data["status"] === 200) {//从返回的数据中获取user_idvar user_id = res.data["user_id"];var username=res.data["user_name"]var email=res.data["email"]// console.log(user_id,username,email)var userinfo={'user_id':user_id,'username':username,'email':email}this.$store.commit("userinfo/saveuserinfo", userinfo);//将user_id转成string类型// user_id = String(user_id);// console.log(user_id)// //将user_id加密// var cipherText = CryptoJS.AES.encrypt(//   user_id, "user_id" // ).toString();//存入cookie,参数:存入名称,存入值,存储时长// this.$cookies.set("user_id", cipherText,"24d");this.$router.push({name: "system",});} else {this.user_form.email = res.data["email"];this.user_form.password = res.data["password"];email1_msg.innerHTML = res.data["emailtip"];pwd1_msg.innerHTML = res.data["passwordtip"];loginform.classList.add("was-validated");}});},

注意一个要点,就是前端输入的url,要输入数字,不要用localhost,因为前后端的ip校验是文本校验,所以写localhost的话会有跨域问题。

这篇关于crsf-token表单防护的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/358819

相关文章

JSON Web Token在登陆中的使用过程

《JSONWebToken在登陆中的使用过程》:本文主要介绍JSONWebToken在登陆中的使用过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录JWT 介绍微服务架构中的 JWT 使用结合微服务网关的 JWT 验证1. 用户登录,生成 JWT2. 自定义过滤

Python实现自动化表单填写功能

《Python实现自动化表单填写功能》在Python中,自动化表单填写可以通过多种库和工具实现,本文将详细介绍常用的自动化表单处理工具,并对它们进行横向比较,可根据需求选择合适的工具,感兴趣的小伙伴跟... 目录1. Selenium简介适用场景示例代码优点缺点2. Playwright简介适用场景示例代码

最新Spring Security实战教程之表单登录定制到处理逻辑的深度改造(最新推荐)

《最新SpringSecurity实战教程之表单登录定制到处理逻辑的深度改造(最新推荐)》本章节介绍了如何通过SpringSecurity实现从配置自定义登录页面、表单登录处理逻辑的配置,并简单模拟... 目录前言改造准备开始登录页改造自定义用户名密码登陆成功失败跳转问题自定义登出前后端分离适配方案结语前言

Gin框架中的GET和POST表单处理的实现

《Gin框架中的GET和POST表单处理的实现》Gin框架提供了简单而强大的机制来处理GET和POST表单提交的数据,通过c.Query、c.PostForm、c.Bind和c.Request.For... 目录一、GET表单处理二、POST表单处理1. 使用c.PostForm获取表单字段:2. 绑定到结

javaScript在表单提交时获取表单数据的示例代码

《javaScript在表单提交时获取表单数据的示例代码》本文介绍了五种在JavaScript中获取表单数据的方法:使用FormData对象、手动提取表单数据、使用querySelector获取单个字... 方法 1:使用 FormData 对象FormData 是一个方便的内置对象,用于获取表单中的键值

修改若依框架Token的过期时间问题

《修改若依框架Token的过期时间问题》本文介绍了如何修改若依框架中Token的过期时间,通过修改`application.yml`文件中的配置来实现,默认单位为分钟,希望此经验对大家有所帮助,也欢迎... 目录修改若依框架Token的过期时间修改Token的过期时间关闭Token的过期时js间总结修改若依

C#提取PDF表单数据的实现流程

《C#提取PDF表单数据的实现流程》PDF表单是一种常见的数据收集工具,广泛应用于调查问卷、业务合同等场景,凭借出色的跨平台兼容性和标准化特点,PDF表单在各行各业中得到了广泛应用,本文将探讨如何使用... 目录引言使用工具C# 提取多个PDF表单域的数据C# 提取特定PDF表单域的数据引言PDF表单是一

Java后端接口中提取请求头中的Cookie和Token的方法

《Java后端接口中提取请求头中的Cookie和Token的方法》在现代Web开发中,HTTP请求头(Header)是客户端与服务器之间传递信息的重要方式之一,本文将详细介绍如何在Java后端(以Sp... 目录引言1. 背景1.1 什么是 HTTP 请求头?1.2 为什么需要提取请求头?2. 使用 Spr

SpringBoot项目引入token设置方式

《SpringBoot项目引入token设置方式》本文详细介绍了JWT(JSONWebToken)的基本概念、结构、应用场景以及工作原理,通过动手实践,展示了如何在SpringBoot项目中实现JWT... 目录一. 先了解熟悉JWT(jsON Web Token)1. JSON Web Token是什么鬼

HTML提交表单给python

python 代码 from flask import Flask, request, render_template, redirect, url_forapp = Flask(__name__)@app.route('/')def form():# 渲染表单页面return render_template('./index.html')@app.route('/submit_form',