2010-02-11 30 views
6

Trong dự án web của tôi setting to turn on httpOnlyCookies không có ở đó. Nó là false theo mặc định. Cũng không có chỗ nào trong mã nơi cookie được đặt thành HttpOnly. Tuy nhiên, khi tôi duyệt đến trang web tôi có thể thấy rằng ASP.NET_Session cookie đang được thông qua như HttpOnly. Làm thế nào nó được thiết lập để HttpOnly?HttpOnly được đặt cho cookie ASP.NET_SessionId như thế nào?

Trả lời

14

Cookie phiên ASP.NET chỉ là HTTP, bất kể cài đặt httpOnlyCookies được liên kết trong câu hỏi của bạn, vì điều này được ghi vào ASP.NET. Bạn không thể ghi đè điều này.

Nếu bạn thâm nhập vào các lớp System.Web.SessionState.SessionIDManager trong lắp ráp System.Web mã để tạo cookie ASP.NET phiên trông giống như:

private static HttpCookie CreateSessionCookie(string id) 
{ 
    HttpCookie cookie = new HttpCookie(Config.CookieName, id); 
    cookie.Path = "/"; 
    cookie.HttpOnly = true; // <-- burned in 
    return cookie; 
} 
+2

tìm thấy tài liệu tại đây: http://msdn.microsoft.com/en-us/library/aa480476.aspx "HttpOnly. Thuộc tính này chỉ định liệu cookie có thể được truy cập bằng tập lệnh khách hay không. Trong ASP.NET 2.0, giá trị này luôn được đặt thành true. " –

+1

@dev - Tôi vừa đào sâu vào hệ thống System.Web.dll để xem nhanh :) – Kev

+0

Phần bên phải bên dưới cũng quan trọng. Các trình duyệt cũ hơn không hỗ trợ HttpOnly và có thể bỏ qua cookie hoặc bỏ qua thuộc tính, sau này vẫn để trang web của bạn mở ra các cuộc tấn công XSS. –

1

Đó là HttpOnly để cookie phiên của bạn không thể được sửa đổi bởi các khách hàng với JavaScript.

+0

Chính xác. Tôi biết phần đó. Tôi lặp lại câu hỏi của mình từ "tại sao" đến "nó được đặt như thế nào?" –

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