• session和cookie的最深刻理解


    先说session

    对SESSION的争论好象一直没有停止过,不过幺麽能理解SESSION的人应该占90以上。
    但还是讲讲,别嫌老~

    有一些人赞成用SESSION,有一些人不赞成。但这个问题到底要怎么说。不妨听听我的看法

    如果有错误请不要朝丢东西,金条和硬币除外。

    有些人应该知道我是做江湖程序的,而江湖程序做看中的就是效率,但这里不谈设计,而

    从一些比较实际的角度看SESSION。

    首先要先说SESSION是干什么的,SESSION是可以存储针对与某一个用户的IE以及通过其当

    前窗口打开的任何窗口具有针对性的用户信息存储机制。为什么要这样说。看下边

    先研究SESSION是如何启动的,当打开IE以后浏览网站后会发出一个指令请求SESSIONID以

    及对各个类型数据的下载许可,如图片,声音以及FLASH。
    数据实际传输内容:IE到服务器
    GET / HTTP/1.1
    Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, */*
    Accept-Language0: zh-cn
    Accept-Encoding: gzip, deflate
    User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)
    Host: www.jh521.com
    Connection: Keep-Alive
    服务器会返回一个没有被使用的SESSIONID让IE使用,当时IE就对返回SESSIONID做存储

    并同时返回相关页面的下载数据,如下:服务器到IE
    HTTP/1.1 200 OK
    Server: Microsoft-IIS/5.0
    Date: Sun, 30 Nov 2003 16:41:51 GMT
    Content-Length: 21174..Content-Type: text/html
    Set-Cookie: ASPSESSIONIDCACBBBRT=IBOMFONAOJFEEBHBPIENJFFC; path=/
    Cache-control: private
    然后就是页面HTML代码

    此时这个IE程序(不是客户机)的SESSIONID就为IBOMFONAOJFEEBHBPIENJFFC

    而当IE在访问任何这个站点的ASP程序的时候,就会把IBOMFONAOJFEEBHBPIENJFFC发送

    给服务器,服务器就会知道IBOMFONAOJFEEBHBPIENJFFC是表示你
    而在服务器上设置SESSION("name")="name"
    完全可以看成是
    SESSION("IBOMFONAOJFEEBHBPIENJFFC")("name")="name"
    或者
    SESSION(SESSIONID)("name")="name"
    这样,SESSION就区分开用户了。
    而当服务器反馈这个ID的时候会看这个ID有没有被使用。如果有在换一个
    反正不会让你重复,如果想模拟某人的SESSION的ID来进行欺骗是可以的。不过要获取到

    对方IE传输信号,并且在保证当时这个SESSIONID没有被取消的情况下才可能实施。

    不过要是我有那时间直接通过POST信号找他NAME和PASS了。我可不费这个劲

    想必一些人明白了了SESSIONID到底是如何工作的

    那么就在看看COOKIE,有人说SESSIONID就是COOKIE,按照技术上来讲他们不属于同类

    但是属于一种工作模式,用户和服务器传输私有数据

    当我设置COOKIE的时候,服务器会反馈给IE一个指令。IE通过这个网络指令生成COOKIE并

    存放,在特定的时候会取得这个这个信息如在访问这个站点并且COOKID有效的时候。

    那么为什么要用COOKIE而不用SESSION呢
    看下区别

    有效时间以及存储方式 传输内容
    COOKIE 可设置并在本地保留 明码信息

    SESSION 在IE不关闭并服务器不超时 只有SESSIONID

    当如果想让用户下次登入网站不需要输入用户名或者密码的时候就只能用COOKIE,

    因为他可以保留相当长的时间(在COOKIE记录被删除或者失效日期之前)

    而SESSION就不可以,他不会保留太长时间,而且IE在关闭后就自动清除了SESSIONID记录

    在下次登入的时候会请求新的SESSIONID

    cookie 和session 的区别:

    1、cookie数据存放在客户的浏览器上,session数据放在服务器上。

    2、cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗
       考虑到安全应当使用session

    3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能
       考虑到减轻服务器性能方面,应当使用COOKIE

    4、单个cookie在客户端的限制是3K,就是说一个站点在客户端存放的COOKIE不能3K。

    5、所以个人建议:
       将登陆信息等重要信息存放为SESSION
       其他信息如果需要保留,可以放在COOKIE中

    6、永远记住,对COOKIE的赋值只有等下一次浏览请求时才能生效

  • 相关阅读:
    Swagger+IdentityServer4测试授权验证
    IdentityServer4使用EFCore生成MySql时的小bug
    Ocelot + IdentityServer4 构建 GateWay
    使用Ocelot构建GateWay
    MediatR 中介模式
    EFCore CodeFirst 适配数据库
    Mysql 主从配置
    IdentityServer4揭秘---Consent(同意页面)
    idea 启动时报 error:java 无效的源发行版11
    centos mysql数据库忘记密码修改
  • 原文地址:https://www.cnblogs.com/cowboybusy/p/9040650.html
Copyright © 2020-2023  润新知