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的安全性更高。
最新文章
- UWP 图片剪切旋转工具
- VS的快捷键F12改成和ECLIPSE一样用ctrl+点击下载线
- linux永久更改eth0的ip地址后仍然ping不通过
- http authorization basic请求代码示例
- 【源码】初探C#爬虫,持续更新中。。。
- 阿里云服务器CentOS 5.7(64位)安装配置LAMP服务器(Apache+PHP5+MySQL)
- new Thread的弊端(转)
- Android Studio rename module Can't rename root module
- Linux内存管理之slab分配器
- ABP官方文档翻译 8.1 通知系统
- 你不可不知的Java引用类型之——Reference源码解析
- HTML+Css让网页自动适应电脑手机屏幕
- python小猪蹄儿
- mybatis多参数传递(其中包括数组)
- C#复习笔记(4)--C#3:革新写代码的方式(扩展方法)
- suricata 配置文件threshold
- etcd-v2第二集
- Linux命令之cp
- C++的虚函数
- CSS| 實例---寬度自由調節button,圖片切換