นักพัฒนาหลายคนไม่เคยพิจารณาแนวคิดของรัฐก่อนส่งแอพพลิเคชั่นไปยังเว็บ ดังที่ได้กล่าวไว้ก่อนหน้านี้เว็บเป็นสภาพแวดล้อมที่ไร้สัญชาติ ดังนั้นเราควรหารือว่ารัฐคืออะไรและเข้าใจวิธีการที่สามารถหลีกเลี่ยงปัญหาได้
คำจำกัดความที่ถูกต้องของสถานะ
ในโปรแกรมผู้ใช้เดี่ยวเมื่อสร้างแอปพลิเคชันที่เรียกใช้งานได้เช่นการใช้ VB เพื่อสร้างไฟล์. exe คุณสามารถประกาศตัวแปรทั่วโลก (หรือสาธารณะ) แล้วเข้าถึงได้ทุกที่ในรหัส ค่าช่วงเวลานั้นถูกต้องและเข้าถึงได้ตลอดเวลาที่แอปพลิเคชันกำลังทำงานอยู่
สำหรับโซลูชันไคลเอนต์/เซิร์ฟเวอร์แบบดั้งเดิมเช่นระบบที่แอปพลิเคชันที่ใช้ไคลเอนต์เข้าถึงเอ็นจินฐานข้อมูลเซิร์ฟเวอร์แต่ละไคลเอนต์จะสร้างการเชื่อมต่อกับแอปพลิเคชันเซิร์ฟเวอร์และฐานข้อมูล การเชื่อมต่อนี้มักจะสร้างขึ้นโดยการตรวจสอบผู้ใช้
กระบวนการตรวจสอบเป็นกระบวนการทั่วไปในการระบุผู้ใช้ซึ่งพิสูจน์ได้ว่าเป็นผู้ใช้ที่ถูกกฎหมายผ่านการรวมกันของชื่อผู้ใช้และรหัสผ่าน
เมื่อได้รับการรับรองความถูกต้องแล้วการเชื่อมต่อจะถูกสร้างขึ้นระหว่างไคลเอนต์และแอปพลิเคชันที่ใช้เซิร์ฟเวอร์ซึ่งยังคงใช้ได้ตลอดเวลาที่ผู้ใช้ใช้แอปพลิเคชัน สิ่งนี้จะเกิดขึ้นเมื่อผู้ใช้ลงทะเบียนบนเซิร์ฟเวอร์ Windows 2000 หมัก เมื่อใดก็ตามที่ผู้ดูแลระบบใช้ยูทิลิตี้ผู้ใช้ Active Directory และคอมพิวเตอร์ (คลิกรายการการจัดการไดเรกทอรีในตัวเลือกเครื่องมือการดูแลระบบในเมนูเริ่มต้น) เพื่อสังเกตการเชื่อมต่อผู้ใช้ที่ใช้งานอยู่ กระบวนการนี้เหมือนกันในหลาย ๆ ระบบเช่น Microsoft SQL Server
การเชื่อมต่อถาวรนี้หมายความว่าเมื่อผู้ใช้ส่งคำแนะนำหรือคำขอไปยังเซิร์ฟเวอร์เซิร์ฟเวอร์จะระบุผู้ใช้แต่ละคนได้อย่างง่ายดาย การตอบสนองของเซิร์ฟเวอร์เดียวกันหรือข้อมูลผู้ใช้อื่น ๆ สามารถส่งกลับไปยังผู้ใช้ได้โดยตรง มีการระบุเพิ่มเติมว่าเซิร์ฟเวอร์สามารถจัดเก็บค่าและข้อมูลที่เกี่ยวข้องกับลูกค้าแต่ละรายได้ง่ายขึ้นและมอบให้กับลูกค้าที่เกี่ยวข้องเมื่อจำเป็น แน่นอนแอปพลิเคชันเซิร์ฟเวอร์สามารถมีตัวแปรหลักทั่วโลกสำหรับผู้ใช้ในการเข้าถึงเมื่อจำเป็น
ความสามารถในการระบุคำขอจากไคลเอนต์แต่ละรายและบันทึกค่าของผู้ใช้ที่เกี่ยวข้องในหน่วยความจำถือเป็นสถานะ รัฐสามารถพิจารณาเพื่อแสดงถึงคุณค่าสภาพแวดล้อมและตัวแปรภายในของแอปพลิเคชันของผู้ใช้และเรียกใช้ผ่านกระบวนการทั้งหมดของแอปพลิเคชันและการเชื่อมต่อผู้ใช้
ความสำคัญของสถานะ
หากคุณตั้งใจที่จะสร้างแอปพลิเคชันบนเว็บไซต์ที่มีปฏิสัมพันธ์กับผู้ใช้แทนที่จะเป็นเว็บไซต์ที่แสดงเฉพาะหน้าอิสระคุณจะต้องสามารถให้สถานะแยกต่างหากสำหรับผู้ใช้แต่ละคน สิ่งนี้อาจจำชื่อของพวกเขาได้หรืออาจเป็นการจัดเก็บข้อมูลอ้างอิงวัตถุหรือชุดบันทึกที่แตกต่างกันสำหรับผู้ใช้แต่ละคน หากคุณไม่สามารถทำสิ่งนี้ได้หน้าเว็บ ASP จะไม่สามารถทำอะไรได้มากกว่านี้เพราะเมื่อหน้าถูกดำเนินการตัวแปรและข้อมูลอื่น ๆ ที่เกี่ยวข้องในหน้าจะถูกทำลาย เมื่อผู้ใช้ร้องขอหน้าถัดไปข้อมูลทั้งหมดที่ให้ไว้ในหน้านี้จะหายไป
ดังนั้นจึงจำเป็นต้องหาวิธีการบันทึกสถานะของผู้เข้าชมแต่ละคน เป็นสิ่งสำคัญมากที่จะสามารถจัดเก็บค่าทั่วโลกสำหรับผู้ใช้ทุกคน ตัวอย่างเช่นเคาน์เตอร์การเข้าถึงแบบเว็บสไตล์หรือการคลิกหน้าเว็บที่ไม่ได้ให้ตัวนับผู้ใช้แต่ละคนและผู้ใช้มักต้องการดูจำนวนผู้เข้าชมทั้งหมดไม่ใช่แค่จำนวนการเข้าชมที่พวกเขาเยี่ยมชม จำนวนผู้เข้าชมจะต้องถูกเก็บไว้ในสถานะระดับแอปพลิเคชันไม่ใช่กับสถานะระดับผู้ใช้
นี่ไม่ใช่ปัญหาที่เพิ่งเกิดขึ้น ดังนั้นจึงมีวิธีแก้ปัญหาแบบดั้งเดิมมากมายสำหรับการจัดเก็บสถานะบนเว็บ ผู้ดูแลเว็บไซต์ต้องการทราบว่าผู้เข้าชมเคยเยี่ยมชมเว็บไซต์ของพวกเขามาก่อนและถ้าเป็นเช่นนั้นพวกเขามีกี่ครั้งที่พวกเขาเข้าชม? เยี่ยมชมเว็บไซต์อื่น ๆ เป็นประจำ สิ่งนี้จะทำให้ดีขึ้นในการกำหนดเป้าหมายการโฆษณา ทั้งหมดนี้ต้องการวิธีจัดเก็บข้อมูลเกี่ยวกับคำขอหน้าเว็บที่สร้างโดยผู้ใช้ในระหว่างการเข้าถึงหรือระหว่างการเยี่ยมชมแต่ละครั้ง
สร้างสถานะบนเว็บ
วิธีทั่วไปในการให้สถานะระหว่างคำขอหน้าและการเข้าถึงไซต์คือผ่านคุกกี้ เราได้เห็นในบทก่อนหน้าว่าจะจัดเก็บค่าที่เกี่ยวข้องในคอมพิวเตอร์ของลูกค้าซึ่งจะถูกส่งไปพร้อมกับคำขอแต่ละหน้าไปยังโดเมนที่ใช้ได้กับคุกกี้นี้ โดยการตรวจสอบและอัปเดตคุกกี้ด้วย ASP เป็นไปได้ที่จะรักษาสถานะให้อยู่ในระดับหนึ่ง ข้อมูลที่รวมอยู่สามารถใช้เพื่อระบุผู้ใช้แล้วเชื่อมต่อผู้ใช้กับชุดของค่าที่สอดคล้องกันที่เก็บไว้
ตัวอย่างเช่นสามารถตรวจพบได้ว่าคำขอของผู้ใช้มีคุกกี้ที่ระบุไซต์หรือไม่ หากไม่รวมผู้ใช้จะได้รับการกำหนดตัวตนบางประเภทระบุตัวเลขและเก็บไว้ในคุกกี้ที่มีระยะเวลานาน ทุกครั้งที่ผู้ใช้เยี่ยมชมเว็บไซต์นี้ในอนาคตเขาจะสามารถตรวจจับคุกกี้และอัปเดตข้อมูลที่มีอยู่ในนั้น ข้อมูลเกี่ยวกับจำนวนและระยะเวลาของการเข้าชมสามารถรวบรวมและเก็บไว้บนเซิร์ฟเวอร์เพื่อใช้ในอนาคต
แต่จะเกิดอะไรขึ้นถ้าผู้ใช้โอนไปยังคอมพิวเตอร์เครื่องอื่นหรือลบคุกกี้หรือเบราว์เซอร์ของพวกเขาปฏิเสธที่จะรับคุกกี้ที่ส่งมาให้พวกเขา? ในกรณีนี้รัฐไม่สามารถรักษาได้เพราะพวกเขาจะไม่ได้รับการยอมรับในครั้งต่อไป หากคุณเปิดคำเตือนก่อนที่จะยอมรับตัวเลือกคุกกี้ในเบราว์เซอร์ของคุณแล้วท่องไปรอบ ๆ ไซต์ขนาดใหญ่สองสามแห่งคุณจะเข้าใจความหมาย
1. ผู้เข้าชมที่ไม่ระบุชื่อและผู้เยี่ยมชมที่ได้รับอนุญาต
หากคุณคิดว่าคุกกี้เป็นทางออกที่เลอะเทอะเล็กน้อยคุณสามารถใช้วิธีที่ตรงไปตรงมามากขึ้น วิธีหนึ่งที่ไซต์หลายแห่งใช้คือการปรากฏตัวในกล่องโต้ตอบเข้าสู่ระบบเมื่อผู้เข้าชมคลิกบนเว็บไซต์หรือเมื่อหน้าเว็บที่ต้องมีการตรวจสอบตัวตน ผู้เข้าชมจะต้องลงทะเบียนก่อนและรับการรวมชื่อผู้ใช้/รหัสผ่านบางประเภทเพื่ออนุญาตให้เข้าถึงไซต์หรือหน้าเว็บที่เกี่ยวข้อง
เพื่อพิสูจน์ว่าผู้เข้าชมเป็นผู้ใช้ที่รู้จักและถูกต้องตามกฎหมายคุกกี้ที่วางไว้ในคอมพิวเตอร์ของผู้เข้าชมจะบันทึกข้อมูลการลงทะเบียนโดยละเอียดหรือคีย์ที่ระบุว่าตัวตนได้รับการตรวจสอบแล้ว ในเวลาเดียวกันข้อมูลรายละเอียดของผู้เข้าชมจะถูกบันทึกไว้อย่างถาวรบนเซิร์ฟเวอร์และพร้อมที่จะใช้เมื่อเข้าถึงอีกครั้ง หากผู้เข้าชมมีคุกกี้ในเบราว์เซอร์ของเขาเขาสามารถเข้าถึงเว็บไซต์ได้อย่างอิสระเพราะได้รับการยืนยันแล้ว
หากคุกกี้ไม่มีระยะเวลาที่ถูกต้อง (หมดอายุ) ค่าของคุกกี้จะหายไปโดยอัตโนมัติเมื่อเบราว์เซอร์ถูกปิดและจะต้องลงทะเบียนและตรวจสอบอีกครั้งในการเข้าชมครั้งต่อไป แน่นอนถ้าคุณปฏิเสธที่จะรับคุกกี้หรือลบคุกกี้คุณสามารถรับกล่องโต้ตอบลงทะเบียนได้อีกครั้งเท่านั้น ด้วยวิธีนี้หากไม่ได้รับการยอมรับเว็บไซต์ไม่สามารถเข้าถึงได้
ด้วยการบังคับให้ผู้ใช้ลงทะเบียนกับเว็บเซิร์ฟเวอร์เช่นเดียวกับการลงทะเบียนไปยังเครือข่ายของตนเองประสิทธิภาพการรักษาความปลอดภัยโดยรวมของ Windows 2000 ให้ความสามารถในการตรวจสอบที่แข็งแกร่งและปลอดภัยยิ่งขึ้น อย่างไรก็ตามสิ่งนี้สามารถใช้งานได้กับเบราว์เซอร์กับ Internet Explorer 3.0 ขึ้นไปเท่านั้น IIS ยังสามารถใช้การตรวจสอบขั้นพื้นฐานเพื่ออนุญาตให้เบราว์เซอร์ที่ไม่ใช่ Microsoft ลงทะเบียนเว็บเซิร์ฟเวอร์
2. ไม่มีผู้เข้าชมที่ไม่ระบุชื่ออีกต่อไป
เมื่อใช้ ASP บนเว็บเซิร์ฟเวอร์ IIS ผู้ใช้สามารถติดตามได้ในเซสชันปัจจุบันเว้นแต่ผู้ใช้จะออกจากเว็บไซต์ไปยังเว็บไซต์อื่นหรือปิดเบราว์เซอร์ ต่อมาในบทนี้คุณจะเห็นว่าคุณลักษณะนี้ใช้เพื่อระบุผู้เข้าชมข้อมูลท้องถิ่นของผู้ใช้และให้สถานะ ต่อไปนี้คือการอภิปรายว่ามันทำงานอย่างไรเมื่อเทียบกับโซลูชันที่กล่าวถึงแล้ว
ASP และ IIS เสนอแนวคิดของเซสชันผู้ใช้ร่วมกันโต้ตอบผ่านวัตถุเซสชัน ASP เมื่อผู้เข้าชมแต่ละคนเข้าถึงเว็บเพจ ASP เป็นครั้งแรกบนเซิร์ฟเวอร์ให้สร้างวัตถุเซสชันใหม่และเป็นอิสระสำหรับเขากำหนดหมายเลขประจำตัวเซสชันให้กับเซสชันและเพิ่มตัวระบุเซสชันที่เข้ารหัสรุ่นพิเศษ
เส้นทางของคุกกี้ (ดูบทก่อนหน้าสำหรับคำอธิบายของแอตทริบิวต์คุกกี้) ถูกตั้งค่าเป็นเส้นทางรูทของแอปพลิเคชัน ASP ที่ทำงานบนเซิร์ฟเวอร์ สิ่งนี้น่าจะอยู่ในไดเรกทอรีรูทของเว็บไซต์เริ่มต้น (เช่น /) แต่อาจเป็นค่าอื่น (ดูในภายหลัง) ค่าหมดอายุไม่ได้มีให้ในคุกกี้ดังนั้นเมื่อเบราว์เซอร์ปิดค่าคุกกี้จะหายไป
เมื่อใดก็ตามที่ผู้ใช้รายนี้เข้าชมหน้าเว็บ ASP นี้ ASP จะค้นหาคุกกี้นี้ ชื่อ aspsessionIdxxxxxxxxx โดยที่แต่ละ x เป็นอักขระตัวอักษร จากคอลเลกชัน ServerVariables ที่แสดงในรูปที่ 2-7 ในบทที่ 2 คุณสามารถดูได้ในส่วนหัว HTTP
อย่างไรก็ตามคุกกี้นี้ไม่ปรากฏในคำขอ cookies หรือ response.cookies คอลเลกชันซึ่ง ASP ซ่อนอยู่ แต่ยังคงบันทึกไว้ในเบราว์เซอร์ สำหรับคำขอ ASP หน้าเว็บแต่ละครั้ง ASP จะต้องดูค่า ค่าที่มีอยู่ในคุกกี้นี้บ่งบอกถึงเซสชันของผู้ใช้ ดังนั้นเนื้อหาของวัตถุเซสชันที่เกี่ยวข้อง (ซึ่งได้รับการประมวลผลในหน่วยความจำและมีค่าทั้งหมดที่ดำเนินการในระหว่างกระบวนการขอหน้าก่อนหน้า) สามารถส่งไปยังสคริปต์ในหน้าเว็บ ASP ได้
แน่นอนตามที่กล่าวไว้ก่อนหน้านี้หากเบราว์เซอร์ลูกค้าไม่ได้รับหรือสนับสนุนคุกกี้เหล่านี้การประมวลผลนี้จะล้มเหลว ในกรณีนี้ไม่สามารถสร้างเซสชัน ASP ได้และสถานะของผู้เข้าชมนี้จะไม่ได้รับการดูแลโดยอัตโนมัติ