Session

  • Http无状态
  1. Http协议是无状态的: 不会记得上次和网页”发生”了什么
  2. “记住”上次发生什么的两种方式: ①<input><select><textarea>的”name””value”属性②隐藏字段ViewState
  3. 隐藏字段方式的缺点: 加大网站流量 降低浏览速度 机密数据放在表单中会有数据欺骗等安全性问题
  • IsPostBack
  1. 请求(request)→响应(response): 提交表单需有”name“&”runat”属性(控件id为JQuery DOM使用)/所有表单都是提交以”name”为key 以”value”为value的内容/只有<input> <textarea> <select>等元素赋予”name” “value”属性后可以提交服务器
  2. PostBack: 回发
  3. <input type=“hidden” name=“ispostback” value=“true” />
  • Get & Post
  1. <form method=“get/post”/>: get(默认)通过URL传递表单值/post则隐藏在http报文中
  2. 二者区别: 是否通过URL/get数量有限 post不受限制/post有浏览器提醒重新提交表单的问题 get没有
  3. 浏览器端<form>默认为Get 服务器端<form runat=“server”>默认为Post
  • ViewState
  1. ViewState用于存储无法通过HTML的<input><textarea><select>的”name””value”属性存储的值
  2. 使用ASP.Net重写Div版本自增: 查看生成的源代码
  3. 隐藏<input>→ViewState→解密(ViewStateDecoder工具)发现隐藏属性值
  4. Label1.Text; //内部: this.ViewState[“Text”];通过ViewState调用客户传递值
  5. 禁用ViewState: enableviewstate=false/禁用ViewState之后TextBox版本不受影响 Label版本受影响(原因: input textarea select)/互联网站的开发需要部分的禁用ViewState(如ListView)
  • Cookie
  1. 表单是和页面相关的 只有浏览器端提交了这些数据服务器端才能得到 而有时候希望在浏览器端任意的地方存取一些和访问者相关的信息 这时候就不方便将这些信息保存在表单中了 因为如果那样的话必须随时注意在所有页面表单中都保存这些信息 Cookie是和站点相关的 并且每次向服务器端请求的时候除了发送表单参数外 还会将和站点相关的Cookie都提交到服务器(强制性的) Cookie也是保存在浏览器端的 而且浏览器会在每次请求的时候都会把和这个站点相关的Cookie提交到服务器 并且将服务器端返回的Cookie更新回数据库(服务器端返回数据除了html数据之外 还会返回修改的Cookie 浏览器将返回的Cookie值更新到浏览器本地的Cookie就可以) 因此可以将信息保存在Cookie中 然后再服务器端读取 修改
  2. Cookie的应用: 网站优化(通过二级域名减少Cookie信息以加快访问速度 如image.163.com)
  3. Cookie的缺点跟表单相同(机密性) 且不能存储过多信息
  4. (System.Web)HttpCookie类: 提供创建和操作各Http Cookie的类型安全方法
  • Session
  1. (System.Web.UI)Page类: 派生自TemplateControl IHttpHandler(所有服务器端处理程序都实现了IHttpHandler接口)
  2. http大致处理流程: ①new一个处理对象(如IncValue : IHttpHandler)②调用PProcessRequest()方法③释放实例
  3. Session原理代码手写(Cookie→sessionmanager自定义类/保存一个Guid到Cookie中 然后在服务器端建立一个以Guid为Key 保存数据为Value的全局(static)Dictionary 以实现多用户共享数据)
  4. Session机制: ASP.Net PHP JSP等很多服务端技术都实现了Session机制 原理都差不多
  5. Session的超时销毁机制(服务器端不可能知道浏览器端何时关闭/心跳请求)
  6. (System.Web.UI)Page.Session属性: 获取ASP.Net提供的当前Session对象
  7. Session & Cookie: Session存在服务器端 Cookie存在浏览器端/都是为了存储与客户相关信息 且数据量不能过大/Session取值为Object类型(需转换) Cookie取值(设值)为string类型
  • 暴力破解 & 机器人注册
  1. 暴力破解原理及预防: WebClient伪造Post请求/①验证码②错误登陆次数限制
  2. (System.Net)WebClient: 提供向URI标识的资源发送数据和从URI标识的资源接收数据的公共方法 
  3. 机器人注册原理及预防: WebBrowser模拟Post请求/①验证码
  4. (System.Windows.Forms)WebBrowser: 使用户可以在窗体中导航控件
  • 验证码
  1. 验证码: 见案例
  2. 图片看不清换一张document.getElementById(*).click(function(){this.src=“jpg.ashx?aaa=“+new Date();});
  3. 在.ashx中要使用Session 需加载IRequiresSessionState接口

posted on 2011-09-19 20:48  les_vies  阅读(219)  评论(0编辑  收藏  举报

导航