[转]皇冠直营现金网官方网ASP.Net篇之Session与Cookie

本文转自:http://www.cnblogs.com/japanbbq/archive/2011/08/31/2160494.html

Session:

Session是“会话”的趣味,但是,因为http协议是无状态的,那么每一趟客户端请求服务器端,服务器端都会以“崭新”的页面突显给客户端,那在静态的html页面中是不会存在其他影响,不过在动态页面中,须求与用户交互,要维持与客户端用户的联系,则要求有的事物来有限支撑,而Session的话,则是兼具“保持状态,保持会话”的能力。

瞩目标是,Session是保留在服务器端的。(Cookie是保存在客户端的)必要专注的是,若是用户突然关闭了客户端页面,那么Session就会丢掉,即“会话丢失”。

 

服务器端成立session的八个步骤(网上参考):

  1. 转移全局唯一标识符(sessionid);

2.
开辟数据存储空间。一般会在内存中开创相应的数据结构,但那种景色下,系统一旦掉电,所有的对话数据就会丢掉,假设是电子商务网站,这种事故会招致严重的结果。但是也可以写到文件里甚至存储在数据库中,那样即便会增多I/O开支,但session可以落成某种程度的持久化,而且更有益于session的共享;

  1. 将session的大局唯一标示符发送给客户端。

    
难点的重中之重就在服务端如何发送这几个session的绝无仅有标识上。联系到HTTP协议,数据唯有可以松手请求行、头域或Body里,基于此,一般的话会有三种常用的方法:cookie和URL重写。

1.
库克ie(sessionid会保存在库克ie里,并且失效时间为0,就是浏览器进度的实惠时间,要是关闭了浏览器,那么session就会失灵,原理就是那般)

读者应当想到了,对,服务端只要设置Set-cookie头就足以将session的标识符传送到客户端,而客户端此后的每三次呼吁都会带上那些标识符,由于cookie可以设置失效时间,所以一般包含session新闻的cookie会设置失效时间为0,即浏览器进度有效时间。至于浏览器怎么处理这么些0,每个浏览器都有自己的方案,但差别都不会太大(一般浮现在新建浏览器窗口的时候);

  1. URL重写(日常网上url地址上有 ?sessionID=xxxx 字样)

所谓URL重写,顾名思义就是重写URL。试想,在回到用户请求的页面此前,将页面内拥有的URL前边所有以get参数的法门丰盛session标识符(或者加在path
info部分等等),这样用户在收受响应之后,无论点击哪个链接或提交表单,都会在再带上session的标识符,从而就兑现了对话的保持。读者可能会认为那种做法相比麻烦,确实是如此,不过,即使客户端禁用了cookie的话,URL重写将会是首选。

 

 

Session在ASP.Net的主干用法

概念的时候: Session[“ddd”]=xxxx;

动用的时候:Session[“ddd”]即可

假如必要保存类的靶子的话,用法跟ViewState是一致的:

发送端:

UserInfo ui = new UserInfo(); 
Session[“ui”] = ui; 
ui.name = name.Text; 
ui.age = age.Text; 
ui.sex = sex.Text; 
ui.password = password.Text; 
Response.Redirect(“a.aspx”); 

接收端:

UserInfo ui = Session[“ui”] as UserInfo; 
name.Text = ui.name; 
age.Text = ui.age; 
password.Text = ui.password; 
sex.Text = ui.sex;

 

Session时间(销毁格局:超时和手动销毁):

asp.net
Session的默许时间设置是20分钟,即超越20分钟后,服务器会自动屏弃Session音信.

 

Session Hijack (网上参考):

Session
hijack即会话恐吓是一种相比严重的平安要挟,也是一种普遍存在的恫吓,在session技术中,客户端和服务端通过传送session的标识符来维护会话,但这几个标识符很简单就能被嗅探到,从而被其余人利用,那属于一种中间人抨击。

 

Cookie

cookie的最大便宜使用的就是”Remember Me”的服务。

cookie保存在客户端,如若用户禁用了cookie的话,可能会设有一些难点,所以在设计的时候要注意(判断cookie是或不是为null)

必要cookie的原因跟须要session一样,因为http协议是无状态的,每一回都是新的页面,不会保留任何音信,而cookie的话,会保留在客户端的处理器上,那么到时索要用的时候,可以接纳后台的劳务器端调用,也足以就用客户端来开展调用。

Cookie只是一段文本,所以它不得不保留字符串。而且浏览器对它有大小限制以及
它会随着每一遍请求被发送到服务器,所以理应有限帮衬它不用太大。
库克ie的内容也是当面保存的,有些浏览器提供界面修改,所以,
不适合保存首要的要么关联隐衷的内容。(网上参考)

 

 

Cookie的限制:

大部分浏览器援助最大为 4096 字节的 Cookie。由于那限制了 Cookie
的大大小小,最好用 Cookie 来囤积少量数目,或者存储用户 ID 之类的标识符。用户
ID 随后便可用于标识用户,以及从数据库或别的数据源中读取用户音信。
浏览器还限定站点可以在用户电脑上囤积的 库克ie
的多寡。一大半浏览器只允许每个站点存储 20 个 Cookie;如果准备存储越多Cookie,则最旧的 Cookie
便会被舍弃。有些浏览器还会对它们将经受的来源具备站点的 Cookie
总数作出相对限制,平日为 300 个。

 

Cookie中的属性:(网上参考)

