ตั้งค่าคุกกี้เป็น HttpOnly ผ่าน Javascript


90

ฉันมีคุกกี้ที่ไม่HttpOnlyสามารถตั้งค่าคุกกี้นี้HttpOnlyผ่าน JavaScript ได้หรือไม่?


1
จะเป็นไปได้อย่างไรที่จะตั้งค่าคุกกี้ด้วย JavaScript ซึ่ง JavaScript เองไม่ควรจะจัดการ เพียงแค่ตั้งค่าในฝั่งเซิร์ฟเวอร์
BalusC

1
คุกกี้ไม่ใช่ HttpOnly และฉันต้องการตั้งค่าเป็น HttpOnly ผ่าน Javascript

6
ฉันคิดว่าคุณพลาดประเด็นของ HttpOnly
BalusC

คำถามที่ดี ไม่มีข้อเสียใด ๆ ในการตั้งค่าคุกกี้ HttpOnly จากไคลเอนต์เท่าที่ความปลอดภัยไป คุณคิดว่ามันจะได้รับอนุญาต แต่แน่นอนว่ามันไม่ใช่
PHP Guru

คำตอบ:


178

HttpOnlyคุกกี้หมายความว่ามันเป็นไม่สามารถใช้ได้กับภาษาสคริปต์เช่น JavaScript ดังนั้นใน JavaScript จึงไม่มี API สำหรับรับ / ตั้งค่าHttpOnlyแอตทริบิวต์ของคุกกี้เนื่องจากจะทำให้ความหมายของHttpOnly.

เพียงตั้งค่าดังกล่าวที่ฝั่งเซิร์ฟเวอร์โดยใช้ภาษาฝั่งเซิร์ฟเวอร์ที่ฝั่งเซิร์ฟเวอร์ใช้ หาก JavaScript มีความจำเป็นอย่างยิ่งสำหรับสิ่งนี้คุณสามารถพิจารณาเพียงแค่ปล่อยให้มันส่งคำขอ (ajax) บางอย่างพร้อมกับพารามิเตอร์คำขอเฉพาะบางอย่างซึ่งเรียกภาษาฝั่งเซิร์ฟเวอร์เพื่อสร้างคุกกี้ HttpOnly แต่นั่นจะทำให้แฮกเกอร์เปลี่ยนHttpOnlyXSS ได้ง่ายและยังสามารถเข้าถึงคุกกี้ผ่าน JS ได้จึงทำให้HttpOnlyคุกกี้ของคุณไร้ประโยชน์โดยสิ้นเชิง


4
ฉันสงสัยว่าแอปฝั่งไคลเอ็นต์เช่นส่วนขยายเบราว์เซอร์ "EditThisCookie" เปลี่ยนค่าสถานะ HttpOnly เป็นเท็จได้อย่างไร
pavanw3b

1
@ PavanW3b: ไม่ได้ใช้ภาษาสคริปต์ฝั่งไคลเอ็นต์เช่น JavaScript สำหรับสิ่งนั้น เป็นเพียงส่วนขยายของเบราว์เซอร์
BalusC

10
@BalusC ส่วนขยายเบราว์เซอร์เขียนด้วย JS และมีมาระยะหนึ่งแล้ว developer.chrome.com/extensions "คุณเขียนโดยใช้เทคโนโลยีเว็บเช่น HTML, JavaScript และ CSS" developer.mozilla.org/en-US/Add-ons/WebExtensions/… "พวกเขาเขียนโดยใช้เทคโนโลยีเว็บมาตรฐาน - JavaScript, HTML และ CSS - รวมถึง JavaScript API เฉพาะบางส่วน" และตัวอย่างของโอเพนซอร์สที่เขียนในปี 2013 github.com/Asana/Chrome-Extension-Example
Justin Hamade

56
ฉันไม่เห็นว่าการตั้งค่า HttpOnly จาก JS จะ "เอาชนะความหมายของHttpOnly" ได้อย่างไรตราบใดที่คุกกี้ยังไม่สามารถอ่านได้จากสคริปต์ ...
hallo

4
MDN บอกว่าห้าม developer.mozilla.org/en-US/docs/Web/HTTP/…
mpoisot
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.