6

我们需要确保 CF7 站点上的所有 cookie 都设置为 HttpOnly。

我们使用 jsessionid 来控制我们的会话,而 JRun 不会将其创建为 HttpOnly。

虽然可以修改现有 cookie 以添加此设置,但我们需要从一开始就将其设置为 HttpOnly。

有什么建议么?


相关问题:为 HTTPS cookie 设置安全标志。

4

3 回答 3

3

来自: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>
于 2011-03-08T15:53:58.200 回答
3

首先,热烈欢迎所有 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,我做到了。

于 2011-08-03T06:15:26.757 回答
0

目标是确保第一个请求是安全的(并通过扫描),所以如果这篇文章涵盖了这一点,那么它将解决问题。

如果我错了,请纠正我,但如果请求通过 HTTP 传入,听起来您需要重定向到 HTTPS。在将请求发送到 ColdFusion 之前,您不能通过 URL 重写规则来捕捉到这一点吗?

于 2009-06-29T16:51:32.023 回答