浅谈HTTP Cookie 的 Secure 和 HTTPONLY属性

  最近工作中遇到了关于cookie的secure及httponly属性的问题,所以关注并学习了一段时间,这里做一下简要记录。关于secure和httponly标志的用途可以参考wikipedia.

  起因:系统PHP升级(5.1.7->5.4.5)并要求在下个升级后更新/etc/php.ini下的两个变量,设定值为1.

  Session.cookie_secure=1

  Session.cookie_httponly=1

  由此引发了这次调查,调查的内容涉及到了php自身cookie函数、开源框架CodeIgniter、Javascript以及JQuery对这两个属性的支持情况。

  1、创建Cookie

  PHP:5.2之前只支持secure,5.2之后添加了对httponly的支持

bool setcookie ( string $name [, string $value [, int $expire = 0 [, string $path [, string $domain [, bool $secure = false [, bool $httponly = false ]]]]]] );

CodeIgniter:在当前最新的2.1.2中只添加了对secure的支持,可是在github的CI开源项目上我发现了在下一个版本里httponly将会被添加进去。

function set_cookie($name = ‘‘, $value = ‘‘,$expire = ‘‘, $domain = ‘‘, $path = ‘/‘, $prefix = ‘‘, $secure = FALSE)

Javascript: 从这两个属性的作用就可以推测出,js对secure的支持是没问题的,可是httponly本就是为限制js而产生的,当然httponly的cookie也不会被js创建

document.cookie = "username=" +escape("leon") + "; expires=15/02/2013 00:00:00; path=/;domain=www.example.com; secure";

Jquery: 作为js的框架,情况和js类似。

$.cookie(‘the_cookie‘, ‘the_value‘, { expires: 7,path: ‘/‘, domain: ‘x.com‘, secure: true });

综上可知,httponly参数只可以在服务器端设置,即通过PHP的setcookie()方法设置。所以如需添加这个属性,项目里所有对cookie的set操作都应拿到服务端进行。

  httponly参数是用来限制非HTTP协议程序接口对客户端COOKIE进行访问的,所以客户端脚本,如JS是无法取得这种COOKIE的,同时,JQuery中的“$.cookie(‘xxx‘)”方法也无法正常工作,所以想要在客户端取到httponly的COOKIE的唯一方法就是使用AJAX,将取COOKIE的操作放到服务端,接收客户端发送的ajax请求后将取值结果通过HTTP返回客户端。

原文地址:https://www.cnblogs.com/ouruola863/p/10000317.html

时间: 2024-11-10 08:00:40

浅谈HTTP Cookie 的 Secure 和 HTTPONLY属性的相关文章

cookie的secure、httponly属性设置

cookie的secure.httponly属性设置 转载自:http://www.cnblogs.com/alanzyy/archive/2011/10/14/2212484.html 一.属性说明: 1 secure属性 当设置为true时,表示创建的 Cookie 会被以安全的形式向服务器传输,也就是只能在 HTTPS 连接中被浏览器传递到服务器端进行会话验证,如果是 HTTP 连接则不会传递该信息,所以不会被窃取到Cookie 的具体内容. 2 HttpOnly属性 如果在Cookie中

Cookie中设置了"HttpOnly"属性,有效的防止XSS攻击

1.什么是HttpOnly? 如果cookie中设置了HttpOnly属性,那么通过js脚本将无法读取到cookie信息,这样能有效的防止XSS攻击,窃取cookie内容,这样就增加了cookie的安全性,即便是这样,也不要将重要信息存入cookie. XSS全称Cross SiteScript,跨站脚本攻击,是Web程序中常见的漏洞,XSS属于被动式且用于客户端的攻击方式,所以容易被忽略其危害性.其原理是攻击者向有XSS漏洞的网站中输入(传入)恶意的HTML代码,当其它用户浏览该网站时,这段H

浅谈session/cookie

