我们需要确保 CF7 站点上的所有 cookie 都设置为 HttpOnly。
我们使用 jsessionid 来控制我们的会话,而 JRun 不会将其创建为 HttpOnly。
虽然可以修改现有 cookie 以添加此设置,但我们需要从一开始就将其设置为 HttpOnly。
有什么建议么?
我们需要确保 CF7 站点上的所有 cookie 都设置为 HttpOnly。
我们使用 jsessionid 来控制我们的会话,而 JRun 不会将其创建为 HttpOnly。
虽然可以修改现有 cookie 以添加此设置,但我们需要从一开始就将其设置为 HttpOnly。
有什么建议么?
来自: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 部分:
<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中,CF9.01中对此有官方设置 Dcoldfusion.sessioncookie.httponly
我已经在 ColdFusion MX7 上进行了测试,它按预期工作。躲过了Appscan,我做到了。
目标是确保第一个请求是安全的(并通过扫描),所以如果这篇文章涵盖了这一点,那么它将解决问题。
如果我错了,请纠正我,但如果请求通过 HTTP 传入,听起来您需要重定向到 HTTPS。在将请求发送到 ColdFusion 之前,您不能通过 URL 重写规则来捕捉到这一点吗?