คุกกี้กับเซสชัน


189

ฉันเริ่มใช้ PHP สองสามเดือนที่ผ่านมา เพื่อสร้างระบบเข้าสู่ระบบสำหรับเว็บไซต์ของฉันฉันอ่านเกี่ยวกับคุกกี้และเซสชันและความแตกต่าง (คุกกี้ถูกเก็บไว้ในเบราว์เซอร์ของผู้ใช้และเซสชันบนเซิร์ฟเวอร์) ในเวลานั้นฉันต้องการคุกกี้ (และผู้ที่ไม่ชอบคุกกี้?!) และเพิ่งพูดว่า: "ใครสนใจฉันไม่ได้จัดการที่ดีกับการเก็บไว้ในเซิร์ฟเวอร์ของฉัน" ดังนั้นฉันไปข้างหน้าและใช้คุกกี้สำหรับ โครงการรับปริญญาตรีของฉัน อย่างไรก็ตามหลังจากส่วนใหญ่ของแอพของฉันฉันได้ยินว่าสำหรับกรณีเฉพาะของการจัดเก็บ ID ของผู้ใช้เซสชันมีความเหมาะสมมากกว่า ดังนั้นฉันจึงเริ่มคิดว่าฉันจะพูดอย่างไรถ้าคณะลูกขุนถามฉันว่าทำไมคุณถึงใช้คุกกี้แทนเซสชัน? ฉันมีเหตุผลนั้น (ฉันไม่ต้องการจัดเก็บข้อมูลภายในเกี่ยวกับผู้ใช้)? หรือมากกว่านั้น
คุณช่วยบอกฉันเกี่ยวกับข้อดี / ข้อเสียของการใช้คุกกี้เพื่อรักษา ID ของผู้ใช้ได้หรือไม่?

ขอบคุณสำหรับทุกคนใน StackOverflow!


2
ทั้งสองวิธีการจัดเก็บข้อมูล คุกกี้ทำในฝั่งไคลเอ็นต์เช่นบนอุปกรณ์เก็บข้อมูลของผู้เยี่ยมชมของคุณ เซสชั่นเป็น "ส่วนขยาย" ที่ชาญฉลาดซึ่งพวกเขาจะเก็บ ID ที่ไม่ซ้ำกันในฝั่งไคลเอ็นต์และข้อมูลจริงทั้งหมดในฝั่งเซิร์ฟเวอร์ เมื่อพวกเขาได้รับรหัสเฉพาะจากคุกกี้ของลูกค้าพวกเขารู้ว่าข้อมูลใดที่จะโหลดบนเซิร์ฟเวอร์ ในกรณีส่วนใหญ่เซสชันจะเป็นสิ่งที่คุณต้องการ อย่างไรก็ตามคุณสามารถจัดการทั้งสองได้ด้วยgithub.com/delight-im/PHP-Cookieด้วยวิธีที่ทันสมัยกว่า
caw

เช่นกัน WordPress หลักละทิ้งการใช้งานของการประชุมหลายปีที่ผ่านมาและตอนนี้ใช้แต่เพียงผู้เดียวคุกกี้ น่าสนใจ ฉันสงสัยว่าพวกเขาทำเช่นนั้นหรือไม่เพื่อให้ง่ายต่อการปรับใช้กับชุดของเซิร์ฟเวอร์ที่มีโหลดบาลานซ์และ / หรือเพื่อลดการออกจากระบบแบบสุ่มเนื่องจากการรวบรวมขยะเซสชัน
Simon East

คำตอบ:


230

แนวคิดนี้จัดเก็บข้อมูลถาวรในการโหลดหน้าเว็บสำหรับผู้เข้าชมเว็บ คุกกี้จัดเก็บโดยตรงบนไคลเอนต์ เซสชั่นใช้คุกกี้เป็นกุญแจสำคัญในการเชื่อมโยงกับข้อมูลที่เก็บไว้ในฝั่งเซิร์ฟเวอร์

