cookie技艺简要介绍,Cookie深度剖判

By admin in 4858.com on 2019年8月10日

【转】Cookie深度深入分析,cookie深度分析

Cookie简介

     
 举世著名,Web协商(也正是HTTP)是三个无状态的商业事务(HTTP1.0)。多个Web应用由许多少个Web页面组成,每个页面都有独一的U福特ExplorerL来定义。用户在浏览器的地址栏输入页面包车型大巴U奥德赛L,浏览器就能向Web
Server去发送央求。如下图,浏览器向Web服务器发送了八个恳求,申请了多个页面。这四个页面的伏乞是分别选拔了多个单身的HTTP连接。所谓无状态的情商也正是表以后此间,浏览器和Web服务器会在第二个央浼实现之后关闭连接通道,在第二个恳求的时候重新确立连接。Web服务器并不区分哪些央求来自哪个客户端,对全体的央浼都同等对待,皆以独自的连天。那样的艺术大大差别于守旧的(Client/Server)C/S结构,在那么的施用中,客户端和服务器端会创立三个长日子的专项使用的连接通道。正是因为有了无状态的特色,每种连接财富能够快速被其余客户端所采纳,一台Web服务器本领够同期服务于广大的客户端。

4858.com 1

 可是大家普通的运用是有事态的。先不用提差别采用之间的SSO,在同一个使用中也亟需保留用户的记名身份音信。举例用户在拜候页面1的时候实行了登入,可是刚刚也事关,客户端的各种需要都是单身的连年,当客户再一次走访页面2的时候,怎么着工夫告诉Web服务器,客户刚才已经报到过了啊?浏览器和服务器之间有约定:通过行使cookie手艺来保证应用的状态。Cookie是足以被Web服务器设置的字符串,并且能够保留在浏览器中。如下图所示,当浏览器访谈了页面1时,web服务器设置了两个cookie,并将以此cookie和页面1一齐再次回到给浏览器,浏览器接到cookie之后,就能保存起来,在它访问页面2的时候会把那一个cookie也带上,Web服务器收到要求时也能读出cookie的值,依据cookie值的剧情就能够肯定和还原部分用户的音讯情状。

4858.com 2

Cookie组成

     
 
cookie是由名称、内容、成效路线、效率域、协议、生存周期组成,别的还会有个HttpOnly属性,HttpOnly属性很注重,假如您在cookie中安装了HttpOnly属性,那么通过js脚本(document.cookie)将不可能读取到cookie新闻,那样能自然水平上的防范XSS攻击,关于XSS能够看本身前边的稿子–XSS攻击及堤防。汤姆cat服务器设置的JSESSIONID正是HttpOnly的。

4858.com 3

 JavaEE中对cookie做了打包,对应的是底下这些类:

java.lang.Object
  |
  +--javax.servlet.http.Cookie

     
 该类能够设置cookie的名称、内容、成效路线、效率域、协议、生存周期,but不可能设置HttpOnly属性,不明了那样做是由于怎么样思念,假诺非要设置HttpOnly的cookie,大家能够经过响应头来管理:

 

Cookie作用域
     
 测验Cookie的功能域要求弄多少个域名,修改C:\Windows\System32\drivers\etc\hosts文件,将本机ip映射出多个域名,如下:

[html] view plain copy print?

    127.0.0.1 web1.ghsau.com  
    127.0.0.1 web2.ghsau.com  

    127.0.0.1 web1.com  
    127.0.0.1 web2.com  

 

     
 前多个是2级域名(ghsau.com)一样,3级域名(web1、web2)分化,后五个是2级域名区别。然后大家再写七个jsp,贰个用来安装Cookie,另贰个用以浮现Cookie。
       SetCookie.jsp:

[html] view plain copy print?

    <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>  
    <%  
        Cookie cookie = new Cookie("test_key", "test_value");  
        cookie.setPath("/");  
    //  cookie.setDomain(".ghsau.com");  
        response.addCookie(cookie);  
    %>  

 

      ShowCookie.jsp:

