0. บทนำทำไมเราต้องใช้คุกกี้และเซสชัน
เนื่องจากคำขอ HTTP นั้นไร้สัญชาติ (ไม่สามารถบันทึกสถานะการเข้าสู่ระบบของผู้ใช้ ฯลฯ ) จึงจำเป็นต้องมีกลไกบางอย่างเพื่อบันทึกสถานะการเข้าสู่ระบบของผู้ใช้และข้อมูลอื่น ๆ ครั้งต่อไปที่คุณเข้าถึงบริการเว็บคุณไม่จำเป็นต้องตรวจสอบว่าจะเข้าสู่ระบบหรือสถานะอื่น ๆ อีกครั้ง กลไกเซสชันและกลไกคุกกี้เป็นวิธีแก้ปัญหาบนเซิร์ฟเวอร์และด้านเบราว์เซอร์ตามลำดับ
1. เกี่ยวกับคุกกี้
1.1 คุกกี้คืออะไร
คุกกี้คุกกี้ความหมายดั้งเดิม มันถูกใช้เพื่อจัดเก็บข้อมูลสถานะผู้ใช้ทางด้านเบราว์เซอร์จากนั้นนำส่วนนี้ของข้อมูลกลับไปที่แบ็กเอนด์เมื่อเข้าถึงแบ็กเอนด์
เนื้อหาของคุกกี้ส่วนใหญ่ประกอบด้วย: ชื่อค่าเวลาเวลาหมดอายุเส้นทางและโดเมน
1.2 หมวดหมู่ของคุกกี้
คุกกี้คุกกี้เซสชันที่ไม่ได้ตั้งค่าเวลาหมดอายุจะถูกบันทึกไว้ในหน่วยความจำของเบราว์เซอร์ หากเบราว์เซอร์ถูกปิดคุกกี้จะถูกทำลาย (มักใช้เป็นเซสชัน)
คุกกี้ปกติตั้งเวลาหมดอายุและบันทึกไว้ในฮาร์ดไดรฟ์
1.3 วิธีการสมัคร
เมื่อเริ่มคำขอ: เบราว์เซอร์ตรวจสอบคุกกี้ที่เก็บไว้ทั้งหมด หากขอบเขตของการกระทำที่ประกาศโดยคุกกี้ (กำหนดโดยเส้นทางและโดเมน) มากกว่าหรือเท่ากับตำแหน่งของทรัพยากรที่จะร้องขอคุกกี้จะถูกแนบกับส่วนหัวคำขอ HTTP ของทรัพยากรคำขอและส่งไปยังเซิร์ฟเวอร์
เมื่อดำเนินการตามคำขอ: ทางฝั่งเซิร์ฟเวอร์ข้อมูลคุกกี้ที่มีอยู่ในส่วนหัวคำขอจะถูกตรวจสอบโดยทั่วไป (เช่นการตรวจสอบเข้าสู่ระบบ) หากผ่านการตรวจสอบการประมวลผลธุรกิจจริงสามารถดำเนินการได้
หากการตรวจสอบล้มเหลวเช่นการไม่พบคุกกี้หรือข้อมูลคุกกี้ไม่ถูกต้อง (อาจปลอมแปลง) ให้ข้ามไปสู่การเข้าสู่ระบบและหลังจากลงชื่อเข้าใช้ให้ส่งข้อมูลคุกกี้ในการตอบกลับ เบราว์เซอร์จะบันทึกไว้ในฮาร์ดดิสก์หรือหน่วยความจำตามข้อมูลคุกกี้ที่ส่งคืนสำหรับการใช้งานครั้งต่อไป -
2. เกี่ยวกับเซสชั่น
2.1 เซสชันคืออะไร
เซสชันใช้เพื่อบันทึกข้อมูลสถานะผู้ใช้ทางฝั่งเซิร์ฟเวอร์
2.2 วิธีใช้
เมื่อเบราว์เซอร์เริ่มร้องขอ: เซิร์ฟเวอร์จะอ่านข้อมูลเซสชันในส่วนหัวคำขอก่อน หากไม่พบข้อมูลเซสชันหรือไม่สามารถเรียกคืนเซสชัน SessionID ได้หากไม่เป็นเช่นนั้นจะมีการสร้างและจัดเก็บ SessionID ใหม่ในฮาร์ดดิสก์เซิร์ฟเวอร์หรือ MemCache
เบราว์เซอร์ได้รับการตอบกลับ: SessionID ที่ส่งคืนจะถูกบันทึกไว้ในหน่วยความจำท้องถิ่นสำหรับใช้ในคำขอถัดไป หนึ่งในการใช้งานของเซสชันที่บันทึกไว้ในพื้นที่คือการบันทึกข้อมูลเกี่ยวกับคุกกี้ แต่ในความเป็นจริงคุกกี้ไม่ใช่ทางออกเดียวในการบันทึกเซสชัน นอกจากนี้ยังเป็นไปได้ที่จะใช้ URL rewrites (ผนวกรหัสเซสชันโดยตรงหลังเส้นทาง URL)
3. ความแตกต่างหลักระหว่างคุกกี้และ SessionD
1. มีความแตกต่างเล็กน้อยในที่เก็บข้อมูล
ข้อมูลคุกกี้จะถูกเก็บไว้ในเบราว์เซอร์ของไคลเอนต์และไม่จำเป็นต้องบันทึกทางฝั่งเซิร์ฟเวอร์ ข้อมูลเซสชันจะถูกวางไว้บนเซิร์ฟเวอร์และยังมีสำเนาของหน่วยความจำท้องถิ่น
2. ความปลอดภัยที่แตกต่างกัน
คุกกี้ไม่ปลอดภัยเท่ากับเซสชัน เนื่องจากคุกกี้ธรรมดาจะถูกบันทึกไว้ในฮาร์ดดิสก์ท้องถิ่นแฮ็กเกอร์สามารถเปิดการโจมตี XS ได้โดยการปลอม URL และวิธีการอื่น ๆ เพื่อรับคุกกี้ในฮาร์ดดิสก์ที่บันทึกไว้ในท้องถิ่นแล้วขโมยข้อมูลที่ละเอียดอ่อนของผู้ใช้
เซสชันแตกต่างกัน เฉพาะเมื่อมีการเปิดตัว XSS Attack เมื่อผู้ใช้เข้าสู่ระบบในเว็บไซต์นี้สามารถรับข้อมูลเซสชันได้ หลังจากปิดเบราว์เซอร์เซสชั่นจะถูกทำลาย ความปลอดภัยดีกว่าคุกกี้
3. ความแตกต่างในการสนับสนุนข้ามโดเมน
คุกกี้รองรับการเข้าถึงข้ามโดเมน ตัวอย่างเช่นหากแอตทริบิวต์โดเมนถูกตั้งค่าเป็น ".biaodianfu.com" ชื่อโดเมนทั้งหมดที่มีคำต่อท้าย ".biaodianfu.com" สามารถเข้าถึงคุกกี้ได้ ขณะนี้คุกกี้ข้ามโดเมนถูกนำมาใช้กันอย่างแพร่หลายบนอินเทอร์เน็ตเช่น Google, Baidu, Sina ฯลฯ เซสชั่นไม่รองรับการเข้าถึงข้ามโดเมน เซสชั่นใช้ได้เฉพาะภายในชื่อโดเมนที่เขาอยู่
4. ความแตกต่างของความดันเซิร์ฟเวอร์
เซสชันจะถูกเก็บไว้ในฝั่งเซิร์ฟเวอร์และผู้ใช้แต่ละคนจะสร้างเซสชัน หากมีผู้ใช้จำนวนมากที่เข้าถึงพร้อมกันมันจะสร้างเซสชันจำนวนมากและใช้หน่วยความจำจำนวนมาก ดังนั้นจึงไม่น่าเป็นไปได้ที่เว็บไซต์เช่น Google, Baidu และ Sina ที่มีการเยี่ยมชมพร้อมกันสูงมากสามารถติดตามได้โดยใช้เซสชัน เมื่อพิจารณาถึงการลดประสิทธิภาพของเซิร์ฟเวอร์ควรใช้คุกกี้
5. วิธีการเข้าถึงที่แตกต่างกัน
สตริง ASCII สามารถเก็บไว้ในคุกกี้เท่านั้น หากจำเป็นต้องใช้อักขระ Unicode หรือข้อมูลไบนารีจำเป็นต้องมีการเข้ารหัสก่อน วัตถุ Java ไม่สามารถเข้าถึงได้โดยตรงในคุกกี้ ในการจัดเก็บข้อมูลที่ซับซ้อนเล็กน้อยการใช้คุกกี้นั้นค่อนข้างยาก
เซสชันสามารถเข้าถึงข้อมูลทุกประเภทรวมถึง แต่ไม่ จำกัด เฉพาะสตริงจำนวนเต็มรายการแผนที่ ฯลฯ ในเซสชันถั่วชวาและแม้แต่คลาส Java วัตถุ ฯลฯ ใด ๆ สามารถเก็บไว้ได้โดยตรงซึ่งใช้งานง่ายมาก คุณสามารถนึกถึงเซสชั่นเป็นคลาสคอนเทนเนอร์ Java
6. ขนาดของคุกกี้มี จำกัด
ข้อมูลที่บันทึกโดยคุกกี้เดียวไม่เกิน 4K และเบราว์เซอร์จำนวนมาก จำกัด ไซต์เพื่อประหยัดคุกกี้สูงสุด 20 คุกกี้
ความเข้าใจที่เรียบง่ายข้างต้นของเซสชันและคุกกี้คือเนื้อหาทั้งหมดที่ฉันแบ่งปันกับคุณ ฉันหวังว่าคุณจะให้ข้อมูลอ้างอิงและฉันหวังว่าคุณจะสนับสนุน wulin.com มากขึ้น