2009-06-26 28 views
6

Chúng tôi cần đảm bảo rằng tất cả cookie trên trang web CF7 được đặt là HttpOnly.Buộc cookie HttpOnly với JRun/ColdFusion

Chúng tôi đang sử dụng jsessionid để kiểm soát các phiên của chúng tôi và JRun không tạo điều này dưới dạng HttpOnly.

Trong khi có thể sửa đổi cookie hiện có để thêm cài đặt này, chúng tôi cần phải đặt nó thành HttpOnly ngay từ đầu.

Mọi đề xuất?


Câu hỏi liên quan: Setting Secure flag for HTTPS cookies.

Trả lời

0

Mục đích là cho yêu cầu đầu tiên để được an toàn (và thông qua quá trình quét), vì vậy nếu bài này bao gồm mà sau đó nó sẽ giải quyết vấn đề.

Sửa lỗi nếu tôi sai, nhưng có vẻ như bạn cần chuyển hướng đến HTTPS nếu có yêu cầu qua HTTP. Bạn không thể nắm bắt điều này với quy tắc viết lại URL, trước khi yêu cầu được gửi tới ColdFusion?

+0

Rất tiếc, chúng tôi không thực hiện được thông qua IIS 5, do đó, không thể viết lại URL mà không tốn kém, lỗi, các plugin của bên thứ ba. Trừ khi có một số viết lại có thể được thực hiện ở cấp JRun? –

+0

Tôi không biết bất kỳ nhà soạn nhạc url cấp JRun nào. Chạy trên IIS 5 có vẻ như một yêu cầu kỳ lạ ... nhưng tôi chắc chắn có thể hiểu rằng đôi khi bạn phải làm việc với những gì bạn đã có. Chúc may mắn! :) –

3

Từ: http://www.petefreitag.com/item/764.cfm

Chạy CF 8 hoặc thấp hơn và sử dụng 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> 

Đảm bảo bạn có setclientcookies = false quy định.

Nếu dùng Application.cfm

Nếu bạn vẫn đang sử dụng một tập tin Application.cfm, bạn có thể sử dụng như sau:

<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

Thứ nhất, chào đón nồng nhiệt cho tất cả những người tị nạn PCI DSS! Appscan, Webinspect, Hailstorm và NTSpider fugitives cũng được mời. Ngồi ngay phía trên đây, tôi có bánh cho bạn:

Trong khi quá muộn cho Peter, trên thực tế, JRun có thể tạo ra các cookie HTTPOnly (và an toàn) ngay từ đầu khi anh ta hỏi. Tìm tập tin jrun-web.xml. Nó có thể nằm trong một thư mục như

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

Bạn phải thêm dòng sau vào các cookie-config section:

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

Nếu trang web của bạn là HTTPS, bạn cũng nên kích hoạt tùy chọn cookie sẽ an toàn. Nhưng hãy cẩn thận, máy chủ của nó rộng, không ứng dụng cụ thể. Vì vậy, nó có thể không phù hợp với môi trường chia sẻ của bạn:

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

Nếu bạn không bị mắc kẹt trong MX7 hoặc CF8, có một thiết lập chính thức cho this in CF9.01Dcoldfusion.sessioncookie.httponly

Tôi đã thử nghiệm này trên ColdFusion MX7 và nó hoạt động như mong đợi. Dodged Appscan tôi đã làm.

Các vấn đề liên quan