zoukankan      html  css  js  c++  java
  • 走进会话

    会话用来做什么:

      它是用来维持请求和请求之间的状态。http请求默认是完全无状态的,也就是说,当用户浏览器把一个完整的请求发送到服务器,等到服务器接收完全部的请求,在此之后,用户的浏览器与服务器之间再也没人什么联系。当用户浏览器发送下一个请求,那么这个请求无法与之前的请求关联起来。这样会导致什么后果?以在线商城为例子,用户需要在不同的商品页面中浏览,当把其中一个商品添加到购物车后,然后再去找其他商品并添加到购物车。若采用采用无状态的连接,也就是前后两次请求无法关联起来,购物车里并不包含前一次添加进来的商品。所以你只能在当前请求还没有结束之前把账单结了,也就是一次只能付款一个商品,无法做到一次性付款所有商品。

     

    会话的工作原理:

      会话是由服务器或web应用程序管理的某些文件、内存片段、对象或容器,它包含了分配给它的各种不同的数据。可以把它理解为一个可以存储之前请求的空间,服务器会把某个用户的会话保存在本机中,当下一次用户再发送请求到服务器,会把当前的请求与会话中存储的请求关联起来。

      若采用了会话技术,那么在用户浏览器发送第一个请求到服务器,服务器会为该用户开辟一段空间用来保存会话内容,并生成一个唯一的会话ID用来标识该用户。当服务器返回响应时,会在响应段中添加会话ID。接下来,从该用户浏览器发出的每个请求都将包含这个会话ID,当Web应用程序接收到含有会话ID的请求时,它可以通过该ID将现有的会话与当前的请求关联起来。

    走进会话Cookie:

      它是一种通信机制,可以通过Set-Cookie响应头在服务器和浏览器之间传递任意的数据,并存储在用户计算机中,然后再通过请求头Cookie从浏览器返回到服务器中。

      在JavaEE中会话Cookie的名字默认是JSESSIONID  

      Cookie有哪些特性:

        1.Domain:告诉浏览器将cookie发送到哪个域名中

        2.Path:将cookie发送到某个域名下的某个URL

        3.Expires:定义了Cookie的绝对过期日期

        4.Max-Age:定义了Cookie的存活时间,以秒为单位

        ps:若Cookie中不包含Expires和Max-Age这两个特性,那么该Cookie将在浏览器关闭时被删除

        5.Secure:浏览器只会通过HTTPS发送Cookie。

        6.HttpOnly:只能通过直接的浏览器请求发送cookie,其他技术如JavaScript、Flash将无法发送Cookie

     

    如何在请求URL中包含会话ID:

      会话ID需要作为第一个响应返回给用户浏览器,如何生成会话ID?需要把会话ID添加到每个应用程序返回的URL中,包括页面的链接、表单操作以及302重定向。

      可以通过HttpServletResponse接口中的两个方法encodeURL()和encodeRedirectURL()将会话ID内嵌到URL中。任何在链接、表单操作或者其他标签中的URL都将被传入到encodeURL()方法中,然后返回一个正确的、经过编码处理的URL。任何可以传入sendRedirect()中的URL都可以传入encodeRedirectURL()方法中,返回一个正确的、经过编译处理的URL。

    URL中内嵌会话ID会带来什么后果:

      如果将该URL复制到公共场所,如果恶意用户发现了该链接,可以使用劫持用户的会话。他将可以修改账户地址、获取密码重置链接并终修改密码。

      攻击者通过URL或者检查浏览器的Cookie获得会话ID,然后将含有会话ID的URL发送给目标用户,当用户点击链接进入网站时,它的会话ID就换成了URL中含有的固定ID-----攻击者已经持有该ID。如果用户接着在该会话期间登录网站,那么攻击者也可以登录成功,因为这个会话ID是他分享的,因此他也可以访问用户的账号。这个可以通过禁止在URL中内嵌会话ID或者设置登录后会话迁移(当用户登录时,修改会话ID或者将会话信息复制到新的会话中,并使之前的会话无效)

  • 相关阅读:
    leetcode Ch2-Dynamic Programming I
    leetcode Ch3-DFS & Backtracking II
    关于尾递归
    leetcode BFS
    linux各文件夹的作用
    auto_ptr与shared_ptr ZZ
    漏洞分析中常用的堆调试支持
    【读书笔记】Android平台的漏洞挖掘和分析
    关于Fuzz——peach的学习
    如何验证一个地址可否使用—— MmIsAddressValid函数分析
  • 原文地址:https://www.cnblogs.com/aristole/p/8029694.html
Copyright © 2011-2022 走看看