cookie缺少secure属性解决方案,读写Cookie效率分析

作者: 计算机网络  发布:2019-09-26

目录

0x01 cookie 安全

根据安全的虚拟,要求给cookie加上Secure和HttpOnly属性,HttpOnly相比好精晓,设置HttpOnly=true的cookie不能被js获取到,无法用document.cookie打出cookie的内容。

Secure属性是说就算四个cookie被装置了Secure=true,那么那些cookie只好用https公约发送给服务器,用http公约是不发送的。换句话说,cookie是在https的气象下创办的,并且他的Secure=true,那么现在你间接用https访谈其他的页面(举个例子登陆之后点击任何子页面),cookie会被发送到服务器,你无需重新登入就足以跳转到别的页面。然则倘若那是您把url改成http左券访问其他页面,你就要求重新登入了,因为这几个cookie不可能在http左券中发送。

一,什么是PEAR与Benchmark类
二,为啥要深入分析PHP读写Cookie情形
三,品质测验代码
四,品质测量试验结果
五,质量测验总括
六,setcookie函数表明
七,附质量测量检验源代码下载
参照他事他说加以考察资料

0x02 怎么做?

先掌握下setcookie函数

setcookie

(PHP 4, PHP 5, PHP 7)
setcookie — 发送 Cookie

说明

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

setcookie() 定义了 库克ie,会和多余的 HTTP 头一同发送给顾客端。 和其余 HTTP 头同样,必需在本子产生任性输出之前出殡 Cookie(由于协商的界定)。 请在产生其余输出以前(满含 <html><head> 或许空格)调用本函数。

假定设置 Cookie 后,下一次开采页面时方可采取 $_COOKIE 读取。 Cookie 值同样也设有于 $_REQUEST。

参数

» RFC 6265 提供了 setcookie() 种种参数的参照规范。

name Cookie 名称。

value Cookie 值。 这一个值积存于客户的微管理器里,请勿积累敏感音信。 譬如 name'cookiename', 可通过 $_COOKIE['cookiename'] 获取它的值。

expire Cookie 的过期时间。 那是个 Unix 时间戳,即 Unix 纪元以来(Green威治时间 一九六八 年 1 月 1 日 00:00:00)的秒数。 也正是说,基本能够用 time() 函数的结果加上希望过期的秒数。 或然也得以用 mktime()。time()+60602430* 便是设置 Cookie 30 天后过期。 如若设置成零,恐怕忽视参数, Cookie 会在对话甘休时过期(也便是关闭浏览器时)。

path Cookie 有效的服务器路线。 设置成 '/' 时,Cookie 对整个域名 domain 有效。 借使设置成 '/foo/', Cookie 仅仅对 domain/foo/ 目录及其子目录有效(比如 /foo/bar/)。 暗许值是设置 库克ie 时的当前目录。

domain Cookie 的有效域名/子域名。 设置成子域名(举例 'www.example.com'),会使 Cookie 对那个子域名和它的三级域名有效(比方 w2.www.example.com)。 要让 Cookie 对整个域名有效(蕴涵它的全套子域名),只要设置成域名就能够了(那一个例子里是 'example.com')。

旧版浏览器依然在行使扬弃的 » RFC 2109, 必要四个放置的点 . 来合作全体子域名。

secure 设置这几个 Cookie 是还是不是唯有经过平安的 HTTPS 连接传给顾客端。 设置成 TRUE 时,独有安全连接存在时才会安装 Cookie。 若是是在劳动器端管理那几个需要,工程师供给独自在平安连接上发送此类 Cookie (通过 $_SERVER["HTTPS"]判断)。

httponly 设置成 TRUE,Cookie 仅可经过 HTTP 协议访问。 那意味正是 Cookie 不能够通过类似 JavaScript 那样的脚本语言访谈。 要实用收缩 XSS 攻击时的地位窃取行为,可建议用此设置(尽管不是装有浏览器都帮忙),可是那一个说法平常有顶牛。 PHP 5.2.0 中加多。 TRUEFALSE

返回值

设若在调用本函数从前就发生了出口,setcookie() 会调用失利并赶回 FALSE。 如果 setcookie() 成功运营,再次回到 TRUE。当然,它的意思并不是客商是不是已接受 Cookie。

一,什么是PEAR与Benchmark类

1. 设置secure

能够看来,只要在setcookie第五个参数设置为true,就可以了

请参见PHP品质优化连串
第二期 PHP质量优化工具篇Benchmark类调节和测验推行时间
率初期 PHP质量优化计划篇图解PEA奥迪Q5安装

