1.学习内容
-
session机制缺点
- session需要保存内存中,资源会被消耗
- session 会被CSRF攻击
- 扩展性:高并发多端,session需要配置
-
session在redis怎么保存的?
- 保存的类型是string
- key 是session id
- value 是一个带引号的字典(‘{name:xxx}’)
-
token认证机制
- token保存在浏览器的storage中
- 携带token在头文件中
- 服务端验证,获取加密数据,做一定处理
- token不用保存,每次都会被重新计算
-
jwt组成部分
- eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9. 头部
- eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9. payload
- TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ 签证
- 1.头部、token类型,加密算法(HMAC,SHA256) base64
- 以json形式 存放:{‘typ’:”JWT”,’alg’:”HS256”}
- 头部base64加密
- 2.payload 载荷(用户有效信息,过期时间,签发时间) base64
- 以json形式 存放:{}
- 3.签证(签名)信息 sha256
- 三部分:header + payload + sign
- 使用加密算法将三部分加密 (有一个秘钥)
- 秘钥才是jwt最重要的点
- django 项目settings中有一个秘钥文件,可以使用这个进行加密
-
JWT怎么使用
- 在请求头中,添加Authorization字段
-
JWT的优点
- json的通用性很高,所以JWT可以跨语言
- payload载荷部分,可以存放一些数据信息(非敏感信息)
- 便于传输:jwt构成简单,字节占用小,方便传输
- 不需要在服务端保存,易于应用分布式
-
JWT安全相关
- 在payload不能存放敏感信息,paload可解密
- 密码不要保存在payload中
- 保护好sercet 私钥
- 使用https协议保持安全
-
payload
-
浏览器同源策略
- 不同协议,ip,端口号,域名,都是跨域操作,被禁止
- 可以使用script 标签绕过
- 可以接收后端js代码执行
-
Django 跨域CORS设置
- 1.需要安装django-cors-headers
- 2.在settings的app中注册corsheaders
- 3.中间件中MIDDLEWARE ,最开始写入'corsheaders.middleware.CorsMiddleware',
- 4.可选 配置白名单CORS_ORIGIN_WHITELIST = ()
- 5.是否允许携带Cookie
-
跨域请求流程
- 先发送options 询问后端是否允许跨域(会查询白名单)
- 符合可以跨域,则发送第二次请求携带数据
2.扩展延伸知识
-
ubuntu npm安装
-
如何让创建的django应用 自带urls.py文件
- 在django源码中(),conf文件中,app_template中修改
-
pycharm 远程开发
-
docker 更改启动容器
-
mysql配置远程连接
- 1.需要将bind 注释,或者改成0.0.0.0
- 2.将用户localhost改成% 或者指定一个ip
- 3.重启服务器
- https://www.cnblogs.com/weishenhong/p/4915125.html
-
mysql8.0配置文件
-
api怎么学习
- 1.一定要对常用的api有个印象,知道干嘛用的
- 2.随时查阅文档,多看看文档,多用用api自然记住
- 3.对api的实现原理有了解,可以记得更深
-
服务器传输图片(图片为什么转base64)
- 提升性能: 网页上的每一个图片,都是需要消耗一个 http 请求下载而来的, 图片的下载始终都要向服务器发出请求,要是图片的下载不用向服务器发出请求,base64可以随着 HTML 的下载同时下载到本地.减少https请求。
- 加密: 让用户一眼看不出图片内容 , 只能看到编码。
- 方便引用: 在多个文件同时使用某些图片时, 可以把图片转为base64格式的文件, 把样式放在全局中, 比如common.css, 以后在用的时候就可以直接加类名, 二不需要多层找文件路径, 会提升效率
3.灵感代办
4.复习内容
5.学习成果&问题
session机制缺点
- session需要保存内存中,资源会被消耗
- session 会被CSRF攻击
- 扩展性:高并发多端,session需要配置
session在redis怎么保存的?
- 保存的类型是string
- key 是session id
- value 是一个带引号的字典(‘{name:xxx}’)
token认证机制
- token保存在浏览器的storage中
- 携带token在头文件中
- 服务端验证,获取加密数据,做一定处理
- token不用保存,每次都会被重新计算
jwt组成部分
- eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9. 头部
- eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9. payload
- TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ 签证
- 1.头部、token类型,加密算法(HMAC,SHA256) base64
- 以json形式 存放:{‘typ’:”JWT”,’alg’:”HS256”}
- 头部base64加密
- 2.payload 载荷(用户有效信息,过期时间,签发时间) base64
- 以json形式 存放:{}
- 3.签证(签名)信息 sha256
- 三部分:header + payload + sign
- 使用加密算法将三部分加密 (有一个秘钥)
- 秘钥才是jwt最重要的点
- django 项目settings中有一个秘钥文件,可以使用这个进行加密
JWT怎么使用
- 在请求头中,添加Authorization字段
JWT的优点
- json的通用性很高,所以JWT可以跨语言
- payload载荷部分,可以存放一些数据信息(非敏感信息)
- 便于传输:jwt构成简单,字节占用小,方便传输
- 不需要在服务端保存,易于应用分布式
JWT安全相关
- 在payload不能存放敏感信息,paload可解密
- 密码不要保存在payload中
- 保护好sercet 私钥
- 使用https协议保持安全
payload
浏览器同源策略
- 不同协议,ip,端口号,域名,都是跨域操作,被禁止
- 可以使用script 标签绕过
- 可以接收后端js代码执行
Django 跨域CORS设置
- 1.需要安装django-cors-headers
- 2.在settings的app中注册corsheaders
- 3.中间件中MIDDLEWARE ,最开始写入'corsheaders.middleware.CorsMiddleware',
- 4.可选 配置白名单CORS_ORIGIN_WHITELIST = ()
- 5.是否允许携带Cookie
跨域请求流程
- 先发送options 询问后端是否允许跨域(会查询白名单)
- 符合可以跨域,则发送第二次请求携带数据
-
ubuntu npm安装
-
如何让创建的django应用 自带urls.py文件
- 在django源码中(),conf文件中,app_template中修改
-
pycharm 远程开发
-
docker 更改启动容器
-
mysql配置远程连接
- 1.需要将bind 注释,或者改成0.0.0.0
- 2.将用户localhost改成% 或者指定一个ip
- 3.重启服务器
- https://www.cnblogs.com/weishenhong/p/4915125.html
-
mysql8.0配置文件
-
api怎么学习
- 1.一定要对常用的api有个印象,知道干嘛用的
- 2.随时查阅文档,多看看文档,多用用api自然记住
- 3.对api的实现原理有了解,可以记得更深
-
服务器传输图片(图片为什么转base64)
- 提升性能: 网页上的每一个图片,都是需要消耗一个 http 请求下载而来的, 图片的下载始终都要向服务器发出请求,要是图片的下载不用向服务器发出请求,base64可以随着 HTML 的下载同时下载到本地.减少https请求。
- 加密: 让用户一眼看不出图片内容 , 只能看到编码。
- 方便引用: 在多个文件同时使用某些图片时, 可以把图片转为base64格式的文件, 把样式放在全局中, 比如common.css, 以后在用的时候就可以直接加类名, 二不需要多层找文件路径, 会提升效率
3.灵感代办
4.复习内容
5.学习成果&问题
5.学习成果&问题