JavaScript ต้องการเข้าถึงคุกกี้หากใช้ AJAX บนไซต์ที่มีข้อ จำกัด การเข้าถึงตามคุกกี้ HttpOnly cookies จะทำงานบนไซต์ AJAX หรือไม่
แก้ไข: Microsoft สร้างวิธีในการป้องกันการโจมตี XSS โดยไม่อนุญาตให้เข้าถึง JavaScript กับคุกกี้หากระบุ HttpOnly FireFox นำมาใช้ในภายหลังนี้ ดังนั้นคำถามของฉันคือ: หากคุณใช้ AJAX บนไซต์เช่น StackOverflow คุกกี้ Http-Only เป็นตัวเลือกหรือไม่
แก้ไข 2:คำถามที่ 2 หากวัตถุประสงค์ของ HttpOnly คือป้องกันการเข้าถึง JavaScript ของคุกกี้และคุณยังสามารถเรียกดูคุกกี้ผ่าน JavaScript ผ่าน XmlHttpRequest Object ได้จุดประสงค์ของ HttpOnlyคืออะไร
แก้ไข 3:นี่คือคำพูดจาก Wikipedia:
เมื่อเบราว์เซอร์ได้รับคุกกี้ดังกล่าวก็ควรจะใช้มันตามปกติในการแลกเปลี่ยน HTTP ต่อไปนี้ แต่จะไม่ทำให้สคริปต์ฝั่งไคลเอ็นต์ปรากฏให้เห็น [32] การ
HttpOnly
ตั้งค่าสถานะไม่ได้เป็นส่วนหนึ่งของมาตรฐานใด ๆ และไม่ได้ใช้งานในเบราว์เซอร์ทั้งหมด โปรดทราบว่าขณะนี้ไม่มีการป้องกันการอ่านหรือเขียนคุกกี้เซสชันผ่าน XMLHTTPRequest [33]
ฉันเข้าใจว่าdocument.cookie
ถูกบล็อกเมื่อคุณใช้ HttpOnly แต่ดูเหมือนว่าคุณยังสามารถอ่านค่าคุกกี้ในวัตถุ XMLHttpRequest ซึ่งอนุญาตให้ใช้ XSS HttpOnly ทำให้คุณปลอดภัยกว่านี้อย่างไร? โดยการทำคุกกี้เป็นหลักอ่านอย่างเดียว?
ในตัวอย่างของคุณฉันไม่สามารถเขียนถึงคุณdocument.cookie
แต่ฉันยังสามารถขโมยคุกกี้ของคุณและโพสต์ไปยังโดเมนของฉันโดยใช้วัตถุ XMLHttpRequest
<script type="text/javascript">
var req = null;
try { req = new XMLHttpRequest(); } catch(e) {}
if (!req) try { req = new ActiveXObject("Msxml2.XMLHTTP"); } catch(e) {}
if (!req) try { req = new ActiveXObject("Microsoft.XMLHTTP"); } catch(e) {}
req.open('GET', 'http://stackoverflow.com/', false);
req.send(null);
alert(req.getAllResponseHeaders());
</script>
แก้ไข 4:ขออภัยฉันหมายความว่าคุณสามารถส่ง XMLHttpRequest ไปยังโดเมน StackOverflow จากนั้นบันทึกผลลัพธ์ของ getAllResponseHeaders () ไปยังสตริงลงทะเบียนคุกกี้แล้วโพสต์นั้นไปยังโดเมนภายนอก ดูเหมือนว่า Wikipedia และ ha.ckers เห็นด้วยกับฉันในเรื่องนี้ แต่ฉันจะรักการศึกษา ...
รอบชิงชนะเลิศแก้ไข:อ่าเห็นได้ชัดว่าเว็บไซต์ทั้งสองมีความผิดนี้เป็นจริงข้อผิดพลาดใน Firefox IE6 & 7 เป็นเบราว์เซอร์ที่สนับสนุน HttpOnly เท่านั้น
เพื่อย้ำทุกสิ่งที่ฉันได้เรียนรู้:
- HttpOnly จำกัด การเข้าถึง document.cookie ทั้งหมดใน IE7 & และ FireFox (ไม่แน่ใจเกี่ยวกับเบราว์เซอร์อื่น)
- HttpOnly ลบข้อมูลคุกกี้ออกจากส่วนหัวการตอบสนองใน XMLHttpObject.getAllResponseHeaders () ใน IE7
- XMLHttpObjects สามารถส่งไปยังโดเมนที่มาจากเท่านั้นดังนั้นจึงไม่มีการโพสต์ข้ามโดเมนของคุกกี้
แก้ไข: ข้อมูลนี้มีแนวโน้มที่จะไม่ทันสมัย