2. 设置httponly

在5.1和事先的版本在header设置

<?php
header("Set-Cookie: hidden=value; httpOnly");

在5.2和越来越高的版本
Cookie 参数能够在 php.ini文件中定义
一经急需设置有多少个挑选
1. 改换php全局配置

#1) 直接修改php.ini文件
session.cookie_httponly=true

#2) 此配置可以在php代码中使用`ini_set`函数设置
ini_set("session.cookie_httponly", 1);

#3),在调用 session_start()之前调用 session_set_cookie_params()函数设置
<?php
private function startSession($time = 3600, $ses = 'MYSES') {
    session_set_cookie_params($time);
    session_name($ses);
    session_start();
    if (isset($_COOKIE[$ses]))
      #第五个参数 设置为true
      setcookie($ses, $_COOKIE[$ses], time() + $time, "/", true);
}
?>

session_set_cookie_params()函数session_start() 函数
2. 在装置cookie时向来钦命httponly
前方介绍在setcookie函数第7个参数httponly设置为true即可.

二,为何要剖析PHP读写Cookie情况

0x03注意事项

setcookie的httponly参数 在5.2.0版本开始才有

1,什么是Cookie?
Cookie,指某个网址为了鉴定分别客户地方、进行session追踪而储存在顾客本地终端上的数量。

2,PHP与Cookie
PHP通过嵌入函数setcookie()写cookie,通过$_首席推行官KIE全局变量读cookie,在实质上开垦中,读写Cookie是与客商交互最主要的法子之一,并且接纳也非常频仍,因些需求领会PHP在读写操作Cookie的习性与频率难题。

三,质量测量检验代码

编纂多少个函数,分别为写cookie、读cookie和读写cookie,代码如下:

 代码如下

<?php
require_once "Benchmark/Iterate.php";
$bench = new Benchmark_Iterate;
function set(){
    setcookie("TestCookie", time(), time()+3600, "/", "", 1);
}
function get(){
    return isset($_COOKIE['TestCookie']) ? $_COOKIE['TestCookie'] : '';
}
function cookie(){
    get();
    set();
}
$bench->run(50,"set");
//$bench->run(50,"get");
//$bench->run(50,"cookie");
$result = $bench->get();
?>

使用Benchmark_Iterate类工具分别调用各样函数50回拿走PHP读写Cookie的平分施行时间并生成图表。

四,质量测量试验结果

1,PHP写Cookie的试行时间

图片 1
图解:使用PHP内置函数setcookie()向顾客端发送贰个 HTTP cookie,写Cookie的执行时间 0.00072s左右 注s表示秒

2,PHP读Cookie的执行时间
图片 2

图解:使用全局变量$_主任KIE获取客商端cookie值,读Cookie的试行时间 0.00051s左右

3,PHP读写库克ie的推行时间
图片 3
先读取cookie值,然后再向客商端发送二个 HTTP cookie,读写Cookie的实践时间 0.00088s左右

五,品质测量试验计算

由此折线图能够精通见到,setcookie() 函数向客户端发送二个 HTTP cookie要求的施行时间大倘诺0.00072s左右,也便是0.7阿秒,PHP读取Cookie的施行时间为0.00051s左右,也正是0.5微秒,就算还要读写操作Cookie须要的执行时间为0.00088s,相当于0.8微秒左右,那一个操作在秒的有的时候基本上实行的小时相当短,但请不要小看这些值,不荒谬的PHP内置函数实践的时刻大要在0.3皮秒左右,相对来讲读写Cookie的进行时间是相比耗费时间的,由此,在实际支出中要尽量少用如此的函数,丰盛考虑读写Cookie的情事,非常是写cookie的情事!

皮秒世界还在三番五次,请关怀上一期PHP质量优化种类。

六,setcookie函数表达

setcookie() 函数向客商端发送多少个 HTTP cookie。

 代码如下

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

1,cookie 是由服务器发送到浏览器的变量。
2,cookie 日常是服务器嵌入到客商计算机中的小文本文件。每当计算机通过浏览器哀告三个页面,就能发送那些cookie。
3,cookie 的称号钦定为同样名称的变量。比如,假诺被发送的 cookie 名称叫"name",会自行创立名称叫 $user 的变量,包涵 cookie 的值。
4,必需在其余其余输出发送前对 cookie 实行赋值。
5,借使成功,则该函数再次来到 true,不然再次回到 false。

本文由金沙澳门官网送注册58发布于计算机网络,转载请注明出处:cookie缺少secure属性解决方案,读写Cookie效率分析

关键词: