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 ...
随机推荐
- Kubernetes Pod水平自动伸缩(HPA)
HPA简介 HAP,全称 Horizontal Pod Autoscaler, 可以基于 CPU 利用率自动扩缩 ReplicationController.Deployment 和 ReplicaS ...
- python 系统设置
1. 设置python运行环境为utf-8 import sys #引用sys模块 reload(sys) #重新加载sys sys.setdefaultencoding("utf-8&qu ...
- 067 01 Android 零基础入门 01 Java基础语法 08 Java方法 05 数组作为方法参数
067 01 Android 零基础入门 01 Java基础语法 08 Java方法 05 数组作为方法参数 本文知识点:数组作为方法参数 说明:因为时间紧张,本人写博客过程中只是对知识点的关键步骤进 ...
- git fatal: Path 'XXX' is in submodule 'XXX'错误
easyswoole项目的 vendor/easyswoole/socket/这个项目怎么都无法添加到git目录里面. 报错: Administrator@PhpServer MINGW64 /z/w ...
- 浅谈Samsung Exynos4412处理器
转载于:http://www.cnblogs.com/android210/archive/2013/01/16/2862349.html Topic:浅谈Samsung Exynos4412处理器( ...
- mysql5.5和5.6的一些区别
timestamp 5.5中 直接写timestamp不加长度 5.6 中 写的timestamp(3) datatime 5.5中 直接写datetime 不加长度 5.6中 可以添加长度(3 ...
- 多测师讲解python_os模块_高级讲师肖sir
#os.path.isfile()#:判断当前是否为文件,返回布尔值是文件则True否者Falsea_path='F:\cms搭建.rar' #lesson包b_path=r'D:\bao\kk '# ...
- day11 Pyhton学习
一.昨日内容回顾 函数的进阶 动态传参 *args : 位置参数的动态传参 **kwargs: 关键字参数的动态传参 形参:聚合 实参:打散 顺序:位置参数>*args >默认值 > ...
- vmware 安装tools
kali linux 更换成国内源后 安装tools命令 apt install open-vm-tools-desktop fuse -y 需重启 reboot
- 【动态规划】DP搬运工3
UPD:修了点锅(啊昨天居然写脑抽了) 题目内容 给定两个长度为 \(n\) 的序列,定义 \(magic(A,B)=\sum\limits_{i=1}^n \max(A_i,B_i)\). 现在给定 ...