我已经建立了一个带登录系统的网站。在我准备好之后,我用Acunetix扫描了它,但是我得到了以下消息:
没有设置HttpOnly标志的会话Cookie 会话Cookie没有设置安全标志(我猜这只有我有SSL连接)
所以我的问题是,如何为我的所有Session数据设置HttpOnly标志?我只是在登录用户时使用会话。我给他们一个带有userID号的会话,而不是我使用那个userID获取数据。
有没有简单的方法可以设置所有会话HTTPOnly并保护它们,所以没有人可以触摸它们?
答案 0 :(得分:7)
您可以更改php.ini中的设置,也可以通过ini_set()
调用将session.cookie_secure
和session.cookie_httponly
值更改为true
。
或者,您可以在开始会话之前使用session_set_cookie_params()
来获得您正在寻找的效果。
http://us3.php.net/manual/en/function.session-set-cookie-params.php
答案 1 :(得分:1)
您应该查看this excellent site这个问题。它归结为在php.ini的sessions-section中设置它(或通过适当的运行时函数):
session.cookie_httponly = True
答案 2 :(得分:0)
当您使用PHP的setcookie
时,您也可以将httponly
标记设置为false
:
// params: name, value, expiration, path, domain, secure, http-only
setcookie('session-cookie-key', 'data', 0, '/', 'example.com', true, false);