2009-06-26 8 views
6

Wir müssen sicherstellen, dass alle Cookies auf einer CF7-Site als HttpOnly festgelegt sind.Erzwingen von HttpOnly-Cookies mit JRun/ColdFusion

Wir verwenden jsessionid, um unsere Sitzungen zu steuern, und JRun erstellt dies nicht als HttpOnly.

Während es möglich ist, einen vorhandenen Cookie zu ändern, um diese Einstellung hinzuzufügen, müssen wir ihn von Anfang an auf HttpOnly setzen.

Irgendwelche Vorschläge?


Verwandte Frage: Setting Secure flag for HTTPS cookies.

Antwort

0

Das Ziel ist, für die erste Anforderung sicher zu sein (und die Scan-Pass), so dass, wenn dieser Beitrag deckt, dass dann wird es das Problem lösen.

mich korrigieren, wenn ich falsch bin, aber es klingt wie Sie auf HTTPS umgeleitet werden müssen, wenn eine Anfrage in über HTTP kommt. Können Sie dies nicht mit einer URL-Neuschreibungsregel erfassen, bevor die Anforderung überhaupt an ColdFusion gesendet wird?

+0

Wir gehen leider über IIS 5, so kann URL-Umschreibung ohne teure, fehlerhafte, Drittanbieter-Plugins nicht tun. Es sei denn, es gibt einige Umschreibungen, die auf der JRun-Ebene durchgeführt werden können. –

+0

Mir sind keine JRun-Level-URL-Rewriter bekannt. Das Ausführen auf IIS 5 scheint eine seltsame Anforderung zu sein ... aber ich kann sicher verstehen, dass Sie manchmal mit dem arbeiten müssen, was Sie haben. Viel Glück! :) –

3

Von: http://www.petefreitag.com/item/764.cfm

CF Lauf 8 oder niedriger und mit 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> 

Achten Sie darauf, Sie haben setclientcookies false = angegeben.

Bei der Verwendung von Application.cfm

Wenn Sie noch eine Application.cfm-Datei verwenden, können Sie die folgenden Befehle verwenden:

<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> 
3

Zuerst ein herzliches Willkommen an alle Flüchtlinge PCI DSS! Appscan, Webinspect, Hailstorm und NTOSpider Flüchtige sind ebenfalls eingeladen. Nehmen Sie Platz direkt hier, ich habe Kuchen für Sie:

Während zu spät für Peter ist es in der Tat möglich, dass JRun HTTPOnly (und sichere) Cookies von Anfang an generieren, als er fragte. Suchen Sie nach der Datei jrun-web.xml. Es wird wahrscheinlich in einem Verzeichnis wie

C:\JRun4\servers\servername\cfusion-ear\cfusion-war\WEB-INF\ sein.

Sie haben folgendes zum cookie-config section hinzuzufügen:

<cookie-config> 
    <cookie-path>/;HttpOnly</cookie-path> 
</cookie-config> 

Wenn Ihre Website HTTPS ist, sollten Sie auch die sichere Cookie-Option aktivieren. Aber seien Sie vorsichtig, sein Server weit, nicht anwendungsspezifisch. So kann es für Ihre gemeinsame Umgebung nicht geeignet:

<cookie-config> 
    <cookie-secure>true</cookie-secure> 
    <cookie-path>/;HttpOnly</cookie-path> 
</cookie-config> 

Wenn Sie nicht in MX7 oder CF8 stecken geblieben sind, gibt es eine offizielle Einstellung für this in CF9.01Dcoldfusion.sessioncookie.httponly

ich getestet habe dies auf Coldfusion MX7 und funktioniert wie erwartet. Ausweichen Appscan ich tat.