网页制作之Django-Cookie与Session

学习目标:

了解cookie与session的基本原理,明确他们的使用原则,能够用他们进行各种用户验证与用户信息存储等功能。

学习内容:

1、 cookie
a、基本原理
	客户端浏览器上的一个文件
    {"k": "dsasd"}
b、服务器端创建cookie
    res = redirect("/index/")
    res.set_cookie("key","value")
    res.set_signed_cookie("key","value",salt="sdagduya")

    request.COOKIES.get("key")
    request.COOKIES.get_signed_cookie("key",salt="sdagduya")

        参数:
            -默认关闭浏览器cookies失效
            -max_age()                              设置超时时间,以秒为单位
            -expires()                              设置超时时间(IE requires expires, so set it if hasn't been already
                                                    ),以date时间为期限
            -path="/"                               Cookie生效的路径,/表示根路径,特殊的:根路径的cookies可以被任何的URL页面访问
            -domain=None                            Cookie生效的域名
            -secure=False                           https传输
            -httponly=False                         只能HTTP协议传输,无法被JavaScript获取(不是绝对,底层抓包可以被获取也可以被
                                                    覆盖)	

2、 session

基于cookie做用户验证时:敏感信息不适合放在cookie中
a.  session原理
    cookie是保存在用户浏览器端的键值对
    session是保存在服务器端的键值对
b.  cookie和session的对比
c.  session配置(缺少cache)
	- 通用配置
        settings配置
        SESSION_COOKIE_NAME = "sessionid"               # session的cookie在保存在浏览器上时的key名
        SESSION_COOKIE_PATH = "/"                       # session的cookie保存路径
        SESSION_COOKIE_DOMAIN = None                    # session的cookie保存域名
        SESSION_COOKIE_SECURE = False                   # 是否HTTP传输cookie
        SESSION_COOKIE_HTTPONLY = True                  # 是否session的cookie只支持HTTP传输
        SESSION_COOKIE_AGE = 1209600                    # session的cookie失效日期(两周)
        SESSION_EXPIRE_AT_BROWSER_CLOSE = False         # 是否关闭浏览器使得session失效
        SESSION_SAVE_EVERY_REQUEST = False              # 是否每次请求都保存session
    - 引擎配置
        session数据库
        SESSION_ENGINE = 'django.contrib.sessions.backends.db'

        session缓存
        SESSION_ENGINE = 'django.contrib.sessions.backends.cache'
        SESSION_CACHE_ALIAS = 'default'

        session文件
        SESSION_ENGINE = 'django.contrib.sessions.backends.file'
        SESSION_FILE_PATH = os.path.join(BASE_DIR,"cache")

        session缓存加数据库
        SESSION_ENGINE = 'django.contrib.sessions.backends.cache_db'

        session加密cookie

        SESSION_SAVE_EVERY_REQUEST = True

        CACHES = {
            'default':{
                'BACKEND':'django.core.cache.backends.memcached.MemcachedCache',
                'LOCATION':[
                    '172.19.26.240:11211',
                    '172.19.26.242:11211',
                ]
            },
            'default1':{
                'BACKEND':'django.core.cache.backends.memcached.MemcachedCache',
                'LOCATION':[
                    '172.19.26.240:11211',
                    '172.19.26.242:11211',
                ]
            },
        }
d.  示例:实现两周自动登录
        - request.session.set_expiry(60*10)
        - SESSION_SAVE_EVERY_REQUEST = True
e.  session操作
    1)、获取
        request.session["k"]
        request.session.get("k",None)
    2)、设置
        request.session["k"] = 123
        request.session.setdefault("k",123) #存在则不设置
    3)、删除
        del request.session["k"]
    4)、所有键、值、键值对
        request.session.keys()
        request.session.values()
        request.session.items()
        request.session.iterkeys()
        request.session.itervalues()
        request.session.iteritems()
    5)、用户session的随机字符串
        request.session.session_key
    6)、将所有session失效日期小于当前日期的数据删除
        request.session.clear_expired()
    7)、检查 用户session的随机字符串 在数据库中是否
        request.session.exists("session_key")
    8)、删除当前用户session的所有session数据
        request.session.delete("session_key")
        request.session.clear()
    9)、设置超时时间(默认是两周后失效)
        request.session.set_expiry(value)
            如果value是一个整数,那就是在这些秒之后失效
            如果value是一个datetime或timedelta,session会在这个时间之后失效
            如果value是0,session会在关闭浏览器之后失效
            如果value是None,session会依赖全局session失效策略
PS:
    cookie中不设置超时时间,则表示关闭浏览器自动清除

3、 分页(自定义的分页)XSS

 a. {{ page_info|safe }}
 b. mask_safe(page_info)         #from django.utils.safestring import mark_safe

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值