[html] view plain copy print?

    <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>  
    <%  
        // 输出cookies,过滤掉JSESSIONID  
        Cookie[] cookies = request.getCookies();  
        if(cookies != null)  
            for(Cookie cookie : cookies) {  
                if(cookie.getName().equals("JSESSIONID"))    continue;  
                out.println(cookie.getName() + "-" + cookie.getValue());  
            }  
    %>  

 

     
 将那三个jsp放到应用后,安排到服务器中,运转服务器,大家就足以通过域名来访谈了。
     
 测验一,首先访谈
     
 测验二,将Set库克ie.jsp第五行注释展开,依照上面包车型大巴依次依次拜望,大家开采

     
 测量试验三,修改SetCookie.jsp第五行代码为cookie.setDomain(“.web2.com”),首先寻访

Cookie安全性

     
 cookie中的数据一般会蕴藏用户的苦衷数据,首先要保险数据的保密性,其次要保障数据不可能被仿制假冒恐怕篡改,基于这两点,大家平时须要对cookie内容举办加密,加密办法相似选取对称加密(单密钥,如DES)或非对称加密(一对密钥,如奇骏SA),密钥必要保留在劳务器端叁个莱芜的地方,那样,外人不领会密钥时,不可能对数据开始展览解密,也不能伪造或歪曲数据。别的,像上文提到的,重要的cookie数据要求设置成HttpOnly的,制止跨站脚本获取你的cookie,保险了cookie在浏览器端的安全性。还大概有咱们得以安装cookie只服从于平安的说道(https),JavaEE中能够透过Cookie类的setSecure(boolean
flag)来设置,设置后,该cookie只会在https下发送,而不会再http下发送,保障了cookie在劳动器端的安全性,服务器https的装置能够参谋该文章。

     
 本文来自:高爽|Coder,原作地址:

 

Cookie简单介绍赫赫有名,Web合计(也便是HTTP)是三个无状态的评论(HTTP1.0)。一个Web应用由众八个Web页面…

Cookie简介

Cookie简介

Cookie简介

     
 威名昭著,Web探讨(约等于HTTP)是贰个无状态的说道(HTTP1.0)。四个Web应用由许多少个Web页面组成,种种页面皆有独一的U酷威L来定义。用户在浏览器的地址栏输入页面包车型地铁U路虎极光L,浏览器就能够向Web
Server去发送央浼。如下图,浏览器向Web服务器发送了五个央浼,申请了三个页面。那七个页面包车型客车央求是各自选拔了七个单身的HTTP连接。所谓无状态的探究也正是显未来那边,浏览器和Web服务器会在第一个诉求实现之后关闭连接通道,在第2个乞请的时候重新树立连接。Web服务器并不区分哪些央求来自哪个客户端,对具备的乞求都比量齐观,都以独立的连年。那样的主意大大差异于守旧的(Client/Server)C/S结构,在那么的运用中,客户端和服务器端会创建一个长日子的专项使用的连天通道。便是因为有了无状态的表征,每种连接财富能够相当的慢被其余客户端所录取,一台Web服务器手艺够同一时候服务于广大的客户端。

     
 众人周知,Web共同商议(也正是HTTP)是贰个无状态的情商(HTTP1.0)。三个Web应用由许七个Web页面组成,各类页面都有独一的ULacrosseL来定义。用户在浏览器的地址栏输入页面包车型客车URAV4L,浏览器就能够向Web
Server去发送央浼。如下图,浏览器向Web服务器发送了多个诉求,申请了七个页面。这八个页面包车型地铁伸手是个别使用了七个独立的HTTP连接。所谓无状态的协议也正是呈现在此间,浏览器和Web服务器会在率先个央浼达成今后关闭连接通道,在其次个央求的时候再度营造连接。Web服务器并不区分哪些乞求来自哪个客户端,对富有的伸手都同等对待,都以单独的连年。那样的格局大大分裂于守旧的(Client/Server)C/S结构,在那样的施用中,客户端和服务器端会创建二个长日子的专项使用的连日通道。就是因为有了无状态的性状,各种连接财富能够火速被其余客户端所选取,一台Web服务器技艺够相同的时间服务于广大的客户端。

   
家喻户晓,HTTP协议是四个无状态的争执。一个Web应用由许两个Web页面组成,每一个页面都有独一的UXC60L来定义。用户在浏览器的地点栏输入页面包车型大巴U纳瓦拉L,浏览器就可以向Web
Server去发送央求。浏览器向Web服务器发送了三个乞请,申请了五个页面。那五个页面包车型大巴伏乞是各自选择了五个单身的HTTP连接。所谓无状态的合计也正是显现在这边,浏览器和Web服务器会在首先个哀告完毕之后关闭连接通道,在第1个央求的时候重新制造连接。Web服务器并不区分哪些央求来自哪个客户端,对全体的哀告都同样珍视,都以独立的连日。那样的章程大大分裂于传统的(Client/Server)C/S结构,在那么的应用中,客户端和服务器端会建设构造三个长日子的专用的再而三通道。便是因为有了无状态的风味,各种连接能源可以一点也不慢被另外客户端所援用,一台Web服务器技能够同时服务于广大的客户端。

4858.com 4

4858.com 5

    可是大家家常便饭的行使是有景况的。在同四个选拔中也亟需保留用户的记名身份音讯。譬如用户在探问页面1的时候进行了登入,可是刚刚也涉嫌,客户端的种种诉求都以单独的接二连三,当客户再一次寻访页面2的时候,怎么着工夫告诉Web服务器,客户刚才已经报到过了吧?浏览器和服务器之间有预定:通过选用cookie手艺来爱惜应用的情况。Cookie是足以被Web服务器设置的字符串,并且能够保留在浏览器中。如下图所示,当浏览器访谈了页面1时,web服务器设置了八个cookie,并将这一个cookie和页面1一同重回给浏览器,浏览器接到cookie之后,就能够保存起来,在它访问页面2的时候会把那么些cookie也带上,Web服务器收到乞求时也能读出cookie的值,根据cookie值的开始和结果就可以决断和大张旗鼓部分用户的消息情形。

 然而大家常见的运用是有情形的。先不用提不相同接纳之间的SSO,在同二个选用中也急需保留用户的登入身份音讯。举例用户在拜望页面1的时候进行了登陆,可是刚刚也提到,客户端的各种哀告都以独立的三番五次,当客户再度做客页面2的时候,怎么着技能告诉Web服务器,客户刚才已经报到过了吧?浏览器和服务器之间有预定:通过使用cookie技巧来保卫安全应用的情况。库克ie是能够被Web服务器设置的字符串,並且可以保存在浏览器中。如下图所示,当浏览器访谈了页面1时,web服务器设置了一个cookie,并将以此cookie和页面1一齐重回给浏览器,浏览器接到cookie之后,就能够保存起来,在它访问页面2的时候会把这么些cookie也带上,Web服务器收到央浼时也能读出cookie的值,依照cookie值的剧情就足以判明和恢复生机部分用户的新闻意况。

 不过大家平时的接纳是有动静的。先不用提分歧选择之间的SSO,在同叁个利用中也急需保留用户的报到身份新闻。比如用户在会见页面1的时候举办了登入,可是刚刚也涉嫌,客户端的各类必要都以独立的连接,当客户再度拜谒页面2的时候,怎么着技艺告诉Web服务器,客户刚才已经报到过了吧?浏览器和服务器之间有预订:通过运用cookie本事来保养应用的场所。Cookie是能够被Web服务器设置的字符串,何况能够保存在浏览器中。如下图所示,当浏览器访问了页面1时,web服务器设置了一个cookie,并将以此cookie和页面1一同重回给浏览器,浏览器接到cookie之后,就能保存起来,在它访问页面2的时候会把这几个cookie也带上,Web服务器收到央求时也能读出cookie的值,依照cookie值的从头到尾的经过就能够推断和出山小草部分用户的音讯意况。

4858.com 6

4858.com 7

4858.com 8

 

cookie技艺简要介绍,Cookie深度剖判。Cookie组成

Cookie组成

