มีวิธีใดบ้างในการอ่านคุกกี้ที่ปลอดภัยด้วย JavaScript?
ฉันพยายามทำโดยใช้document.cookie
และเท่าที่ฉันเห็นในบทความนี้เกี่ยวกับคุกกี้ที่ปลอดภัยและการตั้งค่าสถานะ HttpOnlyฉันไม่สามารถเข้าถึงคุกกี้ที่ปลอดภัยด้วยวิธีนี้
ใครสามารถแนะนำวิธีแก้ปัญหา?
มีวิธีใดบ้างในการอ่านคุกกี้ที่ปลอดภัยด้วย JavaScript?
ฉันพยายามทำโดยใช้document.cookie
และเท่าที่ฉันเห็นในบทความนี้เกี่ยวกับคุกกี้ที่ปลอดภัยและการตั้งค่าสถานะ HttpOnlyฉันไม่สามารถเข้าถึงคุกกี้ที่ปลอดภัยด้วยวิธีนี้
ใครสามารถแนะนำวิธีแก้ปัญหา?
คำตอบ:
เบราว์เซอร์ที่แตกต่างกันจะเปิดใช้มาตรการรักษาความปลอดภัยที่แตกต่างกันเมื่อตั้งค่าสถานะHTTPOnly ตัวอย่างเช่น Opera และ Safari ไม่ได้ป้องกันไม่ให้จาวาสคริปต์เขียนลงในคุกกี้ อย่างไรก็ตามการอ่านเป็นสิ่งต้องห้ามเสมอในเวอร์ชันล่าสุดของเบราว์เซอร์หลักทั้งหมด
แต่ที่สำคัญกว่าทำไม คุณถึงต้องการอ่านHTTPOnly
คุกกี้? หากคุณเป็นนักพัฒนาเพียงแค่ปิดการตั้งค่าสถานะและตรวจสอบให้แน่ใจว่าคุณทดสอบโค้ดของคุณสำหรับ xss ฉันขอแนะนำให้คุณหลีกเลี่ยงการปิดใช้งานแฟล็กนี้หากเป็นไปได้ ควรHTTPOnly
ตั้งค่าสถานะและ "ค่าสถานะที่ปลอดภัย" (ซึ่งบังคับให้ส่งคุกกี้ผ่าน https) เสมอ
หากคุณเป็นผู้บุกรุกแล้วคุณต้องการที่จะจี้เซสชั่น แต่มีวิธีง่ายๆในการจี้เซสชันแม้จะมีการHTTPOnly
ตั้งค่าสถานะ คุณยังสามารถขี่เซสชันได้โดยไม่ต้องรู้รหัสเซสชัน หนอน MySpace Samyทำแบบนั้น ใช้XHRเพื่ออ่านโทเค็นCSRFจากนั้นดำเนินงานที่ได้รับอนุญาต ดังนั้นผู้โจมตีสามารถทำเกือบทุกอย่างที่ผู้ใช้ล็อกอินทำได้
ผู้คนเชื่อมั่นในHTTPOnly
ธงมากเกินไปXSSยังสามารถใช้ประโยชน์ได้ คุณควรตั้งค่าอุปสรรคเกี่ยวกับคุณสมบัติที่ละเอียดอ่อน เช่นรหัสผ่านการเปลี่ยนแปลงที่ยื่นควรต้องใช้รหัสผ่านปัจจุบัน ความสามารถในการเป็นผู้ดูแลระบบเพื่อสร้างบัญชีใหม่ควรจะต้องแจ้งลบความคิดเห็นซึ่งเป็นเทคนิคการป้องกัน CSRFที่ไม่สามารถข้ามได้อย่างง่ายดายด้วยการXHR
จุดรวมของคุกกี้ HttpOnly คือ JavaScript ไม่สามารถเข้าถึงได้
วิธีเดียว (ยกเว้นการใช้ประโยชน์จากข้อบกพร่องของเบราว์เซอร์) สำหรับสคริปต์ของคุณในการอ่านคือการมีสคริปต์การทำงานร่วมกันบนเซิร์ฟเวอร์ที่จะอ่านค่าคุกกี้และสะท้อนกลับเป็นส่วนหนึ่งของเนื้อหาการตอบกลับ แต่ถ้าคุณทำได้และจะทำเช่นนั้นทำไมต้องใช้คุกกี้ HttpOnly ตั้งแต่แรก?
วัตถุประสงค์ของคุกกี้ของ Httponly ไม่สามารถเข้าถึงได้โดยสคริปต์ดังนั้นคุณจึงไม่สามารถทำได้