ขอแนะนำให้ใช้เซสชันเนื่องจากค่าจริงถูกซ่อนไว้จากไคลเอนต์และคุณควบคุมเมื่อข้อมูลหมดอายุและกลายเป็นไม่ถูกต้อง หากทั้งหมดนั้นขึ้นอยู่กับคุกกี้ผู้ใช้ (หรือแฮ็กเกอร์) สามารถจัดการข้อมูลคุกกี้ของพวกเขาแล้วเล่นคำขอไปยังเว็บไซต์ของคุณ

แก้ไข: ฉันไม่คิดว่าจะมีข้อได้เปรียบในการใช้คุกกี้นอกเหนือจากความเรียบง่าย ดูวิธีนี้ ... ผู้ใช้มีเหตุผลที่จะรู้ ID # ของพวกเขาหรือไม่? โดยทั่วไปฉันจะบอกว่าไม่มีผู้ใช้ไม่จำเป็นต้องมีข้อมูลนี้ การให้ข้อมูลควรถูก จำกัด โดยจำเป็นต้องรู้ จะเป็นอย่างไรถ้าผู้ใช้เปลี่ยนคุกกี้เพื่อให้มี ID ที่แตกต่างกันแอปพลิเคชันของคุณจะตอบสนองอย่างไร มันเสี่ยงต่อความปลอดภัย

ก่อนการประชุมล้วนเป็นความโกรธเกรี้ยว ฉันเก็บค่าคุกกี้ที่ไม่ซ้ำกันบนไคลเอนต์และเก็บข้อมูลถาวรของฉันในฐานข้อมูลพร้อมกับค่าคุกกี้นั้น จากนั้นในคำขอหน้าฉันจับคู่ค่าเหล่านั้นและมีข้อมูลถาวรของฉันโดยไม่ให้ลูกค้าควบคุมสิ่งที่เป็น


29
@JiminyCricket ฉันไม่คิดว่ามันจะเป็นจริง ... ถ้าเป็นเช่นนั้นไม่มีใครจะใช้ตัวแปรเซสชันสำหรับการจัดเก็บผู้ใช้ที่เข้าสู่ระบบในปัจจุบัน - และทุกคนทำ มันจะเป็นความเสี่ยงด้านความปลอดภัยขนาดใหญ่ ค่อนข้างแน่ใจว่าโดยทั่วไปแล้ว ID เซสชันจะได้รับการจัดเก็บเป็นคุกกี้บนเครื่องไคลเอนต์และจากนั้นจะจับคู่ฝั่งเซิร์ฟเวอร์กับข้อมูลเซสชัน เซิร์ฟเวอร์โดยทั่วไปจะไม่ควบคุมเซสชันผ่านที่อยู่ IP แทนที่จะผ่านค่าคุกกี้
John M.

1
ฉันเพิ่งเพิ่งเริ่มใช้คุกกี้เพียงครั้งเดียวอีกครั้งเนื่องจากเซสชันทำให้หน้าเว็บไม่โหลดหากมีอีกหนึ่งรายการที่ถูกเรียกใช้จากเซสชันเดียวกันเว้นแต่คุณจะนำหน้าแต่ละหน้าและทุกหน้าด้วยsession_write_close();เมื่อคุณต้องการ การกลิ้งรหัสประจำตัวของคุณเองและการจับคู่กับคุกกี้ธรรมดานั้นไม่ใช่เรื่องยากและทำให้หน้าเว็บทั้งหมดเป็นไปอย่างราบรื่น
Brian Leishman

คุณคิดว่าฉันควรใช้เซสชันสำหรับการรับรองความถูกต้องหรือไม่? มีความเสี่ยงด้านความปลอดภัยหรือไม่? แฮกเกอร์พยายามเปลี่ยน session-id ของเขาอย่างไรเซิร์ฟเวอร์จะตอบสนองอย่างไร (สมมติว่า session-id ที่เดาได้นั้นถูกต้อง)
O-BL

