| |
|
| |
 |
|
对session和cookie的区分与理解
|
|
| 日期:2005-7-18 8:25:14 来源:易特网络技术 编辑:黑鹰 点击: |
先说session
对session的争论好象一直没有停止过,不过能理解session的人应该占90以上。但还是讲讲,别嫌老~
有一些人赞成用session,有一些人不赞成。但这个问题到底要怎么说。不妨听听我的看法,如果有错误请不要朝我丢东西,金条和硬币除外。
首先要先说session是干什么的,session是可以存储针对与某一个用户的ie以及通过其当前窗口打开的任何窗口具有针对性的用户信息存储机制。为什么要这样说。看下边先研究session是如何启动的,当打开ie以后浏览网站后会发出一个指令请求sessionid以及对各个类型数据的下载许可,如图片,声音以及flash。 数据实际传输内容:ie到服务器 get / http/1.1 accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, */* accept-language0: zh-cn accept-encoding: gzip, deflate user-agent: mozilla/4.0 (compatible; msie 5.01; windows nt 5.0) host: www.jh521.com connection: keep-alive 服务器会返回一个没有被使用的sessionid让ie使用,当时ie就对返回sessionid做存储
并同时返回相关页面的下载数据,如下:服务器到ie http/1.1 200 ok server: microsoft-iis/5.0 date: sun, 30 nov 2003 16:41:51 gmt content-length: 21174..content-type: text/html set-cookie: aspsessionidcacbbbrt=ibomfonaojfeebhbpienjffc; path=/ cache-control: private 然后就是页面html代码此时这个ie程序(不是客户机)的sessionid就为ibomfonaojfeebhbpienjffc而当ie在访问任何这个站点的asp程序的时候,就会把ibomfonaojfeebhbpienjffc发送给服务器,服务器就会知道ibomfonaojfeebhbpienjffc是表示你而在服务器上设置session("name")="name"完全可以看成是session("ibomfonaojfeebhbpienjffc")("name")="name" 或者 session(sessionid)("name")="name" 这样,session就区分开用户了。 而当服务器反馈这个id的时候会看这个id有没有被使用。如果有在换一个 反正不会让你重复,如果想模拟某人的session的id来进行欺骗是可以的。不过要获取到对方ie传输信号,并且在保证当时这个sessionid没有被取消的情况下才可能实施。
不过要是我有那时间直接通过post信号找他name和pass了。我可不费这个劲,想必一些人明白了了sessionid到底是如何工作的,那么就在看看cookie,有人说sessionid就是cookie,按照技术上来讲他们不属于同类,但是属于一种工作模式,用户和服务器传输私有数据.当我设置cookie的时候,服务器会反馈给ie一个指令。ie通过这个网络指令生成cookie并存放,在特定的时候会取得这个这个信息如在访问这个站点并且cookid有效的时候。
那么为什么要用cookie而不用session呢 看下区别
有效时间以及存储方式 传输内容 cookie 可设置并在本地保留 明码信息
session 在ie不关闭并服务器不超时 只有sessionid
当如果想让用户下次登入网站不需要输入用户名或者密码的时候就只能用cookie,
因为他可以保留相当长的时间(在cookie记录被删除或者失效日期之前)
而session就不可以,他不会保留太长时间,而且ie在关闭后就自动清除了sessionid记录
在下次登入的时候会请求新的sessionid
而服务器想通过用户个人变量校验用户的状态的时候,就不能用cookie
如果用设置用户权限是user。而ie访问的时候就把user的明码传输到服务器。
那么如果我通过一定手段,比如直接修改cookie记录,把user修改成admin呢~~
就麻烦了。
但存储用户名和密码或者网站的配色方案这样的信息,用cookie是最好的
好,有点累了,在说说这个东西 request.servervariables("http_referer")
我想有一些人通过这个request.servervariables("http_referer") 来进行一些关键性限制,特别是对付远程提交以及非法侵入。 那么我就要提醒下服务器取得的http_referer信息完全是ie传输给服务器的,可以模拟 而且难度不大,用不到半个小时就可以用vb做出一个针对http_referer入侵程序。
|
上一篇:asp vbscript 函数速查表
下一篇:一个求最大值与最小值的函数
[发送给好友] [打印本页] [关闭窗口] [返回顶部] 转载请注明来源:http://www.iyit.net |
|
| 特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。 |
| 责任编辑: 黑鹰 |
投稿作者: 易特网络 |
| 信息来源: 易特网络技术 |
录入时间: 2005-7-18 8:25:14 |
| 浏览次数: |
投稿信箱: shtghy@163.com |
|
|
|
|