关于安全性:如何在PHP中设置使用HttpOnly cookie

关于安全性:如何在PHP中设置使用HttpOnly cookie

How do you set up use HttpOnly cookies in PHP

如何将PHP apps中的cookie设置为HttpOnly cookies


对于Apache上PHP自己的会话cookie:
将此添加到您的Apache配置或.htaccess

1
2
3
<IfModule php5_module>
    php_flag session.cookie_httponly on
</IfModule>

只要在session_start()之前调用它,也可以在脚本中设置它。

1
ini_set( 'session.cookie_httponly', 1 );

  • 对于您的Cookie,请参见此答案。
  • 有关PHP自己的会话cookie(默认为PHPSESSID),请参见@richie的答案

在PHP 5.2.0的黑暗年代,setcookie()setrawcookie()函数引入了httponly参数,使此操作变得轻松愉快。根据语法,只需将第7个参数设置为true

简化功能语法

1
2
setcookie(    $name, $value, $expire, $path, $domain, $secure, $httponly )
setrawcookie( $name, $value, $expire, $path, $domain, $secure, $httponly )

输入NULL作为您希望保留为默认值的参数。
您可能还需要考虑是否应该设置secure参数。

也可以使用较低的较低级别的header()函数:

1
header("Set-Cookie: name=value; httpOnly" );


请注意,默认情况下,PHP会话cookie不使用httponly

要做到这一点:

1
2
3
4
$sess_name = session_name();
if (session_start()) {
    setcookie($sess_name, session_id(), null, '/', null, null, true);
}

这里有几个注意事项:

  • 您必须致电session_name()
    session_start()之前
  • 这也是
    将默认路径设置为" /",即
    对于Opera是必需的,但是哪个PHP
    会话Cookie默认情况下不执行
    要么。

请注意,HttpOnly不会停止跨站点脚本编写;相反,它抵消了一种可能的攻击,目前仅在IE上进行(FireFox在XmlHttpRequest中公开HttpOnly cookie,而Safari完全不支持)。一定要打开HttpOnly,但是在进行交易时,甚至不要花费一个小时的输出过滤和模糊测试。


1
2
3
4
5
6
7
8
<?php
//None HttpOnly cookie:
setcookie("abc","test", NULL, NULL, NULL, NULL, FALSE);

//HttpOnly cookie:
setcookie("abc","test", NULL, NULL, NULL, NULL, TRUE);

?>

资源


您可以在set cookie函数中指定它,请参见php手册

1
setcookie('Foo','Bar',0,'/', 'www.sample.com'  , FALSE, TRUE);


来自Ilia的解释...仅5.2

PHP 5.2中的httpOnly cookie标志支持

如该文章所述,您可以在以前的PHP版本中自行设置标头

1
header("Set-Cookie: hidden=value; httpOnly");

您可以在头文件中使用它。

1
2
3
// setup session enviroment
ini_set('session.cookie_httponly',1);
ini_set('session.use_only_cookies',1);

这样,以后所有的会话cookie都将使用httponly。

  • 更新。

php_flag命令的正确语法是

1
php_flag  session.cookie_httponly On

并且要注意,服务器的第一个答案就是设置cookie,然后在此处设置(例如,您可以看到" HttpOnly"指令。因此,为了进行测试,请在每次测试请求后从浏览器中删除cookie。


推荐阅读

    学习写字楼新选择6000元主流配置

    学习写字楼新选择6000元主流配置,,这种配置需要考虑双核心的办公和娱乐平台,充分考虑办公室的办公需求和娱乐需求,以约6000元的预算和cost-e

    酷睿I7 配置

    酷睿I7 配置,配置,玩家国度啦华硕 Rampage II Extreme(3800元)如果米不够,也可以把Extreme改为Gene,不过是小板内存推荐金士顿6G DDR3 2000骇

    提高3A四核羿龙II游戏配置的性能

    提高3A四核羿龙II游戏配置的性能,,以节能环保为主题的IT产业,目前3A低端平台处理器、主板芯片组、独立开发卡性能突出,特别是在与AMD的处理

    opporeno8参数配置及价格

    opporeno8参数配置及价格,面部,亿元,Oppo的荣誉2020年1月4日,接近屏幕关闭传感器是否支持双卡:支持oppor11splus什么时候上市的Oppo R11S P

    设置证书密码是什么|证书初始密码

    设置证书密码是什么|证书初始密码,,设置证书密码是什么证书密码是可以修改的,可以在企业网银上修改,也可以到银行网点修改。到网点修改要带

    设置里程碑|设置里程碑的方法有哪些

    设置里程碑|设置里程碑的方法有哪些,,1. 设置里程碑的方法有哪些1、通过挑战风险,突破认知,从而突破自我。只有在某些特殊的时刻,比如想法和

    计算机主板BIOS设置详细-BIOS知识

    计算机主板BIOS设置详细-BIOS知识,,什么是电脑BIOS,一般电脑主板已经设置完毕后,电脑就开始按del键进入BIOS。系统启动BIOS,即微机的基本输入