ใช้เซสชั่นแล้ว 2FA เป็นช่วงที่สามารถถูกแย่งชิง
Zakir Sajib

120

แนวคิดพื้นฐานในการแยกแยะระหว่างสองสิ่งนี้

เซสชั่น:

  1. IDU ถูกเก็บไว้บนเซิร์ฟเวอร์ (เช่นฝั่งเซิร์ฟเวอร์)
  2. ปลอดภัยยิ่งขึ้น (เพราะ 1)
  3. ไม่สามารถตั้งค่าการหมดอายุตัวแปรเซสชันจะหมดอายุเมื่อผู้ใช้ปิดเบราว์เซอร์ (ปัจจุบันจะถูกเก็บไว้เป็นเวลา 24 นาทีเป็นค่าเริ่มต้นใน php)

คุ้กกี้:

  1. IDU ถูกเก็บไว้บนเว็บเบราว์เซอร์ (เช่นฝั่งไคลเอ็นต์)
  2. ไม่ปลอดภัยเนื่องจากแฮกเกอร์สามารถเข้าถึงและรับข้อมูลของคุณได้ (เนื่องจากมี 1)
  3. สามารถตั้งค่าการหมดอายุ (ดูsetcookies ()สำหรับข้อมูลเพิ่มเติม)

เซสชันที่ต้องการเมื่อคุณต้องการจัดเก็บข้อมูล / ค่าระยะสั้นเช่นตัวแปรสำหรับการคำนวณการวัดการสอบถาม ฯลฯ

แนะนำให้ใช้คุกกี้เมื่อคุณต้องการจัดเก็บข้อมูล / ค่าระยะยาวเช่นบัญชีผู้ใช้ (เพื่อให้แม้ว่าจะปิดเครื่องคอมพิวเตอร์เป็นเวลา 2 วันบัญชีของพวกเขาจะยังคงอยู่ในระบบ) ฉันไม่สามารถนึกถึงตัวอย่างมากมายสำหรับคุกกี้ได้เนื่องจากไม่ได้ใช้ในสถานการณ์ส่วนใหญ่


6
ระวัง: นี่ไม่ใช่คำตอบที่ดี มันเริ่มต้นค่อนข้างโอเค แต่สับสนและจบลงด้วยการบิดเบือนข้อมูล นี่ไม่ใช่คำอธิบายเซสชันกับคุกกี้ มันเป็นคำอธิบายเซสชันกับเซสชัน + คุกกี้เซสชั่น ไม่แนะนำให้ใช้คุกกี้เพียงอย่างเดียวตามเหตุผลที่ระบุไว้ เลือกเซสชันคุกกี้เซสชัน + ด้วยเหตุผลที่ระบุไว้
markus

ความผิดพลาดอีกประการหนึ่งคือคุณมีอิทธิพลต่ออายุการใช้งานเซสชั่นผ่านการกำหนดค่า PHP
markus

1
เซสชั่นยังคงตั้งคุกกี้บนเบราว์เซอร์ของผู้ใช้ดังนั้นคำอธิบายฝั่งเซิร์ฟเวอร์ - ไคลเอ็นต์นี้ไม่ถูกต้อง
Zalaboza

การหมดอายุเซสชันสามารถตั้งค่าได้โดยแอปพลิเคชันใด ๆ ได้อย่างง่ายดาย จุดที่สามผิด นอกจากนี้คุณยังลืมจำนวนข้อมูลที่สามารถเก็บไว้ในคุกกี้กับเซสชัน นั่นเป็นจุดที่สำคัญกว่า
saran3h

1
IDU หมายถึงอะไร
Simon East

45
SESSIONS ENDS WHEN USER CLOSES THEIR BROWSER,

