Django前后端安全验证
会话技术
关注公众号“轻松学编程”了解更多。
1、Cookie
- 客户端会话技术(数据存储在客户端)
- 以key-value的形式进行存储
- cookie的操作都是通过Response来实现的
- 典型场景
- 购物车
- 登录信息
- 支持过期时间
- Cookie清除策略
- 默认关闭浏览器时cookie自动清除
- 配置Cookie过期时间
- max-age=0 关闭就失效
- max-age=None 永久有效
- max-age = int 单位秒
- expires 过期时间,和max-age功能基本一致
- 用户登出,就是清除了cookie(令牌)
2、Session
- 服务端会话技术
- Session依赖于Cookie
- 将Session在数据库中的session_key,当作sessionid,存储在cookie中
- Session数据存储在数据库中,并且做了基本的数据安全处理(base64编码)
3、Token
- 服务端会话技术
- 相当于手动实现的session
- 值应该是唯一的
- 要通过特定算法保证唯一
- 时间
- ip
- 域名
- 网卡 mac
- 随机数
4、解决痛点
解决短连接无法保存用户状态的问题
延长了请求的生命周期
用户管理实例
- 用户注册
- 将数据存储到数据库
- 数据安全
- 密码对谁都是不透明的
- 用户登陆
- 将登陆提交过来的信息和数据库内的信息进行校验
- 返回不成功结果要刻意模糊概念
- 用户信息
- 根据用户的唯一标识,去获取用户
- 用户退出
- 清除令牌
- 清理cookie,session,或 token
- 用户注册
5、数据安全
- 策略
- 服务器的数据对任何人来说都应该是不可见的(不透明)
- 可以使用常见的摘要算法对数据进行摘要(md5,sha)
- 在所有数据验证的地方都加上安全保护措施
6、摘要算法
- hashlib
- sha
- md5
- 用来验证数据完整性(不被篡改)
- 哪怕【消息原文】被改动一丁点,【篡改版消息生成的消息摘要】都会与【原始消息所生成的消息摘要】的大相径庭
- 统一输出
- 输出默认都是128位二进制数
- 32位16进制数
- 单向不可逆
- 用来验证数据完整性(不被篡改)
7、UUID
唯一标识
纳秒级的时间
- 1ns 创建 1m个id
mac 地址
机器编码
随机数
uuid
- uuid1()
- uuid3()
- uuid4()
- uuid5()
8、常用API
生成消息摘要
def generate_password(password):
#定义算法
sha = hashlib.sha512()
#更新算法内容区(密码字节)
sha.update(password.encode("utf-8"))
#使用算法生成摘要
return sha.hexdigest()
cookie
response.set_cookie("uname", username)
response.set_cookie("uname", username, max_age=30)
response.set_cookie("uname", username, expires=timedelta(minutes=1))
uname = request.COOKIES.get('uname',None)
response.delete_cookie("uname")
- 助记
- 操作客户端唯有通过Response对象
- 方法无非get,set,delete
session
- uname = request.session.get('uname')
- request.session['uname'] = username
- request.session.flush()
- 同时清除cookie 和 session
- del request.session['uname']
- 助记
- session是存在于服务端本地的,而Request的COOKIE当中存有sessionid,因此通过Request对象去关联用户的session
- 方法无非get,set,del,flush
token
response.set_cookie("utoken", token)
utoken = request.COOKIES.get("utoken")
后记
【后记】为了让大家能够轻松学编程,我创建了一个公众号【轻松学编程】,里面有让你快速学会编程的文章,当然也有一些干货提高你的编程水平,也有一些编程项目适合做一些课程设计等课题。
也可加我微信【1257309054】,拉你进群,大家一起交流学习。
如果文章对您有帮助,请我喝杯咖啡吧!
公众号
关注我,我们一起成长~~
Django前后端安全验证的更多相关文章
- 从零开始搭建django前后端分离项目 系列一(技术选型)
前言 最近公司要求基于公司的hadoop平台做一个关于电信移动网络的数据分析平台,整个项目需求大体分为四大功能模块:数据挖掘分析.报表数据查询.GIS地理化展示.任务监控管理.由于页面功能较复杂,所以 ...
- [django]前后端分离之JWT用户认证
在前后端分离开发时为什么需要用户认证呢?原因是由于HTTP协定是不储存状态的(stateless),这意味着当我们透过帐号密码验证一个使用者时,当下一个request请求时它就把刚刚的资料忘了.于是我 ...
- luffy项目搭建流程(Django前后端分离项目范本)
第一阶段: 1.版本控制器:Git 2.pip安装源换国内源 3.虚拟环境搭建 4.后台:Django项目创建 5.数据库配置 6.luffy前 ...
- vue+django前后端项目部署
一.python3的安装 1.安装python前的库环境: yum install gcc patch libffi-devel python-devel zlib-devel bzip2-devel ...
- Django前后端分离跨域请求问题
一.问题背景 之前使用django+vue进行前后端分离碰到跨域请求问题,跨域(域名或者端口不同)请求问题的本质是由于浏览器的同源策略导致的,当请求的响应不是处于同一个域名和端口下,浏览器不会接受响应 ...
- Django 前后端数据传输、ajax、分页器
返回ORM目录 Django ORM 内容目录: 一.MTV与MVC模式 二.多对多表三种创建方式 三.前后端传输数据 四.Ajax 五.批量插入数据 六.自定义分页器 一.MTV与MVC模式 M ...
- Django前后端分离项目部署
vue+drf的前后端分离部署笔记 前端部署过程 端口划分: vue+nginx的端口 是81 vue向后台发请求,首先发给的是代理服务器,这里模拟是nginx的 9000 drf后台运行在 9005 ...
- Django前后端交互&数据验证
一.前端--->后端 1.form表单 <form method="post" action="/test/?a=1&b=2"> {% ...
- 一、Django前后端交互之Ajax和跨域问题
一.Ajax介绍 1.概述 AJAX 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术.AJAX(Asynchronous Javascript And XML)翻译成中文就是“异步Jav ...
随机推荐
- MyBatis 进阶,MyBatis-Plus!(基于 Springboot 演示)
这一篇从一个入门的基本体验介绍,再到对于 CRUD 的一个详细介绍,在介绍过程中将涉及到的一些问题,例如逐渐策略,自动填充,乐观锁等内容说了一下,只选了一些重要的内容,还有一些没提及到,具体可以参考官 ...
- QTree1 【题解】
题目背景 数据规模和spoj上有所不同 题目描述 给定一棵n个节点的树,有两个操作: CHANGE i ti 把第i条边的边权变成ti QUERY a b 输出从a到b的路径中最大的边权,当a=b的时 ...
- node-macaddress
下载 node-macaddressnode-macaddress 检索Linux.OS X和Windows中的MAC地址. 关于MAC地址的一个常见误解是,每个主机只有一个MAC地址, 虽然一个主机 ...
- 虚拟主机和ECS的选择——有的坑你可以不躺,有的钱你可以不花(一)
一直想做网站,由于最开始虚拟主机有优惠,所以三年前买了虚拟主机,后来一直续费,间歇性使用过,发现很多功能都不行. 昨天准备买新的,然后想起学生购买有优惠,于是开始了学生认证之旅. 首先,看一下之前 ...
- JAVA对象头详解(含32位虚拟机与64位虚拟机)
为什么要学习Java对象头 学习Java对象头主要是为了解synchronized底层原理,synchronized锁升级过程,Java并发编程等. JAVA对象头 由于Java面向对象的思想,在JV ...
- OpenCV Java Tutorials- Camera Calibration
2020-10-10原文地址:https://opencv-java-tutorials.readthedocs.io/en/latest/09-camera-calibration.html#id1 ...
- 多测师讲解_007 hashlib练习
#Hash,译做"散列",也有直接音译为"哈希"的.把任意长度的输入,通过某种hash算法,变换成固定长度的输出,该输出就是散列值,也称摘要值.该算法就是哈希函 ...
- SessionStorage、LocalStorage详解
转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 原文出处:https://blog.bitsrc.io/sessionstorage-and-localst ...
- web中的HTML CSS
HTML 超文本标记语言 页面的结构 首行声明文档类型>根标记>头部标记/主体标记 标记 div 布局 切割 分割 划分区域 spa ...
- Mac快捷键整理(随时更新)
一.文字编辑 快捷键 含义 解释 control + A 到行首 A没找到对应单词,暂时认为A是字母表的开始 control + E 到行尾 E是end的缩写