python asp.net _sessionid_asp.net 关于SessionId

本文探讨了在登录页面中使用Session存储验证码可能导致的会话固定问题,以及如何通过销毁SessionId和切换到Cookie存储来提高安全性。详细介绍了Cookie的写入和读取操作,以及Session的定义、读取和特点。强调了Cookie将状态保存在客户端,而Session保存在服务器端,指出Session在安全性上优于Cookie。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原文: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的安全性更高。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值