COOKIES END DEPENDING ON THE LIFETIME YOU SET FOR IT. SO THEY CAN LAST FOR YEARS

นี่คือความแตกต่างที่สำคัญในการเลือกของคุณ

หากคุณต้องการให้จดจำ ID ได้เป็นเวลานานคุณต้องใช้คุกกี้ มิฉะนั้นหากคุณต้องการให้เว็บไซต์รับรู้ผู้ใช้สำหรับการเข้าชมนี้เท่านั้นเซสชันจะเป็นวิธีที่จะไป

เซสชั่นจะถูกเก็บไว้ในไฟล์เซิร์ฟเวอร์ของคุณจะสร้าง หากต้องการจำว่าไฟล์ใดที่เป็นของผู้ใช้ php จะตั้งคุกกี้บนเบราว์เซอร์ของผู้ใช้ที่เก็บรหัสไฟล์เซสชั่นนี้ดังนั้นในการเยี่ยมชมครั้งต่อไปของพวกเขา php จะอ่านไฟล์นี้และรีโหลดเซสชัน

ตอนนี้ php โดยค่าเริ่มต้นจะล้างเซสชันทุกช่วงเวลาและการตั้งชื่อการประชุมของเซสชันทำให้หมดอายุโดยอัตโนมัติ นอกจากนี้เบราว์เซอร์จะไม่เก็บคุกกี้ที่เก็บรหัสเซสชันไว้เมื่อเบราว์เซอร์ถูกปิดหรือล้างประวัติ

สิ่งสำคัญคือโปรดทราบว่าทุกวันนี้เบราว์เซอร์ยังสนับสนุนเอ็นจิ้นการจัดเก็บอื่นเช่น LocalStorage, SessionStorage และเอ็นจิ้น webdb อื่น ๆ ที่รหัส javascript สามารถใช้เพื่อบันทึกข้อมูลลงในคอมพิวเตอร์ของคุณเพื่อจดจำคุณ หากคุณเปิดคอนโซล javascript ภายใน Facebook ตัวอย่างเช่นและพิมพ์ "localStorage" คุณจะเห็นตัวแปรทั้งหมดที่ Facebook ใช้เพื่อจดจำคุณโดยไม่ต้องใช้คุกกี้


16
ที่จริงแล้วโดยค่าเริ่มต้นเซสชันจะคงอยู่จนกว่าผู้ใช้จะปิดเบราว์เซอร์ แต่สิ่งนี้สามารถเปลี่ยนแปลงได้ในไฟล์ php.ini โดยเปลี่ยน 0 ใน session.cookie_lifetime = 0 เป็นจำนวนวินาทีที่คุณต้องการให้เซสชันใช้งานครั้งสุดท้ายหรือ ใช้ session_set_cookie_params ()
DOK

1
ข้อมูลที่เป็นประโยชน์เพิ่มเติมคำถามดังกล่าวที่ได้รับคำตอบมากมาย .. เยี่ยมมากขอบคุณอีกครั้ง DOK!
Nadjib Mami

1
โปรดจำไว้ว่าไฟล์เซสชั่นจุดล้มเหลวจุดเดียวสามารถสร้างได้ เมื่อแม้แต่การโจมตีรูปแบบดอสขนาดเล็กที่สุดก็เกิดขึ้นผ่านพร็อกซี, ip switcher หรือซอมบี้ไฟล์เซสชั่นจะถูกสร้างบนเซิร์ฟเวอร์หรือ ssd ของคุณ หากคุณไม่สามารถติดตามอ่านเขียนเว็บไซต์ของคุณจะลงไป
Shawn E Carter

