【发布时间】:2010-11-06 02:43:51
【问题描述】:
我们需要确保 CF7 网站上的所有 cookie 都设置为 HttpOnly。
我们使用 jsessionid 来控制我们的会话,而 JRun 不会将其创建为 HttpOnly。
虽然可以修改现有 cookie 以添加此设置,但我们需要从一开始就将其设置为 HttpOnly。
有什么建议吗?
【问题讨论】:
标签: cookies coldfusion jrun httponly jsessionid
我们需要确保 CF7 网站上的所有 cookie 都设置为 HttpOnly。
我们使用 jsessionid 来控制我们的会话,而 JRun 不会将其创建为 HttpOnly。
虽然可以修改现有 cookie 以添加此设置,但我们需要从一开始就将其设置为 HttpOnly。
有什么建议吗?
【问题讨论】:
标签: cookies coldfusion jrun httponly jsessionid
发件人:http://www.petefreitag.com/item/764.cfm
运行 CF 8 或更低版本并使用 Application.cfc
<cfcomponent>
<cfset this.sessionmanagement = true>
<cfset this.setclientcookies = false>
<cffunction name="onSessionStart">
<cfheader name="Set-Cookie" value="CFID=#session.CFID#;path=/;HTTPOnly">
<cfheader name="Set-Cookie" value="CFTOKEN=#session.CFTOKEN#;path=/;HTTPOnly">
</cffunction>
<cfcomponent>
确保您已指定 setclientcookies = false。
如果使用 Application.cfm
如果您仍在使用 Application.cfm 文件,则可以使用以下内容:
<cfapplication setclientcookies="false" sessionmanagement="true" name="test">
<cfif NOT IsDefined("cookie.cfid") OR NOT IsDefined("cookie.cftoken")>
<cfheader name="Set-Cookie" value="CFID=#session.CFID#;path=/;HTTPOnly">
<cfheader name="Set-Cookie" value="CFTOKEN=#session.CFTOKEN#;path=/;HTTPOnly">
</cfif>
【讨论】:
首先,热烈欢迎所有 PCI DSS 难民!还邀请了 Appscan、Webinspect、Hailstorm 和 NTOSpider 逃犯。在这边坐下,我有蛋糕给你:
虽然对 Peter 来说为时已晚,但实际上可以让 JRun 按照他的要求从一开始就生成 HTTPOnly(和安全)cookie。查找jrun-web.xml 文件。它可能在像
C:\JRun4\servers\servername\cfusion-ear\cfusion-war\WEB-INF\。
您必须将以下内容添加到cookie-config section:
<cookie-config>
<cookie-path>/;HttpOnly</cookie-path>
</cookie-config>
如果您的网站是 HTTPS,您还应该启用安全 cookie 选项。但要小心,它是服务器范围的,而不是特定于应用程序的。所以它可能不适合你的共享环境:
<cookie-config>
<cookie-secure>true</cookie-secure>
<cookie-path>/;HttpOnly</cookie-path>
</cookie-config>
如果你没有卡在MX7或者CF8,官方有设置this in CF9.01Dcoldfusion.sessioncookie.httponly
我已经在 ColdFusion MX7 上对此进行了测试,它按预期工作。我躲过了 Appscan。
【讨论】:
目标是确保第一个请求是安全的(并通过扫描),所以如果这篇文章涵盖了这一点,那么它将解决问题。
如果我错了,请纠正我,但如果请求通过 HTTP 传入,听起来您需要重定向到 HTTPS。在将请求发送到 ColdFusion 之前,您不能通过 URL 重写规则来捕获这一点吗?
【讨论】: