ฉันจะตั้งค่าการตั้งค่าสถานะที่ปลอดภัยบนคุกกี้เซสชัน ASP.NET เพื่อที่มันจะถูกส่งผ่าน HTTPS และไม่เคยผ่าน HTTP ธรรมดา?
ฉันจะตั้งค่าการตั้งค่าสถานะที่ปลอดภัยบนคุกกี้เซสชัน ASP.NET เพื่อที่มันจะถูกส่งผ่าน HTTPS และไม่เคยผ่าน HTTP ธรรมดา?
คำตอบ:
มีสองวิธีhttpCookies
องค์ประกอบหนึ่งในการweb.config
อนุญาตให้คุณเปิดใช้งานrequireSSL
ซึ่งจะส่งเฉพาะคุกกี้ทั้งหมดรวมถึงเซสชันใน SSL เท่านั้นและยังอยู่ในรูปแบบการรับรองความถูกต้อง แต่ถ้าคุณเปิด SSL บน httpcookies คุณจะต้องเปิดใช้งานภายในการกำหนดค่าฟอร์มด้วย
แก้ไขเพื่อความชัดเจน:
ใส่สิ่งนี้ใน<system.web>
<httpCookies requireSSL="true" />
ใน<system.web>
องค์ประกอบเพิ่มองค์ประกอบต่อไปนี้:
<httpCookies requireSSL="true" />
แต่ถ้าคุณมี<forms>
องค์ประกอบของคุณในsystem.web\authentication
บล็อกแล้วนี้จะแทนที่การตั้งค่าในการตั้งค่ามันกลับไปเริ่มต้นhttpCookies
false
ในกรณีนั้นคุณต้องเพิ่มแอrequireSSL="true"
ททริบิวให้กับองค์ประกอบของฟอร์มด้วย
ดังนั้นคุณจะจบลงด้วย:
<system.web>
<authentication mode="Forms">
<forms requireSSL="true">
<!-- forms content -->
</forms>
</authentication>
</system.web>
roleManager
องค์ประกอบcookieRequireSSL="true"
ควรตั้งค่าแอตทริบิวต์เป็นจริง อ้าง msdn.microsoft.com/en-us/library/…
สิ่งต่าง ๆ ยุ่งเหยิงอย่างรวดเร็วหากคุณกำลังพูดถึงโค้ดเช็คอินในสภาพแวดล้อมขององค์กร เราพบว่าวิธีที่ดีที่สุดคือการมีเว็บรีลีส.configประกอบด้วยสิ่งต่อไปนี้:
<system.web>
<compilation xdt:Transform="RemoveAttributes(debug)" />
<authentication>
<forms xdt:Transform="Replace" timeout="20" requireSSL="true" />
</authentication>
</system.web>
ด้วยวิธีนี้นักพัฒนาจะไม่ได้รับผลกระทบ (ทำงานใน Debug) และเฉพาะเซิร์ฟเวอร์ที่ได้รับ Release builds เท่านั้นที่ต้องใช้คุกกี้เป็น SSL
ปลอดภัย - คุณลักษณะนี้แจ้งให้เบราว์เซอร์ส่งเฉพาะคุกกี้หากมีการส่งคำขอผ่านช่องทางที่ปลอดภัยเช่น HTTPS วิธีนี้จะช่วยป้องกันคุกกี้จากการถูกส่งผ่านคำขอที่ไม่ได้เข้ารหัส หากแอปพลิเคชันสามารถเข้าถึงได้ผ่านทั้ง HTTP และ HTTPS แสดงว่ามีความเป็นไปได้ที่คุกกี้จะถูกส่งเป็นข้อความที่ชัดเจน
ตามคำตอบของ @Mark D ฉันจะใช้การแปลง web.config เพื่อตั้งค่าคุกกี้ต่างๆให้ปลอดภัย ซึ่งรวมถึงการตั้งค่าและanonymousIdentification cookieRequireSSL
httpCookies requireSSL
ด้วยเหตุนี้คุณต้องตั้งค่าเว็บของคุณเพื่อปลดการตั้งค่าดังนี้:
<?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>
หากคุณกำลังใช้การรับรองความถูกต้องของบทบาทและแบบฟอร์มด้วยASP.NET Membership Provider
(ฉันรู้ว่ามันเก่าแก่) คุณจะต้องตั้งค่าroleManager cookieRequireSSL
และforms requireSSL
แอตทริบิวต์ให้ปลอดภัยเช่นกัน ถ้าเป็นเช่นนั้น web.release.config ของคุณอาจมีลักษณะเช่นนี้ (รวมอยู่ด้านบนพร้อมกับแท็กใหม่สำหรับ API ความเป็นสมาชิก):
<?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>
พื้นหลังบน web.config แปลงที่นี่: http://go.microsoft.com/fwlink/?LinkId=125889
เห็นได้ชัดว่าสิ่งนี้นอกเหนือไปจากคำถามเดิมของ OP แต่ถ้าคุณไม่ได้ตั้งค่าทั้งหมดให้ปลอดภัยคุณสามารถคาดหวังว่าเครื่องมือสแกนความปลอดภัยจะสังเกตเห็นและคุณจะเห็นธงสีแดงปรากฏในรายงาน ถามฉันว่าฉันรู้ :)
<httpCookies requireSSL="true" />