ใครสามารถ clafiry: "เซสชั่นสิ้นสุดเมื่อผู้ใช้ปิดเบราว์เซอร์ของเขา" 1. จะเกิดอะไรขึ้นถ้าผู้ใช้นำทาง awya จากหน้า .. จากนั้นกลับไปโดยไม่ต้องปิดเบราว์เซอร์ 2. จะเกิดอะไรขึ้นถ้ามีหน้าต่าง / แท็บหลายเบราว์เซอร์ที่เปิดอยู่ชี้ไปที่ไซต์เดียวกัน แอปพลิเคชันเว็บบางแห่งที่ทำงานสับสนในสถานการณ์นี้ แต่ฉันไม่รู้ว่าใช้คุกกี้ประเภทใด
jcansell

1
@jcansell ดีคุกกี้จะไม่สับสนกับหลายแท็บหรือการนำทางในกรณีเช่นนี้ webapps เหล่านี้ส่วนใหญ่ใช้ localstorage / session storage เพื่อบันทึกข้อมูลโดยใช้ javascript
Zalaboza

20

เมื่อคุณบันทึก #ID เป็นคุกกี้เพื่อจดจำผู้ใช้ที่เข้าสู่ระบบคุณกำลังแสดงข้อมูลแก่ผู้ใช้ที่ไม่เกี่ยวข้องกับพวกเขา นอกจากนี้หากบุคคลที่สามพยายามตั้งค่ารหัสสุ่มเป็นข้อมูลคุกกี้ในเบราว์เซอร์พวกเขาจะสามารถโน้มน้าวใจเซิร์ฟเวอร์ว่าพวกเขาเป็นผู้ใช้ในขณะที่พวกเขาไม่ได้เป็นจริง นั่นคือการขาดความปลอดภัย

คุณใช้คุกกี้แล้วและอย่างที่คุณบอกว่าคุณทำโครงการส่วนใหญ่เสร็จสิ้นแล้ว นอกจากคุกกี้จะมีสิทธิ์ที่เหลืออยู่เป็นเวลานานในขณะที่เซสชันสิ้นสุดเร็วกว่า ดังนั้นเซสชันจึงไม่เหมาะสมในกรณีนี้ ในความเป็นจริงเว็บไซต์และบริการที่มีชื่อเสียงและโด่งดังจำนวนมากใช้คุกกี้และคุณสามารถเข้าสู่ระบบได้เป็นเวลานาน แต่คุณจะใช้วิธีการของพวกเขาในการสร้างกระบวนการเข้าสู่ระบบที่ปลอดภัยได้อย่างไร

นี่คือแนวคิด: คุณสามารถช่วยวิธีการใช้คุกกี้: หากคุณใช้ปุ่มสุ่มแทนรหัสเพื่อจดจำผู้ใช้ที่เข้าสู่ระบบก่อนอื่นคุณจะไม่รั่วไหลข้อมูลหลักของคุณไปยังผู้ใช้แบบสุ่มและอันดับที่สองหากคุณพิจารณาการสุ่ม ปุ่มใหญ่พอมันจะยากสำหรับใครที่จะเดารหัสหรือสร้างรหัสสุ่ม ตัวอย่างเช่นคุณสามารถบันทึกคีย์ความยาว 40 แบบนี้ในเบราว์เซอร์ของผู้ใช้: "KUYTYRFU7987gJHFJ543JHBJHCF5645UYTUYJH54657jguthfn" และมันจะมีโอกาสน้อยกว่าที่ทุกคนจะสร้างคีย์ที่แน่นอนและแสร้งเป็นคนอื่น


1
คำอธิบายที่ดี ฉันใช้ GUID ในโทเค็นเพื่อจำแนกผู้ใช้แต่ละคน
Karthik

17

คำตอบสั้น ๆ

กฎที่เรียงลำดับตามความสำคัญ:

  • กฎ 1. อย่าไว้ใจการป้อนข้อมูลของผู้ใช้: คุกกี้ไม่ปลอดภัย ใช้เซสชันสำหรับข้อมูลที่ละเอียดอ่อน
  • กฎ 2 หากข้อมูลถาวรจะต้องยังคงอยู่เมื่อผู้ใช้ปิดเบราว์เซอร์ใช้คุกกี้
  • กฎข้อที่ 3 หากข้อมูลถาวรไม่จำเป็นต้องคงอยู่เมื่อผู้ใช้ปิดเบราว์เซอร์ให้ใช้เซสชัน
  • กฎข้อที่ 4 อ่านคำตอบโดยละเอียด!

