对Session和Cookie的区分与理解 
先说session 
对SESSION的争论好象一直没有停止过,不过幺麽能理解SESSION的人应该占90以上。但还是讲讲,别嫌老~ 
有一些人赞成用SESSION,有一些人不赞成。但这个问题到底要怎么说。不妨听听我的看法,如果有错误请不要朝丢东西,金条和硬币除外。 
有些人应该知道我是做江湖程序的,而江湖程序做看中的就是效率,但这里不谈设计,而从一些比较实际的角度看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入侵程序。 
(可惜我原先那他没干正经事情,做WEB游戏挂机程序来的) 
附一个不错的回贴:

随机推荐

  1. (Review cs231n) BN and Activation Function

    CNN网络的迁移学习(transfer learning) 1.在ImageNet上进行网络的预训练 2.将最上方的层,即分类器移除,然后将整个神经网络看成是固定特征提取器来训练,将这个特征提取器置于 ...

  2. 数据库oracle 目录结构

    Oracle_Home主目录位于D:\dev\oracle\product\10.2.0(oracle安装路径)下,它包含Oracle软件运行有关的子目录和网络文件以及选定的组件等:若在主机上第一次且 ...

  3. Gym - 100989H

    After the data structures exam, students lined up in the cafeteria to have a drink and chat about ho ...

  4. 基于Docker搭建MySQL多源复制环境

    MySQL5.7在主从复制上面相对之前版本多了一些新特性,包括多源复制.基于组提交的并行复制.在线修改Replication Filter.GTID增强.半同步复制增强等. 多源复制:多源复制加入了一 ...

  5. Mysql BLOB、BLOB与TEXT区别及性能影响、将BLOB类型转换成VARCHAR类型

    在排查公司项目业务逻辑的时候,见到了陌生的字眼,如下图 顺着关键字BLOB搜索,原来是Mysql存储的一种类型,从很多文章下了解到如下信息 了解 MySQL中,BLOB字段用于存储二进制数据,是一个可 ...

  6. Html table、thead、tr、th、td 标签

    Html table.thead.tr.th.td 标签 案例一 <!-- table 表格标签,配置表格使用.border="1" 添加表格框架 --> <ta ...

  7. [C++ Primer Plus] 第6章、分支语句和逻辑运算符(二)课后习题

    一.复习题 3. #include<iostream> using namespace std; void main() { char ch; int c1, c2; c1 = c2 = ...

  8. flask --- 01 .初始

    一. 四种web框架比较 Django : 优点 - 大而全所有组件都是有组织内部开发高度定制化 教科书级别的框架 缺点 - 大到浪费资源,请求的时候需要的资源较高 Flask : 优势 - 小而精, ...

  9. 变量和关系符和JAVA基本类型笔记与常考面试题

    变量的类型:数值型:整型(byte,short,int,long).浮点型(float,double)非数值型:布尔类型(boolean),字符型(char),字符串类型(String),其他引用型 ...

  10. 【C#数据结构系列】图

    一:图 图状结构简称图,是另一种非线性结构,它比树形结构更复杂.树形结构中的结点是一对多的关系,结点间具有明显的层次和分支关系.每一层的结点可以和下一层的多个结点相关,但只能和上一层的一个结点相关.而 ...