2010-06-07 21 views
25

Có ai biết chính xác cách đặt HTTPONLY trên cookie phiên ASP cổ điển không?Đặt HTTPONLY cho Cookie phiên ASP cổ điển

Đây là điều cuối cùng được gắn cờ trong quét dễ bị tổn thương và cần khắc phục ASAP, vì vậy mọi trợ giúp đều được đánh giá cao.

~~~ Một BIẾT THÊM THÔNG TIN nhỏ trên MY VẤN ĐỀ ~~~

bất cứ ai có thể vui lòng giúp tôi với điều này?

Tôi cần biết cách đặt HTTPONLY trên cookie ASPSESSION được tạo theo mặc định từ ASP & IIS.

Đây là cookie được máy chủ tự động tạo cho tất cả các trang asp.

Nếu cần tôi có thể đặt HTTPONLY trên tất cả cookie trên trang web.

Bất kỳ trợ giúp nào về cách thực hiện việc này sẽ được đánh giá ồ ạt.

Cảm ơn

Cảm ơn Elliott

+2

Đây là một câu hỏi hay. Bạn đã tìm ra cách để làm điều đó? –

+0

whats các giải pháp bạn có cho đến nay ??? – Dhananjay

Trả lời

2
Response.AddHeader "Set-Cookie", "CookieName=CookieValue; path=/; HttpOnly" 

Nguồn: http://www.asp101.com/tips/index.asp?id=160

+4

Bởi vì cookie này được tạo bởi ASP & IIS theo mặc định, chúng tôi không có cơ hội lập trình để thêm điều này. Tôi tự hỏi nếu đó là một số cài đặt khác ở một nơi khác ??? Tôi đã cập nhật KeepASPCookieSecure trong IIS Metabase.xml, tôi tự hỏi liệu đây có phải là một loại sửa lỗi tương tự không ?? –

+0

Xin lưu ý rằng việc thêm cookie bằng "addheader" sẽ không thêm cookie vào bộ sưu tập request.cookies() trong ASP trong cùng một yêu cầu. Cookie sẽ chỉ hiển thị trong phạm vi request.cookies sau một vòng tròn trình duyệt. Điều này khác với lệnh response.cookies() thông thường, sẽ làm cho cookie có sẵn trong phạm vi request.cookies trong cùng một yêu cầu. –

0

This page có rất nhiều thông tin có liên quan đến vấn đề của bạn.

.NET 1.1 không thêm HttpOnly vì chưa được phát minh.

Nếu ứng dụng của bạn sẽ chạy dưới .NET 2.0 (Tôi đã chuyển một số trang ASP cổ điển sang 2.0 hầu như không thay đổi) HttpOnly được đặt theo mặc định.

Nếu tôi đọc đúng, bạn có thể nhận cookie phiên và nối thêm ; HttpOnly; vào nó. Ông đưa ra một ví dụ java:

String sessionid = request.getSession().getId(); 
response.setHeader("SET-COOKIE", "JSESSIONID=" + sessionid + "; HttpOnly"); 

Cuối cùng, ông gợi ý:

nếu mã thay đổi này là không khả thi, tường lửa ứng dụng web có thể được sử dụng để thêm HttpOnly cookie phiên

Edited để thêm: cho những người nghĩ rằng di chuyển sang .NET (có thể chứa hầu hết mã ASP cổ điển không thay đổi) là một thay đổi quá lớn để có được một tính năng nhỏ như vậy, trải nghiệm của tôi về bộ lọc ISAPI là chúng cũng vậy, có thể là một nỗi đau lớn, và trong một số trường hợp phổ biến (chia sẻ lưu trữ) bạn không thể sử dụng chúng cả.

+5

Xin lỗi nếu downvotes của bạn không rõ ràng nhưng thay đổi toàn bộ trang web của bạn từ ASP cổ điển để. NET có vẻ như một cam kết khá lớn chỉ để có được HttpOnly cookie phiên. Tôi nghĩ rằng đó là lý do cho các downvotes. –

10

Microsoft bao gồm một ví dụ sử dụng một bộ lọc ISAPI cho tất cả các tập tin cookie outbound: http://msdn.microsoft.com/en-us/library/ms972826

hoặc URL viết lại có thể được sử dụng http://forums.iis.net/p/1168473/1946312.aspx

<rewrite> 
     <outboundRules> 
      <rule name="Add HttpOnly" preCondition="No HttpOnly"> 
       <match serverVariable="RESPONSE_Set_Cookie" pattern=".*" negate="false" /> 
       <action type="Rewrite" value="{R:0}; HttpOnly" /> 
       <conditions> 
       </conditions> 
      </rule> 
      <preConditions> 
       <preCondition name="No HttpOnly"> 
        <add input="{RESPONSE_Set_Cookie}" pattern="." /> 
        <add input="{RESPONSE_Set_Cookie}" pattern="; HttpOnly" negate="true" /> 
       </preCondition> 
      </preConditions> 
     </outboundRules> 
    </rewrite> 
+8

Trong khi tác phẩm này - Tôi phải thông báo rằng nếu bất kỳ trang ASP cổ điển nào của bạn có Response.Buffer = false, trang sẽ là thùng rác thuần túy. – Jason

+0

Bất cứ ai có vấn đề để thực hiện mã này, trước tiên bạn phải bật URL Rewrite cho IIS [http://www.iis.net/downloads/microsoft/url-rewrite] – MarceloBarbosa

+0

Đối với tôi, cờ HTTP trong công cụ dev được đặt thành true , nhưng sau một giây, cờ sẽ bị xóa. Điều này có liên quan gì đến việc sử dụng HTTPS không? –

2

Nếu bạn có IIS7 +, bạn cần đảm bảo cài đặt mô-đun URL Rewrite. Bạn có thể cài đặt nó bằng Trình cài đặt Nền tảng Web. Trình cài đặt Nền tảng Web có thể được tìm thấy trong chế độ xem tính năng cho trang web của bạn. Bạn cần chạy IIS Manager với tư cách quản trị viên.

Run IIS As Administratro

Click on the Web Platform Installer trong các tính năng xem cho trang web của bạn:

Web Platform Installer

maker chắc chắn URL Rewrite máy chủ Sản phẩm được cài đặt. Nếu không, hãy cài đặt.

Url Rewrite Server Product

Với URL Rewrite máy chủ Sản phẩm được cài đặt, bạn có thể sử dụng tính năng Rewrite URL trên trang web của bạn để thêm một quy tắc để thêm HttpOnly cho cookie Session ID của bạn.

URL Rewrite Feature

enter image description here

Add HttpOnly Outbound Rule

Bạn sẽ thấy, nếu nó không tồn tại, một file web.config tạo cho trang web ASP của bạn. nó sẽ có các nội dung sau:

enter image description here

Nếu bạn sử dụng Firebug trong Firefox để kiểm tra các tập tin cookie của bạn, bây giờ bạn sẽ thấy HttpOnly cờ thiết lập:

enter image description here

+1

Giải thích tốt .. Công việc tuyệt vời !! –