PHP设置Cookie的HTTPONLY属性方法,PHP怎么样读取由

作者: 韦德国际1946手机版  发布:2019-07-09

httponly是微软对cookie做的恢弘,那一个首倘诺缓和用户的cookie大概被盗用的难题。

1、设置Cookie 

在Servlet 3.0中加进对Cookie(请稳重,这里所说的Cookie,仅指和Session互动的Cookie,即大家常说的会话Cookie)较为周全的操作API。最为非凡特色:协理直接改变Session ID的名称(默以为“JSESSIONID”),协理对cookie设置HttpOnly属性以增加安全,制止一定水准的跨站攻击。制止脚本攻击,禁止了通过脚本获取cookie新闻,浏览器不会将其发送给任何第三方

cookie在支付中采纳的不行多,但一旦是行使JavaScript设置cookie然后利用PHP读抽取来什么落到实处啊?即PHP与JavaScript下Cookie的并行使用是不是可可以吗?

PHP设置Cookie的HTTPONLY属性方法,PHP怎么样读取由JavaScript设置的Cookie。世家都晓得,当大家去邮箱也许论坛登入后,服务器会写一些cookie到大家的浏览器,当下一次再拜望别的页面时,由于浏览器回机关传送cookie,那样就落到实处了贰遍登入就能够观察全数供给登入后才干来看的内容。也正是说,实质上,全部的登录状态那几个都以起家在cookie上的!假如大家登入后的cookie被人获得,那就能够有曝光个人新闻的危殆!当然,想想,其余人怎么能够获得客户的cookie?那一定是有不怀好意的人的程序在浏览器里运维!假使是以往满天飞的流氓软件,那尚未办法,httponly也不是用来化解这种情景的,它是用来缓慢解决浏览器里javascript访谈cookie的难点。试想,七个flash程序在你的浏览器里运维,就足以拿走你的cookie的!

PHP用SetCookie函数来安装Cookie。必须小心的某个是:Cookie是HTTP协议头的一有的,用于浏览器和服务器之间传递音讯,所以必须在任何属于HTML文件自个儿的开始和结果输出以前调用Cookie函数。 
Set库克ie函数定义了一个Cookie,何况把它附加在HTTP头的末尾,SetCookie函数的原型如下: 
int SetCookie(string name, string value, int expire, string path, string domain, int secure); 
除此而外name之外全数的参数都以可选的。value,path,domain四个参数能够用空字符串代换,表示一贯不安装;expire 和 secure多个参数是数值型的,能够用0表示。expire参数是贰个正式的Unix时间标识,能够用time()或mktime()函数获得,以秒为单位。secure参数表示那一个Cookie是不是经过加密的HTTPS协议在网络上传输。 
当下安装的库克ie不是即时生效的,而是要等到下一个页面时技术看到.那是由于在安装的那些页面里库克ie由服务器传递给客户浏览器,在下二个页面浏览器技艺把Cookie从客户的机械里收取传回服务器的缘由。 
在同叁个页面设置Cookie,实际是从后往前,所以只要要在插入三个新的Cookie以前删掉四个,你必须先写插入的言语,再写删除的言辞,不然只怕会现出不希望的结果。 
来看多少个例证: 
简单的: 
SetCookie("MyCookie", "Value of MyCookie"); 
带失效时间的: 
SetCookie("WithExpire", "Expire in 1 hour", time() 3600);//3600秒=1小时 
如何都有个别: 
SetCookie("FullCookie", "Full cookie value", time() 3600, "/forum", ".php教程user.com", 1); 

选用拦截器实现,判别每趟乞求的响应是或不是带有SET-总高管KIE底部,重写会话Cookie,增加须求的本性。虽较为刚烈,但灵活性强。
新的职业API
新的正儿八经增加SessionCookieConfig接口,用于操作会话Cookie,须求驾驭以下重视方法:

<?php
// 读取JavaScript设置的cookie
header("Content-type: text/html; charset=utf-8");
if(isset($_COOKIE["param"])){
 echo $_COOKIE["param"];
}
?>
<script type="text/javascript"> 
function $_cookie(name,value){
 var date = new Date(); 
 $livetime = 5*24*3600*1000;// cookie生命周期
 date.setTime(date.getTime() $livetime); 
 document.cookie = name "=" value ";expires=" date.toGMTString();
}
// 设置cookie
$_cookie("param","javascript设置cookie");
</script>

IE6的SP1里就带了对httponly的支撑,所以相对还说照旧些安全性。

此处还应该有有个别要表明的,比方您的站点有多少个差异的目录,那么一旦只用不带路线的Cookie的话,在三个索引下的页面里设的Cookie在另贰个目录的页面里是看不到的,也正是说,Cookie是面向路线的。实际上,即便未有一点点名路线,WEB服务器会活动传送当前的路线给浏览器的,钦赐路线会强克服务器使用安装的门径。消除这一个主题素材的措施是在调用SetCookie时抬高路线和域名,域名的格式能够是“www.phpuser.com”,也可是 “.phpuser.com”。 
Set库克ie函数里表示value的片段,在传递时会自动被encode,也正是说,若是value的值是“test value”在传递时就改成了“test value”,跟U大切诺基L的措施一致。当然,对于程序来讲那是晶莹的,因为在PHP接收Cookie的值时会自动将其decode。 
假如要安装同名的多个Cookie,要用数组,方法是: 
SetCookie("CookieArray[]", "Value 1"); 
SetCookie("CookieArray[]", "Value 2"); 
或 
SetCookie("CookieArray[0]", "Value 1"); 
SetCookie("CookieArray[1]", "Value 2"); 

setName(String name)
修改Session ID的名称,默认为"JSESSIONID"
setDomain(String domain)
设置当前Cookie所处于的域
setPath(String path)
设置当前Cookie所处于的相对路径
setHttpOnly(boolean httpOnly)
设置是否支持HttpOnly属性
setSecure(boolean secure)
若使用HTTPS安全连接,则需要设置其属性为true
setMaxAge(int maxAge)
设置存活时间,单位为秒

如上代码通过测量试验通过。当然,只是最简便的兑现,更完美的功用请咱们依据本身的要求活动修改了。

PHP中的设置

2、接收和管理Cookie 

怎样采用呢,很便利,在ServletContextListener监听器开头化方法中实行设定就能够;上面实例演示怎么样修改"JSESSIONID",以及丰裕扶助HttpOnly支持:

内需专注几点:

本文由韦德国际1946发布于韦德国际1946手机版,转载请注明出处:PHP设置Cookie的HTTPONLY属性方法,PHP怎么样读取由

关键词: 程序员 Java学习笔记 JavaWeb 技术干货 Java 杂