Cookie组成

       cookie是由名称、内容、功用路线、成效域、协议、生存周期组成,其余还也许有个HttpOnly属性,HttpOnly属性相当的重大,借令你在cookie中装置了HttpOnly属性,那么通过js脚本(document.cookie)将相当小概读取到cookie新闻,这样能明确水准上的警务器材XSS攻击,关于XSS能够看本人事先的篇章–XSS攻击及防守。汤姆cat服务器设置的JSESSIONID就是HttpOnly的。

       cookie是由名称、内容、效用路线、功效域、协议、生存周期组成,另外还会有个HttpOnly属性,HttpOnly属性很要紧,要是您在cookie中安装了HttpOnly属性,那么通过js脚本(document.cookie)将不能读取到cookie消息,那样能自然水平上的防护XSS攻击,关于XSS能够看笔者前边的文章–XSS攻击及防御。汤姆cat服务器设置的JSESSIONID正是HttpOnly的。

   cookie是由名称、内容、成效路线、成效域、协议、生存周期组成,别的还大概有个HttpOnly属性,HttpOnly属性相当的重大,倘令你在cookie中装置了HttpOnly属性,那么通过js脚本(document.cookie)将不可能读取到cookie消息,这样能一定程度上的防卫XSS攻击。汤姆cat服务器设置的JSESSIONID正是HttpOnly的。JavaEE中对cookie做了包装,对应的是javax.servlet.http.库克ie类,该类能够安装cookie的名称、内容、成效路径、功用域、协议、生存周期,but不能设置HttpOnly属性,不清楚那样做是出于什么样思量,假诺非要设置HttpOnly的cookie,大家能够透过响应头来处理:

4858.com 9

4858.com 10

 

 JavaEE中对cookie做了包装,对应的是上面这么些类:

 JavaEE中对cookie做了包装,对应的是底下那么些类:

 response.setHeader("Set-Cookie", "cookiename=value;Path=/;Domain=domainvalue;Max-Age=seconds;HttpOnly");
java.lang.Object
  |
  +--javax.servlet.http.Cookie
java.lang.Object
  |
  +--javax.servlet.http.Cookie

 

     
 该类能够设置cookie的称号、内容、功用路线、成效域、协议、生存周期,but无法安装HttpOnly属性,不晓得这么做是出于什么样思考,假使非要设置HttpOnly的cookie,我们能够透过响应头来管理:

     
 该类能够设置cookie的称呼、内容、效用路线、成效域、协议、生存周期,but不能够安装HttpOnly属性,不精通这么做是由于什么考虑,假诺非要设置HttpOnly的cookie,大家能够透过响应头来管理:

Cookie的安全性

 

 

   cookie中的数据一般会包蕴用户的隐情数据,首先要保障数据的保密性,其次要保险数据不可能被仿制假冒只怕篡改,基于这两点,我们平常必要对cookie内容张开加密,加密格局相似选用对称加密(单密钥,如DES)或非对称加密(一对密钥,如RSA),密钥须求保留在劳动器端一个平安无事的地点,那样,旁人不精通密钥时,不能够对数码开始展览解密,也不恐怕伪造或篡改数据。别的,像上文提到的,主要的cookie数据须要设置成HttpOnly的,制止跨站脚本获取你的cookie,保障了cookie在浏览器端的安全性。还会有大家能够安装cookie只遵循于平安的情商(https),JavaEE中能够通过Cookie类的setSecure(boolean
flag)来安装,设置后,该cookie只会在https下发送,而不会再http下发送,保证了cookie在劳务器端的安全性,

Cookie作用域
     
 测量检验Cookie的功用域须求弄多少个域名,修改C:\Windows\System32\drivers\etc\hosts文件,将本机ip映射出多个域名,如下:

Cookie作用域
     
 测量试验Cookie的功能域供给弄多少个域名,修改C:\Windows\System32\drivers\etc\hosts文件,将本机ip映射出多个域名,如下:

 

[html] view
plain
copy
print?

[html] view
plain
copy
print?

    127.0.0.1 web1.ghsau.com  
    127.0.0.1 web2.ghsau.com  

    127.0.0.1 web1.com  
    127.0.0.1 web2.com  
    127.0.0.1 web1.ghsau.com  
    127.0.0.1 web2.ghsau.com  

    127.0.0.1 web1.com  
    127.0.0.1 web2.com  

 

 

     
 前七个是2级域名(ghsau.com)一样,3级域名(web1、web2)差异,后八个是2级域名差异。然后我们再写八个jsp,三个用以安装Cookie,另一个用来体现Cookie。
       SetCookie.jsp:

     
 前四个是2级域名(ghsau.com)相同,3级域名(web1、web2)分裂,后多个是2级域名不相同。然后大家再写四个jsp,三个用来安装Cookie,另一个用以呈现Cookie。
       SetCookie.jsp:

[html] view
plain
copy
print?

