• asp.net 关于SessionId


    原文:https://www.cnblogs.com/zhang1999/p/7278020.html

    登陆页面使用Session存储验证码,导致会话产生SessionId,从而导致会话固定,登陆后用来存储用户信息的SessionId不变,容易被利用

    //强行销毁当前用户的所有会话内容,但是只有加载页面的时候有效,导致登陆后没有用户信息
    HttpContext.Current.Session.Abandon()
    HttpContext.Current.Response.Cookies.Add(new HttpCookie("ASP.NET_SessionId", ""))

    改用Cookie存储

    1.Cookie对象

    (1).写入Cookie对象

    HttpCookie cookie = new HttpCookie("data"); 注:定义cookie,name属性为data。

    cookie.Values.Add("name","123"); 注:cookie是以键值对的方式存储。

    cookie.Expires = DateTime.Now.AddYears(2); 注:过期时间设置为2年,也可以不设置过期时间,如果不设置cookie在浏览器关闭是自动清除。

    Response.Cookies.Add(cookie); 注:写入Response对象。

    (2).读取Cookie对象

    HttpCookie cookie = Request.Cookies["data"]; 注:获取name属性为data的cookie

    if(cookies !=null &&Cookies.HasKeys) 注:判断cookie是否存在

    {

    string s = cookies["name"]; 注:根据name键获取值

    Response.Write(s);

    }

    2.Session对象

    Session的定义和读取相对比Cookie容易

    (1).定义Session对象

    Session["Itemsession"] = "abc"; 注:Session的值为"abc",Session的类型是object所以可以赋任何类型。

    (2).读取Session对象

    string s =(string)Session["Itemsession"] ; 注:读取时的类型,要和定义时的类型一致。

    Response.Write(s);

    (3).Session特点

    同一台电脑的同一个浏览器表示同一次会话,不同的浏览器表示不同的会话。

    同一台电脑的同一个浏览器只能有一个Session。

    Session的过期时间是在浏览器关闭时自动清除或用户不进行任何活动20分钟Session也会自动清除。

    3.Cookie和Session的不同点和相同点

    (1).相同点

    Cookie对象和Session对象作用是在窗体之间传值。

    等等

    (2).不同点

    Cookie将状态保存在客户端,Session将状态保存在服务器端。

    Session相对Cookie,Session的安全性更高。

  • 相关阅读:
    《css世界》学习摘要
    微信小程序知识点积累
    事件冒泡 事件委派
    遍历后台返回数据
    初识open stack
    keystone初识
    KVM详解
    openstack详解
    NoSQL之Redis集群理论
    gfs分布式文件系统
  • 原文地址:https://www.cnblogs.com/zhang1f/p/11503727.html
Copyright © 2020-2023  润新知