Session 和Cookie是常用的Web跟踪技术.Cookie保存在客户端,而Session则保存在服务器端,二者结合使用来跟踪用户的会话状态,是http协议的一种扩展技术.之所以说是一种扩展技术,是由于Session和cookie是作为http协议的一种补充,用于弥补http协议的无状态特性而引入的,从而保持用户与服务器之间的状态信息. 1. Cookie机制 1.1 Cookie的功能 在Web程序中,保持会话的状态是很重要的一件事.理论上,应该为每个用户保持一个会话,同一个用户的所有请

浅谈session,cookie,sessionStorage,localStorage的区别及应用场景

浏览器的缓存机制提供了可以将用户数据存储在客户端上的方式,可以利用cookie,session等跟服务端进行数据交互. 一.cookie和session cookie和session都是用来跟踪浏览器用户身份的会话方式. 区别: 1.保持状态:cookie保存在浏览器端,session保存在服务器端 2.使用方式: (1)cookie机制:如果不在浏览器中设置过期时间,cookie被保存在内存中,生命周期随浏览器的关闭而结束,这种cookie简称会话cookie.如果在浏览器中设置了cookie

[转] 浅谈session,cookie,sessionStorage,localStorage的区别及应用场景

浏览器的缓存机制提供了可以将用户数据存储在客户端上的方式,可以利用cookie,session等跟服务端进行数据交互. 一.cookie和session cookie和session都是用来跟踪浏览器用户身份的会话方式. 区别: 1.保持状态:cookie保存在浏览器端,session保存在服务器端 2.使用方式: (1)cookie机制:如果不在浏览器中设置过期时间,cookie被保存在内存中,生命周期随浏览器的关闭而结束,这种cookie简称会话cookie.如果在浏览器中设置了cookie

浅谈 easyui tabs 的href和content属性

众所周知,jQuery Easyui 的tabs插件有两种方式加载某个tab(标签页)上的内容:“href远程请求”和“content本地内容”,本文就两种方式的优缺点进行简单分析和思考. 两者特点: href方式加载数据的特点: 被加载的页面只有body元素内部的内容才会被加载,也就是jQuery的ajax请求的只是html片段. 加载远程url时有遮罩效果,也就是“等待中……”效果,用户体验较好. 当加载的页面布局较为复杂,或者有较多的js脚本需要运行的时候,编码往往就需要谨慎了,容易出问题

浅谈HTML5中meta里面的viewport属性

<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" /> 1.width : 控制viewport的大小,可以指定一个值,如600, 或者特殊的值,如device-width为设备的宽度(单位为缩放为100%的CSS的像素) 2.height : 和width相对应,指定高度

浅谈asp.net通过本机cookie仿百度(google)实现搜索input框自动弹出搜索提示

对于通过用户输入关键词实现自动弹出相关搜索结果,这里本人给两种解决方案,用于两种不同的情形. 常见方法是在数据库里建一个用户搜索关系表,然后通过用户搜索框输入的关键字异步调用数据表中的相关数据,显示在一个隐藏div中. 第二种方式也就是我现在着重讨论的方式,适用于单个用户,基于此用户以往的搜索数据来实现搜索提示功能.技术关键是记录下用户的以往搜索数据,写入cookie,然后页面从用户本机cookie调用数据. ok,下面进入正题.本文主要讲实现步骤,代码可根据自己实际需要更改. 一,如何写入co

浅谈 Cookie 与 Session 的区别

1.cookie机制 Cookies是服务器在本地机器上存储的小段文本并随每一个请求发送至同一个服务器.IETF RFC 2965 HTTP State Management Mechanism 是通用cookie规范.网络服务器用HTTP头向客户端发送cookies,在客户终端,浏览器解析这些cookies并将它们保存为一个本地文件,它会自动将同一服务器的任何请求附上这些cookies . 具体来说cookie机制采用的是在客户端保持会话状态的方案.它是在用户端的会话状态的存贮机制,他需要用户