cho*_*wwy 14 cookies xss codeigniter codeigniter-2
我想知道如何在Codeigniter中将cookie设置为HTTPOnly.我查看了文档,但没有看到如何设置此标志.
我还想设置cookie的安全标志,并在config.php文件中找到它:
$config['cookie_secure'] = TRUE;
Run Code Online (Sandbox Code Playgroud)
但是config.php中没有HTTPOnly选项.
如何将所有cookie设置为HTTPOnly?如果它是在框架中完成的,那么知道该代码在我自己的学习中的位置(以及默认值是什么)会很有帮助.
sik*_*der 29
幸运的是,您可以在GitHub上查看Session.php的源代码
在功能中_set_cookie你会看到:
// Set the cookie
setcookie(
$this->sess_cookie_name,
$cookie_data,
$expire,
$this->cookie_path,
$this->cookie_domain,
$this->cookie_secure,
$this->cookie_httponly
);
Run Code Online (Sandbox Code Playgroud)
$this->cookie_httponly已分配值,__construct默认值为FALSE,但您可以通过config.php以下方式将其设置为TRUE :
$config['cookie_httponly'] = TRUE;
Run Code Online (Sandbox Code Playgroud)
这将使您的框架内的cookie成为HTTPOnly.
小智 10
我发现他们是一个drwaback会话mgmt的codeigniter因为
-
2.1.3版本他们没有cookie_httponly标志.
解决方案:
步骤1:您需要在库中创建自己的My_session.php并扩展系统会话文件或修改Session.php(在system-> library-> Session.php文件中)
第2步:find _set_cookie($ cookie_data = NULL)函数,转到setcookie()并修改为
setcookie(
$this->sess_cookie_name,
$cookie_data,
$expire,
$this->cookie_path,
$this->cookie_domain,
$this->cookie_secure,
TRUE
); // add True flag.
即使你正在添加"TRUE"并且使用OWASP ZAP工具进行测试,
有时它会给你CSRF问题,
即:HTTPONLY不成立,
安全标志不启用.
原因:因为在sess_destroy时,他们将HTTPONLY和Secure标志设置为none.
解决方案:将Session.php中的sess_destroy函数更新为
// Kill the cookie
`setcookie(
$this->sess_cookie_name,
addslashes(serialize(array())),
($this->now - 31500000),
$this->cookie_path,
$this->cookie_domain,
TRUE,
TRUE
);`
Run Code Online (Sandbox Code Playgroud)由于这些问题给了我不眠之夜,所以我希望这对你也有帮助.:)