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 ...
随机推荐
- Centos-转换或复制文件-dd
dd 转换或复制文件,同时可以对设备进行备份 相关选项 if 输入文件,可以是设备 of 输出文件,可以是输出设备 bs 指定一个block大小,默认为 512字节 count 指定bs数量
- 从零搭建Golang开发环境--go修仙序章
1. 什么是go语言 Go(又称 Golang)是 Google 的 Robert Griesemer,Rob Pike 及 Ken Thompson 开发的一种静态 .强类型.编译型语言 .Go 语 ...
- 005 01 Android 零基础入门 01 Java基础语法 01 Java初识 05 Eclipse简介
005 01 Android 零基础入门 01 Java基础语法 01 Java初识 05 Eclipse简介 Eclipse是一款集成开发工具--IDE. 集成开发环境(IDE,Integrated ...
- Java知识日常收集整理001Java获取变量的数据类型的实现方法
一.具体情况区分 对于简单类型变量,是无法直接获得变量类型的:要想获取,必须自定义函数进行返回. 对于包装类型变量,是可以直接获得的,变量名称.getClass().getName(); 二.代码实现 ...
- 证明RSA算法在明文和公私钥中N不互质情况下仍然成立
关于RSA的基础过程介绍 下文中的 k 代表自然数常数,不同句子,公式中不一定代表同一个数 之前接触RSA,没有过多的思考证明过程,今天有感而发,推到了一遍 假设公钥 (e, N) , 私钥 (d, ...
- Centos7系统下Docker开启认证的远程端口2376配置教程
docker开启2375会存在安全漏洞 暴露了2375端口的Docker主机.因为没有任何加密和认证过程,知道了主机IP以后,,任何人都可以管理这台主机上的容器和镜像,以前贪图方便,只开启了没有认证的 ...
- 透视HTTPS建造固若金汤的城堡
为什么有 HTTPS?因为 HTTP 不安全! 现在的互联网已经不再是 "田园时代","黑暗森林" 已经到来.上网的记录会被轻易截获,网站是否真实也无法验证,黑 ...
- bash 在指定目录查找包含特定关键字的文件
比如我们要在目录/usr/local/nginx/conf/vhost/下查找baidu.com这个关键字的文件 方法1: find /usr/local/nginx/conf/vhost/ -exe ...
- C# 向服务器发送信息
#region 向服务器发送信息 /// <summary> /// 向服务器发送信息 /// </summary> /// <param name="post ...
- C# 将DataTable里面的数据导出到excel
//需要在bin里面添加 Interop.Microsoft.Office.Interop.Excel.dll 的引用 //添加引用 using System.Data; /// <summar ...