name:
每个cookie由一个唯一的名号代表,这些称呼可以涵盖字母、数字、下划线。cookie的称号是不分大小写,所以mycookie和MyCookie是一律。但考虑到服务器端语言可能区分轻重缓急写,提议定义和动用时仍旧分别轻重缓急写。

value:
保存在cookie中的字符串值。那么些值在储存此前必须运用encodeURIComponent()对其进展编码,避防丢失数据或占用了cookie。注意:cookie名字和值加起来的字节数不可能超过4095字节,也即4KB。

domain:
出于安全着想,网站不可能访问由其他域所创立的cookie。创制cookie未来,域的音讯会作为cookie的一局地存储下来。关于域,那里给一个例证,如http://ibm.com/foo/index.aspx,
它的域为:ibm.com。

path:
cookie的另一个平安特点,限制对web服务器上一定目录的造访。即决定什么访问能触发发送.例如请求的地方是上面的url,即便path=/foo,这一个cookie就会被发送,可是path为任何的话,该cookie会被忽视。

expires: cookie的超时时间。

secure:
一个true/false值,用于表示cookie是还是不是只好从平安网站(使用SSL和https协议的网站)中做客。假诺那几个值被安装为true

 

 

Cookie的为主步骤:(网上参考)

浏览器对于Web服务器应答滁州中Cookie的操作步骤:

a. 从Web服务器的作答邢台中领到所有的cookie。

b. 解析那一个cookie的组成部分(名称,值,路径等等)。

c. 判定主机是还是不是同意设置这么些cookie。允许的话,则把这个cookie存储在本地。

浏览器对Web服务器请求邢台中具有的cookie举办筛选的手续:

a.
依据请求的url和当地存储cookie的属性,判断那几个cookie能被发送给Web服务器。

b. 对于三个cookie,判定发送的各类。 
c. 把必要发送的cookie加入到请求http镇江中共同发送。

 

库克ie在ASP.Net中的基本用法:

发送端:

HttpCookie cookie = new HttpCookie(“UserInfo”);

cookie[“name”] = name.Text;

cookie[“age”] = age.Text;

cookie[“sex”] = sex.Text;

cookie[“language”] = language.Text;

cookie.Expires = DateTime.MaxValue;

Response.Cookies.Add(cookie);

Response.Redirect(“cookie2.aspx”); 

接收端:

HttpCookie cookie = Request.Cookies[“UserInfo”];

if(cookie!=null)

{

name.Text = cookie[“name”]; 
age.Text = cookie[“age”]; 
language.Text = cookie[“language”]; 
sex.Text = cookie[“sex”];

}

else

{   }

最好在接收端上添加一个尺码判断,那样则防止一旦禁用了cookie,就不会招致出错,也可以确定cookie是不是存在。

 

Cookie的用途:

提防网上再次投票; 
透过cookie完毕活动登陆 
单点登陆 ( Single Sign On,
SSO),是眼下可比盛行的店堂工作重组的缓解方案之一. 简而言之,
就是在多少个使用序列中,用户只必要报到一回就可以访问具有相互信任的选择序列。它概括能够将这一次重大的报到映射到其余使用中用来同一个用户的记名的建制。

 

 

Session和Cookie比较:(网上参考)

  1. 选拔场景

Cookie的出色应用场景是Remember
Me服务,即用户的账户音信通过cookie的样式保留在客户端,当用户再一次恳请匹配的URL的时候,账户音信会被传送到服务端,交由相应的顺序达成机关登录等功能。当然也得以保留一些客户端音讯,比如页面布局以及查找历史等等。

皇冠直营现金网官方网,Session的出众应用场景是用户登录某网站随后,将其登录消息放入session,在未来的每趟请求中询问相应的记名音信以保险该用户合法。当然照旧有购物车等等经典场景;

  1. 安全性

cookie将音讯保存在客户端,若是不开展加密的话,无疑会揭穿一些心事音讯,安全性很差,一般情状下敏感消息是因此加密后存储在cookie中,但很简单就会被窃取。而session只会将新闻存储在服务端,倘若存储在文件或数据库中,也有被窃取的可能,只是可能比cookie小了太多。

Session安全性方面相比杰出的是存在会话威迫的题材,这是一种安全威逼,那在下文种举行更详尽的认证。总体来讲,session的安全性要高于cookie;

  1. 性能

Cookie存储在客户端,消耗的是客户端的I/O和内存,而session存储在服务端,消耗的是服务端的资源。但是session对服务器造成的下压力相比较集中,而cookie很好地分流了资源消耗,就这一点来说,cookie是要优于session的;

  1. 时效性

库克ie能够通过安装有效期使其较短时间内设有于客户端,而session一般只有相比短的有效期(用户积极销毁session或关闭浏览器后吸引超时);

  1. 其他

库克ie的处理在付出中绝非session方便。而且cookie在客户端是有数据和分寸的限量的,而session的大小却只以硬件为限制,能储存的数目翔实大了太多。

 

 

至于Session和Cookie两地点的学识还有太多太多要学,现在晓得只是因噎废食。

 

网上资源来源:

http://www.cnblogs.com/shoru/archive/2010/02/19/1669395.html 
大话session

http://www.cnblogs.com/fish-li/archive/2011/07/03/2096903.html 细说cookie

http://www.cnblogs.com/langzi127/archive/2009/04/08/1431730.html cookie的应用

 

相关文章