PHP中如何为cookie设置HttpOnly?

今天我在用户登陆功能这里,调试代码的时候,发现这里有一个“HttpOnly:false”,如下图:

HttpOnly:false

 

一、什么是HttpOnly?

httponly是微软对cookie做的扩展,这个主要是解决用户的cookie可能被盗用以及XSS的问题。

Session数据保存在服务器端,但是每一个客户端都需要保存一个SessionID,SessionID保存在Cookies中, 关闭浏览器时过期。在向服务器发送的HTTP请求中会包含SessionID,服务器端根据SessionID获取获取此用户的Session信息。

 

二、为什么cookie中要设置HttpOnly参数?

 

1、什么是XSS攻击?

XSS攻击(Cross Site Scripting)中文名为跨站脚本攻击,XSS攻击时web中一种常见的漏洞。通过XSS漏洞可以伪造目标用户登录,从而获取登录后的账号操作。

 

2、网站账号登录过程中的简单步骤

web网页中在用户登录的时候,通过表单把用户输入的账号密码进行后台数据库的验证,验证通过后利用session会话进行用户登录后的判别是否登录,在session的这个过程中服务器会在服务器中写入一个文件并记录sessionid,然后也会在浏览器中设置cookie,保存sessionid,服务器和客户端之间利用这个sessionid进行通信识别。如果客户端发送sessionid给服务器服务器没有找到,则说明服务器中的这个文件已经过期删除了。那用户这边就需要重新登录了。

 

3、XSS攻击的流程

思路:通过获取目标用户登录后的sessionid,保存到自己的电脑,然后在自己的电脑上设置获取到的sessionid进行账号登录后的操作。通过sessionid伪造请求登录,直接跳过账号密码登录操作就能进去。

 

例如:

给目标用户发送一个有吸引力的邮件,邮箱中包含一个链接,当用户点击链接跳转到一个伪造的页面,这个伪造的页面中包含了获取目标用户浏览器中cookie的javascript代码,获取到cookie中的sessionid后再传送到攻击者的服务器中;或者在站点中的可插入数据的地方进行在html中写行内的javascript代码执行操作,如下:

< IMG SRC="jav ascript:alert('XSS');" >;

还可以当在一个公共wifi环境下,进行可账号登录操作,wifi路由器的管理员可以通过抓包工具抓包直接抓包查看到你的sessionid,所以不要在公共wifi下进行敏感操作,是很不安全的。

 

三、PHP中cookie设置HttpOnly三种方法

在PHP编程中,cookie设置HttpOnly其实是非常的简单的,具体操作如下:

 

第一种方法:在 php.ini 配置文件中进行cookie只读设置的开启

设置其值为1或者TRUE;

session.cookie_httponly = On 

以上意思是:将Cookie标记为只能通过HTTP协议访问。 这意味着无法通过脚本语言(例如JavaScript)访问cookie。 此设置可以有效地帮助通过XSS攻击减少身份盗用(尽管并非所有浏览器都支持此功能)。

具体可参考:

https://www.php.net/manual/zh/session.configuration.php#ini.session.cookie-httponly

 

第二种方法:在php代码顶部设置

ini_set("session.cookie_httponly", 1);
#(php5.1以前版本设置方法:header("Set-Cookie: hidden=value; httpOnly");)

 

第三种方法:在PHP代码中用setcookie或setrawcookie

Cookie操作函数setcookie函数和setrawcookie函数也专门添加了第7个参数来做为HttpOnly的选项,开启方法为:

setcookie("name", "fujieace", NULL, NULL, NULL, NULL, TRUE);
setrawcookie("name", "fujieace", NULL, NULL, NULL, NULL, TRUE);

 

总结:

我的建议是大家既要在php.ini配置文件里面设置 session.cookie_httponly=1或ture,还有就是大家在用setcookie或setrawcookie函数的时候,也要在第七个参数设置为ture,这样的话,你的cookie中无论是PHPSESSID还是你自己定义的httponly都会是true。

    A+
发布日期:2020年11月24日 19:56:59  所属分类:PHP
最后更新时间:2020-11-25 14:40:05
评分: (2 票;平均数3.00 ;最高评分 5 ;用户总数2;总得分 6;百分比60.00)
付杰
SEO顾问 单站最低999元 整站全方位优化
SEO顾问 单站最低999元 整站全方位优化
  • ¥ 999元
  • 市场价:4999元
免费SSL证书 HTTPS申请 安装 配置 支持通配符*
免费SSL证书 HTTPS申请 安装 配置 支持通配符*
  • ¥ 1999.9元
  • 市场价:20000元
wp dz 帝国 dede phpcms等快速建站服务
wp dz 帝国 dede phpcms等快速建站服务
  • ¥ 999元
  • 市场价:4999元
刷流量 刷人气 刷点击 刷收藏 刷APP关键词
刷流量 刷人气 刷点击 刷收藏 刷APP关键词
  • ¥ 1.0元
  • 市场价:9.9元

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: