关于cookie的一些事
关于cookie的一些事
转自:http://blog.csdn.net/yunnysunny/article/details/7748106
cookie是实现web中用户状态维护的基础。我们常见的session也是在客户端浏览器中保存一个cookie信息,里面含sessionid数据,而在服务器端有一段与此sessionid关联的数据,这段数据可以存在服务器硬盘上,也可以序列化后存储在服务器的内存中,如果自己实现session过程的话,甚至可以存储在数据库或者nosql中。在做session验证的时候,正式用此sessionid去查找服务器上的相应信息。
cookie的属性
在理解cookie之前,先得介绍一下它的几个属性。
属性 |
介绍 |
name |
cookie的名字 |
value |
cookie的取值 |
expires |
过期时间,如果这个属性不指定的话,就是“session cookie”,也就是这个session在关闭浏览器后会被删除 |
path |
cookie的作用域,子文件夹下的网页可以访问父文件夹下的网页生成的cookie,但是反过来却不能。例如在/路径下生成了cookie_a,在/sub路径下生成了cookie_b,则/路径下只能读取cookie_a,而/sub路径下可以读取cookie_a和cookie_b。注意,如果不设置这个属性的话,默认使用的是当前的url的相对路径,例如在url http://www.a.com/some/page.php中设置cookie时没有指定path路径,则它的path属性为/some。一般我们设置cookie,就是让网站中所有其他的网页都能读取到的,所以应该将其设置为'/'。 |
domain |
cookie的所属域名,默认是全域名,例如www.somesite.com。当然也可以自己指定根域名,即.somesite.com(注意不是somesite.com,前面加一个点才是正确的),这样的话如果当前网站旗下有子域名网站的话,例如a.somesite.com b.somesite.com之类的子域名,那么在子域名所在网站中也能读取这个cookie。 |
secure |
这个属性是针对https来说的,如果设定其为true的话,那么只有在请求当前网站的https的地址的时候,才能读取出来。 |
httponly |
这个属性设置js对于当前cookie的读取权限,如果为true,则js无法读取修改当前cookie |
cookie使用的注意事项:
1.cookie的value内容中是无法使用特殊字符和中文的。不支持的特殊字符有空格,方括号,圆括号,等于号(=),逗号,双引号,斜杠,问号,@符号,冒号,分号等(以上符号是cookie的
version 0 版本的情况,不同服务器支持的情况不同,有些特殊符号在支持version
1版本的服务器上是支持的),如果使用这些符号,cookie内容就会被截断,服务器会丢弃特殊符号和特殊符号之后的内容。所以在使用的时候要对其进行转义,js中可以使用escape和unescape;jsp中可以使用URLEncode和URLDecode(这两个函数可以自行设置编码);php中使用urlencode和urldecode(这两个函数内部使用gb2312进行中文转化)。如果遇到用js设置cookie,在后台读取的情况,js端可以用encodeURIComponent进行转码(这个函数使用utf-8进行中文转化)。
2.在服务器端的对网页A设置了cookie,如果使用浏览器回退功能,回退到的页面B上,是读取不到刚才设置的cookie的,这种情况下必须手动刷新浏览器才能得到A页面设置的cookie。在某些服务器上即使使用js跳转到B页面也读取不到cookie,而且这种情况在php的服务器上出现,所以对于设置cookie后的操作最好采用服务器端语言进行浏览器跳转,比如php中的header函数。
下面有图有真相
1)来自firebug中的cookies
2) 来自google浏览器的cookies ,和firefox大同小异了
说明: 服务器端 session存在在 /tmp/ 中,其 存储值是经过序列化的,如下:
[root@elastix82 tmp]# ls sess_*
sess_555 sess_bhgup7d2lepdmh599klide9ul5 sess_hcqsd43ar55q8em2mmae513vv4
[root@elastix82 tmp]#
[root@elastix82 tmp]# cat sess_hcqsd43ar55q8em2mmae513vv4
elastix_user|s:5:"admin";elastix_pass|s:32:"21232f297a57a5a743894a0e4a801fc3";menu|s:8:"calendar";dashboard|a:5:{s:22:"Applet_SystemResources";b:1;s:22:"Applet_ProcessesStatus";b:1;s:17:"Applet_HardDrives";b:1;s:25:"Applet_PerformanceGraphic";b:1;s:11:"Applet_News";b:1;}[root@elastix82 tmp]#
[root@elastix82 tmp]#
关于cookie的一些事的更多相关文章
- 用户登录之cookie信息安全一二事
大家都知道用户登陆后,用户信息一般会选择保存在cookie里面,因为cookie是保存客户端, 并且cookie可以在客户端用浏览器自由更改,这样将会造成用户cookie存在伪造的危险,从而可能使伪造 ...
- Javascript中关于cookie的那些事儿
Javascript-cookie 什么是cookie? 指某些网站为了辨别用户身份.进行session跟踪而储存在用户本地终端上的数据(通常经过加密).简单点来说就是:浏览器缓存. cookie由什 ...
- Cookie写不进去问题深入调查 https Secure Cookie
Cookie写不进去问题深入调查 https Secure Cookie 什么情形下,Cookie 会写不进去?https Secure Cookie像是语法错误那种显而易见的就不用说了,除此之外你可 ...
- session的安全性
提到session,大家肯定会联想到登录,登录成功后记录登录状态,同时标记当前登录用户是谁.功能大体上就是这个样子,但是今天要讲的不是功能,而是实现.通过探讨session的实现方式来发掘一些可能你之 ...
- session的基本原理及安全性
1.session原理 提到session,大家肯定会联想到登录,登录成功后记录登录状态,同时标记当前登录用户是谁.功能大体上就是这个样子,但是今天要讲的不是功能,而是实现.通过探讨session的实 ...
- 《selenium2 python 自动化测试实战》(14)——下载文件
说下载文件之前,我再和大家说一下用cookie登录的事,既然我们用cookie登录,那么传过去的cookie肯定是要和对应的网站完全一致的,注意,是包括大小写哦,本来我也是不知道,我用这个方法登录自己 ...
- Spring cloud微服务安全实战-3-11API安全机制之登录
流控.认证.审计.授权以上都做了初步的简单的实现. 之前写的代码,base64加密了用户名和密码. 缺点1:每次请求都要带用户名密码 增加了泄露的风险. 每次传上来用户名和密码都要check验证.ch ...
- 关于Cookie安全性设置的那些事
一.标题:关于Cookie安全性设置的那些事 副标:httponly属性和secure属性解析 二.引言 经常有看到XSS跨站脚本攻击窃取cookie案例,修复方案是有httponly.今天写出来倒腾 ...
- cookie、session和token那些事
cookie 和 session 众所周知,HTTP 是一个无状态协议,所以客户端每次发出请求时,下一次请求无法得知上一次请求所包含的状态数据,如何能把一个用户的状态数据关联起来呢? 比如在淘宝的某个 ...
随机推荐
- beta阶段贡献分配实施
作业要求[https://edu.cnblogs.com/campus/nenu/2018fall/homework/2281] 要求1 每位组员的贡献分值 刘莹莹 王玉潘 潘世维 周昊 赵美增 ...
- linux C 内存分配(~道的光芒四射~)
总结一下C语言中基本的内存分配,加深对内存管理的印象,一步一步走山路~~~~~~~~ 1. 程序和进程 问题:程序和进程各是什么? 程序 只是一段可以执行的代码文件,通俗讲在 linux 上就是一个 ...
- pip删除依赖、配置虚拟环境
问题:跑openpose代码的时候,出现问题 tensorpack 0.8.6 requires tqdm>4.11.1, which is not installed.tf-pose 0.1. ...
- Kotlin Reference (十二) Extensions
most from reference Kotlin与C#和Gosu类似,提供了扩展一个新功能的类,而不必继承类或使用任何类型的设计模式,如Decorator(装饰者模式).这是通过称为扩展的特殊声明 ...
- WEB接口测试之Jmeter接口测试自动化 (三)
接口测试与数据驱动 1简介 数据驱动测试,即是分离测试逻辑与测试数据,通过如excel表格的形式来保存测试数据,用测试脚本读取并执行测试的过程. 2 数据驱动与jmeter接口测试 我们已经简单介绍了 ...
- pandas 操作 excel
1. 多重 sheet Using Pandas to pd.read_excel() for multiple worksheets of the same workbook pd.read_exc ...
- [LeetCode&Python] Problem 669. Trim a Binary Search Tree
Given a binary search tree and the lowest and highest boundaries as L and R, trim the tree so that a ...
- 原生JS 的cookie和jq的cookie,
COOKIE基础及应用:1.什么是COOKIE==>页面用来保存信息,比如:自动登录,记住用户名2.COOKIE的特性: --同一个网站中,所有的页面共享同一套cookie --数量,大小有 ...
- HPU 1471:又是斐波那契数列??(大数取模)
1471: 又是斐波那契数列?? 时间限制: 1 Sec 内存限制: 128 MB 提交: 278 解决: 27 统计 题目描述 大家都知道斐波那契数列吧?斐波那契数列的定义是这样的: f0 = 0; ...
- WIFI学习笔记
1.关掉网卡:sudo ifconfig eth0 down $ ifconfig -a显示出所有的网卡,down的也可以显示出来,而$ ifconfig只能显示up状态的网卡,最好先停掉网络服务再开 ...