Câu trả lời:
Có hai cách, một httpCookies
yếu tố web.config
cho phép bạn bật requireSSL
mà chỉ truyền tất cả cookie bao gồm cả phiên trong SSL và cả bên trong xác thực mẫu, nhưng nếu bạn bật SSL trên httpcookies, bạn cũng phải bật cấu hình bên trong biểu mẫu.
Chỉnh sửa cho rõ ràng:
Đặt cái này vào<system.web>
<httpCookies requireSSL="true" />
bên trong <system.web>
phần tử, thêm phần tử sau:
<httpCookies requireSSL="true" />
Tuy nhiên, nếu bạn có một <forms>
yếu tố trongsystem.web\authentication
khối , thì phần này sẽ ghi đè cài đặt vào httpCookies
, đặt nó trở về mặc địnhfalse
.
Trong trường hợp đó, bạn cần thêm requireSSL="true"
thuộc tính cho thành phần biểu mẫu.
Vì vậy, bạn sẽ kết thúc với:
<system.web>
<authentication mode="Forms">
<forms requireSSL="true">
<!-- forms content -->
</forms>
</authentication>
</system.web>
Xem ở đây và ở đây để biết tài liệu MSDN của các yếu tố này.
roleManager
yếu tố, thuộc tính của nó cookieRequireSSL="true"
cũng phải được đặt thành true. Tham chiếu msdn.microsoft.com/en-us/l
Mọi thứ trở nên lộn xộn một cách nhanh chóng nếu bạn đang nói về mã đăng ký trong môi trường doanh nghiệp. Chúng tôi thấy rằng cách tiếp cận tốt nhất là có web.Release.config chứa các mục sau:
<system.web>
<compilation xdt:Transform="RemoveAttributes(debug)" />
<authentication>
<forms xdt:Transform="Replace" timeout="20" requireSSL="true" />
</authentication>
</system.web>
Theo cách đó, các nhà phát triển không bị ảnh hưởng (chạy trong Debug) và chỉ các máy chủ có bản dựng Phát hành mới yêu cầu cookie phải là SSL.
bảo mật - Thuộc tính này yêu cầu trình duyệt chỉ gửi cookie nếu yêu cầu được gửi qua kênh bảo mật như HTTPS. Điều này sẽ giúp bảo vệ cookie khỏi bị chuyển qua các yêu cầu không được mã hóa. Nếu ứng dụng có thể được truy cập qua cả HTTP và HTTPS, thì có khả năng cookie có thể được gửi bằng văn bản rõ ràng.
Dựa trên câu trả lời của @Mark D, tôi sẽ sử dụng các biến đổi web.config để đặt tất cả các cookie khác nhau thành Bảo mật. Điều này bao gồm thiết lậpanonymousIdentification cookieRequireSSL
và httpCookies requireSSL
.
Vì vậy, bạn sẽ thiết lập web của mình.Release.config là:
<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<system.web>
<httpCookies xdt:Transform="SetAttributes(httpOnlyCookies)" httpOnlyCookies="true" />
<httpCookies xdt:Transform="SetAttributes(requireSSL)" requireSSL="true" />
<anonymousIdentification xdt:Transform="SetAttributes(cookieRequireSSL)" cookieRequireSSL="true" />
</system.web>
</configuration>
Nếu bạn đang sử dụng Xác thực vai trò và biểu mẫu với ASP.NET Membership Provider
(tôi biết, nó cổ xưa), bạn cũng sẽ muốn đặt roleManager cookieRequireSSL
các forms requireSSL
thuộc tính và bảo mật là an toàn. Nếu vậy, web.release.config của bạn có thể trông như thế này (bao gồm ở trên cộng với các thẻ mới cho API thành viên):
<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<system.web>
<httpCookies xdt:Transform="SetAttributes(httpOnlyCookies)" httpOnlyCookies="true" />
<httpCookies xdt:Transform="SetAttributes(requireSSL)" requireSSL="true" />
<anonymousIdentification xdt:Transform="SetAttributes(cookieRequireSSL)" cookieRequireSSL="true" />
<roleManager xdt:Transform="SetAttributes(cookieRequireSSL)" cookieRequireSSL="true" />
<authentication>
<forms xdt:Transform="SetAttributes(requireSSL)" requireSSL="true" />
</authentication>
</system.web>
</configuration>
Chuyển đổi nền trên web.config tại đây: http://go.microsoft.com/fwlink/?LinkId=125889
Rõ ràng điều này vượt xa câu hỏi ban đầu của OP nhưng nếu bạn không đặt tất cả chúng thành an toàn, bạn có thể mong đợi rằng một công cụ quét bảo mật sẽ thông báo và bạn sẽ thấy cờ đỏ xuất hiện trên báo cáo. Hỏi tôi làm sao tôi biết. :)
<httpCookies requireSSL="true" />