关于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 是一个无状态协议,所以客户端每次发出请求时,下一次请求无法得知上一次请求所包含的状态数据,如何能把一个用户的状态数据关联起来呢? 比如在淘宝的某个 ...
随机推荐
- Mathematica 迭代函数
学习Mathematica迭代函数的几个画图例子: 1.三角形沿着某一点旋转 verticse = {{0, 0}, {1, 0}, {1/2, Sqrt[3]/2}}; tri = Line[ver ...
- 使用adb命令对手机进行截屏保存到电脑,SDCard
adb shell /system/bin/screencap -p /sdcard/screenshot.png(保存到SDCard) adb pull /sdcard/screenshot.png ...
- vue 设置代理后 后端获取不到登录的session处理方法
代理设置的 名称 必须是 远程后端的 项目名称 session才生效.
- tensorflow中屏蔽输出的log信息方法
tensorflow中可以通过配置环境变量 'TF_CPP_MIN_LOG_LEVEL' 的值,控制tensorflow是否屏蔽通知信息.警告.报错等输出信息. 使用方法: import os imp ...
- CentOS7安装OpenStack(Rocky版)-08.启动一个虚拟机实例
安装完openstack的必要组件keystone,nova,glance,neutron以后就可以使用openstack命令创建一台云虚拟机了 ------------------- 完美的分割线 ...
- jquery deferred promise
<script type="text/javascript">/* Deferredstate (then,done, fail, always,pipe, progr ...
- exit和return
函数名: exit() 所在头文件:stdlib.h(如果是”VC6.0“的话头文件为:windows.h) 功 能: 关闭所有文件,终止正在执行的进程. exit(1)表示异常退出.这个1是返回给操 ...
- TF-IDF算法(1)—算法概述
假设现在有一篇很长的文章,要从中提取出它的关键字,完全不人工干预,那么怎么做到呢?又有如如何判断两篇文章的相似性的这类问题,这是在数据挖掘,信息检索中经常遇到的问题,然而TF-IDF算法就可以解决.这 ...
- Ubuntu 18.10安装Firefox 和 Google Chrome
================================ 工作环境迁移到Linux上,操作系统使用Linux Mint19.1(基于Ubuntu的), 自带的浏览器器是低版本的英文版,现在使用 ...
- nexage video asset tag
video ad can't show InLine must match the example ,and xml content is Case Sensitive https:/ ...