如何将PHP应用程序
中的cookie设置为HttpOnly cookie
?
- For your cookies, see this answer.
- For PHP s own session cookie (
PHPSESSID
, by default), see @richie s answer
setcookie()
和setrawcookie()
函数,在PHP 5.2.0的黑暗时代引入了布尔值httponly
参数,使其变得简单明了。只需根据语法将第7个参数设置为true
为简洁起见,简化了函数语法
setcookie( $name, $value, $expire, $path, $domain, $secure, $httponly )
setrawcookie( $name, $value, $expire, $path, $domain, $secure, $httponly )
在PHP<;8,为要保留为默认值的参数指定NULL
。
在PHP中>;=8您可以从使用命名参数中获益。请参阅这个关于命名参数的问题。
setcookie( $name, $value, httponly:true )
也可以使用较旧的较低级别header()
函数:
header( "Set-Cookie: name=value; HttpOnly" );
您可能还需要考虑是否应该设置Secure
参数。
For PHP s own session cookies on Apache:
add this to your Apache configuration or .htaccess
<IfModule php5_module>
php_flag session.cookie_httponly on
</IfModule>
这也可以在脚本中设置,只要在session_start()
之前调用即可。
ini_set( session.cookie_httponly , 1 );
请注意,PHP会话cookie默认情况下不使用httponly
。
要做到这一点:
$sess_name = session_name();
if (session_start()) {
setcookie($sess_name, session_id(), null, / , null, null, true);
}
这里有几点需要注意:
- You have to call
session_name()
beforesession_start()
- This also sets the default path to / , which is necessary for Opera but which PHP session cookies don t do by default either.
请注意,HttpOnly不会停止跨站点脚本编写;相反,它中和了一种可能的攻击,目前只在IE上进行攻击(FireFox在XmlHttpRequest中公开HttpOnly cookie,Safari根本不尊重它)。无论如何,打开HttpOnly,但不要为了它而放弃一个小时的输出过滤和模糊测试。
<?php
//None HttpOnly cookie:
setcookie("abc", "test", NULL, NULL, NULL, NULL, FALSE);
//HttpOnly cookie:
setcookie("abc", "test", NULL, NULL, NULL, NULL, TRUE);
?>
您可以在设置cookie函数中指定它请参阅php手册
setcookie( Foo , Bar ,0, / , www.sample.com , FALSE, TRUE);
伊利亚在这里解释。。。5.2尽管如此
正如文章中所述,您可以在以前版本的PHP中自己设置头
header("Set-Cookie: hidden=value; httpOnly");
您可以在头文件中使用它。
// setup session enviroment
ini_set( session.cookie_httponly ,1);
ini_set( session.use_only_cookies ,1);
这样,未来所有会话cookie都将只使用http。
- Updated.
php_flag命令的正确语法是
php_flag session.cookie_httponly On
请注意,服务器的第一个答案就是设置cookie,然后在这里(例如,你可以看到“HttpOnly”指令。因此,为了测试,在每次测试请求后从浏览器中删除cookie。
Solução<code>session_start([cookie_lifetime=>;43200,cookie_secure=>;true,cookie_httponly=>!true])代码>
这是一种形式上的功能。
- winforms
- combobox
- fogbugz
- java
- date
- internationalization
- asp.net
- iis
- url-rewriting
- urlrewriter
- c#
- enums
- ocaml
- haxe
- algorithm
- string
- viewstate
- .net
- c++
- c
- symbol-table
- mysql
- database
- postgresql
- licensing
- migration
- vb.net
- vb6
- declaration
- vb6-migration
- python
- psycopg2
- backup
- vmware
- virtualization
- gnu-screen
- authentication
- desktop
- excel
- xll
- cultureinfo
- regioninfo
- oracle
- client
- session
- download
- html
- virtual
- constructor
- scenarios
- perl
- full-text-search
- javascript
- ajax
- testing
- oop
- inheritance
- vim
- encapsulation
- information-hiding