ที่มา: https://www.lucidar.me/en/web-dev/sessions-or-cookies/


คำตอบโดยละเอียด

คุ้กกี้

  • คุกกี้จะถูกเก็บไว้ที่ฝั่งไคลเอ็นต์ (ในเบราว์เซอร์ของผู้เยี่ยมชม)
  • คุกกี้ไม่ปลอดภัย: ค่อนข้างง่ายในการอ่านและเขียนเนื้อหาคุกกี้
  • เมื่อใช้คุกกี้คุณต้องแจ้งผู้เยี่ยมชมตามกฎหมายของยุโรป (GDPR)
  • สามารถตั้งค่าการหมดอายุได้ แต่ผู้ใช้หรือเบราว์เซอร์สามารถเปลี่ยนได้
  • ผู้ใช้ (หรือเบราว์เซอร์) สามารถ (ตั้งค่าเป็น) ปฏิเสธการใช้งานคุกกี้

การประชุม

  • เซสชันถูกเก็บไว้ที่ฝั่งเซิร์ฟเวอร์
  • เซสชันใช้คุกกี้ (ดูด้านล่าง)
  • เซสชันปลอดภัยกว่าคุกกี้ แต่ไม่มีการเปลี่ยนแปลงใด ๆ
  • การหมดอายุถูกตั้งค่าในการกำหนดค่าเซิร์ฟเวอร์ (เช่น php.ini)
  • เวลาหมดอายุเริ่มต้นคือ 24 นาทีหรือเมื่อปิดเบราว์เซอร์
  • การหมดอายุถูกรีเซ็ตเมื่อผู้ใช้รีเฟรชหรือโหลดหน้าใหม่
  • ผู้ใช้ (หรือเบราว์เซอร์) สามารถ (ตั้งค่าเป็น) ปฏิเสธการใช้คุกกี้ดังนั้นเซสชัน
  • ถูกต้องตามกฎหมายคุณต้องแจ้งผู้เข้าเยี่ยมชมเกี่ยวกับคุกกี้ แต่การขาดแบบอย่างยังไม่ชัดเจน

ทางเลือกที่เหมาะสม

เซสชันใช้คุกกี้! ข้อมูลเซสชันถูกเก็บไว้ที่ฝั่งเซิร์ฟเวอร์ แต่ UID จะถูกเก็บไว้ที่ฝั่งไคลเอ็นต์ในคุกกี้ ช่วยให้เซิร์ฟเวอร์จับคู่ผู้ใช้ที่ได้รับกับข้อมูลเซสชันที่ถูกต้อง โพสต์ได้รับการป้องกันและยากที่จะแฮก แต่ไม่สามารถทำลายได้ สำหรับการดำเนินการที่ละเอียดอ่อน (เปลี่ยนอีเมลหรือรีเซ็ตรหัสผ่าน) อย่าพึ่งพาเซสชันหรือคุกกี้: ขอรหัสผ่านผู้ใช้เพื่อยืนยันการดำเนินการ

ไม่ควรจัดเก็บข้อมูลที่ละเอียดอ่อนในคุกกี้ (อีเมลรหัสผ่านที่เข้ารหัสข้อมูลส่วนตัว ... ) โปรดทราบว่าข้อมูลจะถูกเก็บไว้ในคอมพิวเตอร์ต่างประเทศและหากคอมพิวเตอร์นั้นไม่ใช่คอมพิวเตอร์ส่วนตัว (ห้องเรียนหรือคอมพิวเตอร์สาธารณะ) บุคคลอื่นสามารถอ่านเนื้อหาคุกกี้ได้

