Day05-Cookie,Session,Csrf

1. Cookie

1.1 Http短链接是什么?

短链接:接收一个请求,返回一个响应就中断连接。Http/1.0默认短链接
长连接:接收多个请求,返回多个响应。Http/1.1之后默认长连接

1.2 状态保持是什么?

保存每个人进入客户端的状态,记录身份

1.3 什么是Cookie?

键值对数据。明文保存在客户端。当进入页面时,服务器给生成cookie并返回给客户端。当客户端再一次进入页面时,可以发送携带cookie信息的请求,服务器辨别身份信息,返回响应。cookie不支持中文。容易被篡改
在这里插入图片描述

1.4 框架对于Cookie操作

设置并获取cookie信息

思路:先获取cookie信息。如果有就获取cookie信息;如果没有,就设置cookie信息,并获取。

#设置cookie信息
class CookieView(View):
    #没有cookie就设置cookie。有就展示当前cookie
    def get(self,request):
        # 获取当前cookie
        cookie_data = request.COOKIES.get('status')
        if cookie_data is None:
            # 如果没有cookie,就设置cookie
            resp = HttpResponse('设置cookie')
            # set设置cookie
            resp.set_cookie('status','kejindalao')
            # 返回设置的cookie
            return resp
        else:
            # 展示cookie
            return HttpResponse(f'当前cookie信息为{cookie_data}')
删除cookie信息

有两种方法,一种是通过浏览器删除,另一种是通过代码删除
第一种:通过浏览器删除
第一步:点击路径前的**圈圈里有!**的符号点击

第二步:点击“此网站权限
在这里插入图片描述
第三步:NO.1展示cookie文件夹
NO.2展示cookie文件夹里的内容
NO.3展示cookie信息
NO.4点击删除,实现删除

在这里插入图片描述
第二种通过代码删除

# 删除cookie信息
class DelCookieView(View):
    def get(self,request):
        resp = HttpResponse('删除cookie信息')
        # delete删除cookie信息
        resp.delete_cookie('status')
        # 返回响应
        return resp
防止篡改cookie

可以对cookie进行加密。使用salt=‘’,俗称:撒盐操作。使用salt加密后,再使用salt解密
在这里插入图片描述

2.Session

2.1 Session原理

session称为会话控制,简称会话。数据保存在服务器里边,不容易被篡改,比cookie安全。又离不开cookie

2.2 框架是如何存储管理Session的

session数据会存储在数据库的session表里,默认有效时期为两个星期
session创建的流程
在这里插入图片描述

2.3 框架如何操作Session

获取session

思路:先获取session信息,如果有就获取session信息,没有就设置session信息,并获取session信息

class SessionView(View):
    # 如果session不存在,就生成session。如果存在,就返回session信息
    def get(self,request):
        # 获取当前session
        session_data = request.session.get('money')
        if session_data is None:
            # 如果没有就设置session
            request.session['money'] = '1000'
            # 返回session信息
            return HttpResponse('设置session')
        else:
            # 返回session信息
            return HttpResponse(f"session信息为:{session_data}")
删除session信息
# 删除session信息
class DelSessionView(View):
    def get(self,request):
        # 如果session不存在,就返回session不存在
        if request.session.get('money') is None:
            return HttpResponse('session不存在')
        # 如果有就删除
        else:
            # 删除session信息
            del request.session['money']
            return HttpResponse('session已删除')
Session的删除总结

del:删除指定的内容,保留客户端session及未被指定的内容
clear:删除全部内容,保留客户端session
flush:全部删除。

Session 和 Cookie 的对比

对比项sessioncook
存储数据的位置服务器客户端的浏览器
安全比cookie安全不安全
对浏览器的性能要求当访问增多时会占用浏览器的性能不会占用浏览器性能
站点没有限制数据不超过4K,站点不超过20个

3.CSRF

3.1 什么是CSRF?

CSRF:跨站请求伪造

3.2 CSRF攻击模拟实现

在这里插入图片描述

3.3 如何防止CRSF攻击

因为get只是获得了数据的表面,查很多次是不会发生改变的,所有不需要进行防范。post请求可以获得数据的本质,会发生改变,所以需要防范。可以在页面中加入其他字段来防止CRSF攻击。

总结

session比cookie安全,但有离不开cookie,需要依靠cookie来获得数据,保存。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值