[html] view
plain
copy
print?

    <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>  
    <%  
        Cookie cookie = new Cookie("test_key", "test_value");  
        cookie.setPath("/");  
    //  cookie.setDomain(".ghsau.com");  
        response.addCookie(cookie);  
    %>  
    <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>  
    <%  
        Cookie cookie = new Cookie("test_key", "test_value");  
        cookie.setPath("/");  
    //  cookie.setDomain(".ghsau.com");  
        response.addCookie(cookie);  
    %>  

 

 

      ShowCookie.jsp:

      ShowCookie.jsp:

[html] view
plain
copy
print?

[html] view
plain
copy
print?

    <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>  
    <%  
        // 输出cookies,过滤掉JSESSIONID  
        Cookie[] cookies = request.getCookies();  
        if(cookies != null)  
            for(Cookie cookie : cookies) {  
                if(cookie.getName().equals("JSESSIONID"))    continue;  
                out.println(cookie.getName() + "-" + cookie.getValue());  
            }  
    %>  
    <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>  
    <%  
        // 输出cookies,过滤掉JSESSIONID  
        Cookie[] cookies = request.getCookies();  
        if(cookies != null)  
            for(Cookie cookie : cookies) {  
                if(cookie.getName().equals("JSESSIONID"))    continue;  
                out.println(cookie.getName() + "-" + cookie.getValue());  
            }  
    %>  

 

 

     
 将那七个jsp放到应用后,陈设到服务器中,运维服务器,我们就足以通过域名来访谈了。
       测量检验一,首先访谈
     
 测验二,将SetCookie.jsp第五行注释张开,依照地点的逐条依次拜望,大家发掘

     
 将那五个jsp放到应用后,安顿到服务器中,运营服务器,我们就能够通过域名来访谈了。
       测验一,首先访谈
4858.com ,     
 测量检验二,将SetCookie.jsp第五行注释展开,依照地点的逐个依次走访,我们发掘

     
 测验三,修改SetCookie.jsp第五行代码为cookie.setDomain(“.web2.com”),首先拜会

     
 测量检验三,修改SetCookie.jsp第五行代码为cookie.setDomain(“.web2.com”),首先寻访

Cookie安全性

Cookie安全性

     
 cookie中的数据一般会包括用户的苦衷数据,首先要保证数据的保密性,其次要保证数据无法被冒领恐怕篡改,基于这两点,大家平日须要对cookie内容实行加密,加密措施一般采纳对称加密(单密钥,如DES)或非对称加密(一对密钥,如RSA),密钥须要保留在服务器端三个安然照旧的地点,那样,外人不晓得密钥时,不能对数据开始展览解密,也敬谢不敏伪造或篡改数据。其他,像上文提到的,首要的cookie数据须求设置成HttpOnly的,防止跨站脚本获取你的cookie,保证了cookie在浏览器端的安全性。还会有我们得以设置cookie只效力于平安的协商(https),JavaEE中能够透过库克ie类的setSecure(boolean
flag)来安装,设置后,该cookie只会在https下发送,而不会再http下发送,保险了cookie在劳务器端的安全性,服务器https的安装能够参照该文章。

     
 cookie中的数据一般会蕴藏用户的隐情数据,首先要保险数据的保密性,其次要保障数据不可能被伪造只怕篡改,基于这两点,大家一般必要对cookie内容展开加密,加密艺术相似采纳对称加密(单密钥,如DES)或非对称加密(一对密钥,如RSA),密钥须要保留在劳务器端一个康宁的地点,那样,外人不了然密钥时,不或然对数据开始展览解密,也无计可施伪造或歪曲数据。别的,像上文提到的,主要的cookie数据供给安装成HttpOnly的,幸免跨站脚本获取你的cookie,保障了cookie在浏览器端的安全性。还恐怕有大家得以安装cookie只遵从于平安的合计(https),JavaEE中能够透过Cookie类的setSecure(boolean
flag)来设置,设置后,该cookie只会在https下发送,而不会再http下发送,保障了cookie在劳动器端的安全性,服务器https的装置能够参谋该文章。

     
 本文来自:高爽|Coder,原来的书文地址:

     
 本文来自:高爽|Coder,原著地址:

 

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图
Copyright @ 2010-2019 美高梅手机版4858 版权所有