ข้อมูล Remember-meจะต้องเก็บไว้ในคุกกี้มิฉะนั้นข้อมูลจะหายไปเมื่อผู้ใช้ปิดเบราว์เซอร์ อย่างไรก็ตามอย่าบันทึกรหัสผ่านหรือข้อมูลส่วนบุคคลของผู้ใช้ในคุกกี้ 'Remember-me' จัดเก็บข้อมูลผู้ใช้ในฐานข้อมูลและเชื่อมโยงข้อมูลนี้กับรหัส / คีย์คู่ที่เข้ารหัสไว้ในคุกกี้

หลังจากพิจารณาคำแนะนำก่อนหน้านี้แล้วคำถามต่อไปนี้คือสิ่งที่ช่วยให้คุณเลือกระหว่างคุกกี้และเซสชัน:

ข้อมูลถาวรจะต้องยังคงอยู่เมื่อผู้ใช้ปิดเบราว์เซอร์หรือไม่

  • ถ้าคำตอบคือใช่ใช้คุกกี้
  • ถ้าคำตอบคือไม่ใช้การประชุม

13

จริงๆแล้วเซสชั่นและคุกกี้ไม่ได้แยกจากกันเสมอ บ่อยครั้ง แต่ไม่เสมอไปเซสชันจะใช้คุกกี้

มีคำตอบที่ดีสำหรับคำถามของคุณในคำถามอื่น ๆ ที่นี่ เนื่องจากคำถามของคุณเกี่ยวกับการบันทึก IDU ของผู้ใช้ (หรือ ID) โดยเฉพาะฉันไม่คิดว่ามันจะค่อนข้างซ้ำซ้อนกับคำถามอื่น ๆ เหล่านั้น แต่คำตอบของพวกเขาจะช่วยคุณได้

คุกกี้เทียบกับเซสชั่น

แคช VS คุกกี้ VS เซสชัน?

ความแตกต่างระหว่างเซสชันและคุกกี้คืออะไร?


10

ฉันใช้ทั้งคุกกี้และเซสชันเป็นการส่วนตัว

คุกกี้ใช้เฉพาะเมื่อผู้ใช้คลิกที่ช่องทำเครื่องหมาย"จดจำฉัน" และคุกกี้จะถูกเข้ารหัสและถอดรหัสข้อมูลบนเซิร์ฟเวอร์เท่านั้น หากใครพยายามที่จะแก้ไขคุกกี้ decrypter ของเราสามารถตรวจจับได้และปฏิเสธคำขอ

ฉันได้เห็นเว็บไซต์มากมายที่ข้อมูลการเข้าสู่ระบบถูกเก็บไว้ในคุกกี้ทุกคนสามารถเพียงแค่เปลี่ยน ID ผู้ใช้และชื่อผู้ใช้ในคุกกี้เพื่อเข้าถึงบัญชีทุกคน

ขอบคุณ


2

เซสชันและคุกกี้ไม่เหมือนกัน

เซสชั่นจะใช้ในการจัดเก็บข้อมูลจากหน้าเว็บ ปกติหน้าเว็บจะไม่มีความทรงจำใด ๆ ในการจัดเก็บข้อมูลเหล่านี้ แต่การใช้เราสามารถบันทึกข้อมูลที่จำเป็น

แต่คุกกี้ใช้เพื่อระบุผู้ใช้ การใช้คุกกี้เราสามารถจัดเก็บข้อมูลได้ เป็นส่วนเล็ก ๆ ของข้อมูลที่จะเก็บไว้ในเว็บเบราว์เซอร์ของผู้ใช้ ดังนั้นเมื่อใดก็ตามที่ผู้ใช้เบราว์เซอร์ครั้งต่อไปจะส่งข้อมูลคุกกี้ข้อมูลกลับไปยังเซิร์ฟเวอร์เพื่อรับกิจกรรมก่อนหน้านี้

