Zend 框架、会话和 HttpOnly
Posted
技术标签:
【中文标题】Zend 框架、会话和 HttpOnly【英文标题】:Zend Framework, Sessions, and HttpOnly 【发布时间】:2011-05-26 14:39:46 【问题描述】:我想让我的会话 cookie HttpOnly
。基于this article,我将此添加到我的application.ini
:
resources.session.cookie_httponly = true
不幸的是,当我查看Firecookie 中的会话cookie 时,它没有 标记为HttpOnly
,正如我指定的那样。我错过了哪一步?
【问题讨论】:
"当我在 Firecookie 中查看会话 cookie 时,它没有标记为 HttpOnly" --- 应该如何标记 cookie?您希望在那里看到什么?HttpOnly
是防止 XSS 的步骤:codinghorror.com/blog/2008/08/…
@Sonny:这是防止 cookie 劫持的一步,而不是 xss。 XSS只是一种发送cookie的方式,HttpOnly
是不允许你从js读取cookie的选项。所以它保护cookie不被js读取。 XSS和HttpOnly
之间没有任何联系。
FTA:“HttpOnly cookie 是一个好主意,而且实施得当,使大量常见的 XSS 攻击更难实施。”
@Sonny: omg...HttpOnly
防止 cookie 被读取。如果没有此选项,您的网站不会更容易受到 XSS 攻击。
【参考方案1】:
尝试在引导程序中执行Zend_Session::setOptions(array('cookie_httponly' => true));
(在会话首次初始化之前的某处),它应该也可以与 app.ini 文件一起使用。
【讨论】:
这行得通。我希望我能弄清楚为什么它没有从application.ini
读取。
我会去看看,如果我发现了什么,会告诉你。
使用Zend_Session::setOptions(array('cookie_httponly' => true));
而不是Zend_Session::setOptions(array('cookie_httponly', true))
;【参考方案2】:
将此添加到您的 application.ini 文件中。
phpSettings.session.cookie_httponly = true
【讨论】:
【参考方案3】:为了保证 100% 安全。
服务器不应允许选项 http 跟踪。 http 选项跟踪报告会话 ID。 如果攻击者可以通过 ajax 注入 java applet、flash 或 javascript,那么即使设置了 httponly 标志,攻击者也可以窃取 cookie...
【讨论】:
以上是关于Zend 框架、会话和 HttpOnly的主要内容,如果未能解决你的问题,请参考以下文章
使用Zend_Session_Namespace创建会话和访问变量