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

asp.net 关于SessionId的更多相关文章

  1. Asp.net页面跳转Session丢失问题

    原本去年在做项目时,写好的一记篇博客分享给大家. Asp.net页面跳转Session丢失问题   编写人:CC阿爸 2014-4-2 l  近来在做泛微OA与公司自行开发的系统集成登录的问题.在使用 ...

  2. ASP.NET中在不同的子域中共享Session

    天遇到了这个问题,于是研究了一下.要解决这个问题,首先就要明白一些Session的机理.Session在服务器是以散列表形式存在的,我们都知道Session是会话级的,每个用户访问都会生成一个Sess ...

  3. Asp.Net集群中Session共享

    今天遇到了这个问题,于是研究了一下.要解决这个问题,首先就要明白一些Session的机理.Session在服务器是以散列表形式存在的,我们都知道Session是会话级的,每个用户访问都会生成一个Ses ...

  4. android如何与asp.net服务端共享session

    近期需要实现一个功能,就是需要通过发送短信进行注册,现在想把短信验证码放到服务器的session值中,当客户端收到短信并提交短信码时由asp.net服务端进行判断,那么如何共享这个session那么需 ...

  5. ASP.NET实现头像剪切保存

    利用swfupload上传头像,利用Jcrop来实现头像在线选择,然后提交个ashx对原头像进行剪切.代码如下: default.aspx: <%@ Page Language="C# ...

  6. ASP.Net与JSP如何共享Session值

     思路: ASP.NET中序列化Session以二进制数据保存到数据库,然后由JSP读取数据库中的二进制数据反序列化成Session对象,再强制转化成JAVA的Session对象登录的ASPX文件 ...

  7. asp.net web开发——文件的上传和下载

    HTML部分 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="index.a ...

  8. asp.net使用WebUploader做大文件的分块和断点续传

    HTML部分 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="index.a ...

  9. asp.net实现大文件上传分片上传断点续传

    HTML部分 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="index.a ...

随机推荐

  1. LeetCode--008--字符串转换整数 (atoi)(python)

    示例 1: 输入: "42"输出: 42示例 2: 输入: " -42"输出: -42解释: 第一个非空白字符为 '-', 它是一个负号.  我们尽可能将负号与 ...

  2. Linux学习-samba服务

    一.Samba介绍 Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成. SMB (Server Messages Block,信息服务块) 是一种在局域网 ...

  3. 倍增求LCA算法详解

    算法介绍: 看到lca问题(不知道lca是什么自(bang)行(ni)百度),不难想到暴力的方法: 先把两点处理到同一深度,再让两点一个一个祖先往上找,直到找到一个相同的祖先: 这么暴力的话,时间复杂 ...

  4. 题解 P2674 【《瞿葩的数字游戏》T2-多边形数】

    题目说了很清楚,此题找规律,那么就找规律. 我们观察数列. 令k表示数列的第k个数. 三角形数:1 3 6 10 15 两项相减:1 2 3 4 5 再次相减:1 1 1 1 1 四边形数:1 4 9 ...

  5. mysqldump常用使用

    1:导出数据库sakila的表结构mysqldump -uroot -ppwd -d sakila > /data/tmp/sakila.sql; 2:导出数据库sakila下表employee ...

  6. Oracle Flashback Database

    Oracle Flashback Database Ensure that the prerequisites described in Prerequisites of Flashback Data ...

  7. AtomicIntegerFieldUpdater 源码分析

    AtomicIntegerFieldUpdater AtomicIntegerFieldUpdater 能解决什么问题?什么时候使用 AtomicIntegerFieldUpdater? 1)字段必须 ...

  8. Html.Partial和Html.RenderPartial和Html.RenderAction区别

    1.Html.Partical 把View页或模板解析成字符串然后输出到渲染页面上 @Html.Partical("viewxxx") 2.Html.RenderPartical则 ...

  9. 项目开源-基于ASP.NET Core和EF Core的快速开发框架

    前言:作为一名95后的程序猿,已经写了一年多的代码了,为了提升自己的技术水平,所以决定尝试编写一个快速开发框架开源出来,一来提升自己的技术水平,二来助力.NET Core生态发展 写这个框架主要是为了 ...

  10. 阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_04 IO字节流_11_字节输入流一次读取多个字节

    参数带字节数组的 把字节数组转换为字符串 文件里面有ABCDE 再来读取一次 再来读取一次.读取的结果是ED 再来读取,-1到时输出了.但是还是把ED读取出来了. 原理 第一步创建流对象 第二部创建数 ...