เครดิต: เซสชันและคุกกี้


เกิดอะไรขึ้นถ้าผู้ใช้ปิดการใช้งานคุกกี้? คุกกี้ระบุผู้ใช้อย่างไร
SohailRajput

1

เซสชันอนุญาตให้คุณเก็บข้อมูลแต่ละชิ้นเหมือนกับคุกกี้ แต่ข้อมูลจะถูกเก็บไว้บนเซิร์ฟเวอร์แทนที่จะเป็นไคลเอ็นต์


0

ดังที่คนอื่น ๆ พูดว่าเซสชั่นฉลาดและมีข้อได้เปรียบมากกว่าในการซ่อนข้อมูลจากลูกค้า

แต่คุกกี้ยังคงมีข้อได้เปรียบอย่างน้อยหนึ่งข้อคุณสามารถเข้าถึงคุกกี้ของคุณได้จาก Javascript (ตัวอย่างเช่นngCookies ) ด้วยเซสชัน PHP คุณไม่สามารถเข้าถึงได้ทุกที่นอกสคริปต์ PHP


1
คุณสามารถ .. ไม่แน่นอนคุณสามารถเข้าถึงมันผ่านทางคำขอ ajax กับสคริปต์ที่ส่งคืนข้อมูลเซสชัน แต่ฉันไม่แน่ใจคุณควร
l00k

0

ฉันจะเลือกเซสชันก่อนอื่นเซสชันปลอดภัยกว่าจากนั้นคุกกี้คุกกี้คือข้อมูลไซต์ลูกค้าและเซสชันเป็นข้อมูลไซต์เซิร์ฟเวอร์ คุกกี้ใช้เพื่อระบุผู้ใช้เนื่องจากเป็นรหัสขนาดเล็กที่ฝังเซิร์ฟเวอร์ของฉันด้วยเบราว์เซอร์คอมพิวเตอร์ของผู้ใช้ ในทางกลับกันเซสชั่นช่วยให้คุณมีความปลอดภัยตัวตนของคุณเพราะเว็บเซิร์ฟเวอร์ไม่ทราบว่าคุณเป็นใครเพราะที่อยู่ HTTP เปลี่ยนสถานะ 192.168.0.1 เป็น 765487cf34ert8ded ...... .. หรือตัวเลขอื่นด้วยความช่วยเหลือของวิธีการ GET และ POST เซสชันเก็บข้อมูลของผู้ใช้ในเซสชัน ID ที่ไม่ซ้ำกันซึ่งแม้แต่ ID ผู้ใช้ก็ไม่สามารถจับคู่กันได้ เซสชันเก็บข้อมูลผู้ใช้คนเดียวในทุกหน้าของแอปพลิเคชันเดียว คุกกี้หมดอายุถูกตั้งค่าด้วยความช่วยเหลือของ setcookies () ในขณะที่การหมดอายุเซสชั่นไม่ได้ตั้งค่ามันจะหมดอายุเมื่อผู้ใช้ปิดเบราว์เซอร์


0

เซสชันคือกลุ่มข้อมูลบนเซิร์ฟเวอร์ที่เชื่อมโยงกับข้อมูลคุกกี้ หากคุณใช้ PHP คุณสามารถตรวจสอบเซสชันได้ บันทึกที่ตั้ง _ เส้นทางและที่จริง "เห็นเซสชัน" คุกกี้เป็นตัวอย่างข้อมูลที่ส่งไปและกลับจากลูกค้า คุกกี้มักจะใช้เพื่ออำนวยความสะดวกเซสชันเพราะมันบอกเซิร์ฟเวอร์ที่ลูกค้าจัดการเซสชันใด มีวิธีอื่นในการทำเช่นนี้ (เคียวรีสตริงข้อความค้นหา ฯลฯ ) แต่คุกกี้มักเป็นสิ่งนี้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.