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的主要内容,如果未能解决你的问题,请参考以下文章

markdown Zend框架3:会话

使用Zend_Session_Namespace创建会话和访问变量

Zend Framework 应用程序中的“会话已启动....”异常

Zend Framework 2 CSRF 验证

如何在Zend framework2中清除会话容器

如何在不安装 Zend 框架的情况下使用 Zend 库