ASP Lecture Series (ยี่สิบ) การรักษาความปลอดภัยของแอปพลิเคชัน ASP
ผู้เขียน:Eve Cole
เวลาอัปเดต:2009-05-30 19:58:35
อย่าประมาทความสำคัญของการกำหนดค่าความปลอดภัยอย่างเหมาะสม การกำหนดการตั้งค่าความปลอดภัยที่ไม่ถูกต้องไม่เพียงแต่จะทำให้แอปพลิเคชัน ASP ของคุณถูกแก้ไขโดยไม่จำเป็นเท่านั้น แต่ยังป้องกันไม่ให้ผู้ใช้ที่ถูกต้องเข้าถึงไฟล์ .asp ของคุณอีกด้วย
เว็บเซิร์ฟเวอร์มีวิธีการต่างๆ เพื่อปกป้องแอปพลิเคชัน ASP ของคุณจากการเข้าถึงและการดัดแปลงโดยไม่ได้รับอนุญาต หลังจากที่คุณได้อ่านข้อมูลด้านความปลอดภัยในหัวข้อนี้แล้ว โปรดสละเวลาสักครู่เพื่อตรวจทานเอกสารประกอบการรักษาความปลอดภัยของ Windows NT และเว็บเซิร์ฟเวอร์ของคุณอย่างละเอียด
สิทธิ์ NTFS คุณสามารถป้องกันไฟล์แอปพลิเคชัน ASP ได้โดยใช้สิทธิ์การเข้าถึง NTFS กับแต่ละไฟล์และไดเร็กทอรี สิทธิ์ NTFS เป็นรากฐานของการรักษาความปลอดภัยเว็บเซิร์ฟเวอร์ โดยกำหนดระดับการเข้าถึงไฟล์และไดเร็กทอรีต่างๆ สำหรับผู้ใช้หรือกลุ่มผู้ใช้ เมื่อผู้ใช้ที่มีบัญชี Windows NT ที่ถูกต้องพยายามเข้าถึงไฟล์ที่มีสิทธิ์แบบจำกัด คอมพิวเตอร์จะตรวจสอบรายการควบคุมการเข้าถึงของไฟล์ (ACL) ตารางนี้กำหนดสิทธิ์ที่มอบให้กับผู้ใช้และกลุ่มผู้ใช้ที่แตกต่างกัน หากบัญชีผู้ใช้มีสิทธิ์เปิดไฟล์ คอมพิวเตอร์จะอนุญาตให้ผู้ใช้เข้าถึงไฟล์ได้ ตัวอย่างเช่น เจ้าของแอปพลิเคชันเว็บบนเว็บเซิร์ฟเวอร์จำเป็นต้องเปลี่ยนสิทธิ์ในการดู เปลี่ยนแปลง และลบไฟล์ .asp ของแอปพลิเคชัน อย่างไรก็ตาม ผู้ใช้สาธารณะที่เข้าถึงแอปพลิเคชันควรได้รับสิทธิ์แบบอ่านอย่างเดียวเท่านั้น โดยจำกัดให้พวกเขาดูได้แต่ไม่เปลี่ยนแปลงเว็บเพจของแอปพลิเคชัน
การรักษาความปลอดภัย Global.asa เพื่อปกป้องแอปพลิเคชัน ASP ของคุณอย่างสมบูรณ์ ตรวจสอบให้แน่ใจว่าได้ตั้งค่าการอนุญาตไฟล์ NTFS บนไฟล์ Global.asa ของแอปพลิเคชันสำหรับผู้ใช้หรือกลุ่มที่เหมาะสม หาก Global.asa มีคำสั่งที่ส่งคืนข้อมูลไปยังเบราว์เซอร์และคุณไม่ได้ป้องกันไฟล์ Global.asa ข้อมูลจะถูกส่งกลับไปยังเบราว์เซอร์แม้ว่าไฟล์อื่น ๆ ในแอปพลิเคชันจะได้รับการป้องกันก็ตาม
หมายเหตุ ตรวจสอบให้แน่ใจว่าได้ใช้สิทธิ์ NTFS แบบเดียวกันกับไฟล์ของแอปพลิเคชัน ตัวอย่างเช่น หากคุณจำกัดสิทธิ์ NTFS มากเกินไปสำหรับไฟล์ที่แอปพลิเคชันจำเป็นต้องมีโดยไม่ได้ตั้งใจ ผู้ใช้อาจไม่สามารถดูหรือเรียกใช้แอปพลิเคชันได้ เพื่อป้องกันปัญหาดังกล่าว ให้วางแผนอย่างรอบคอบก่อนกำหนดสิทธิ์ NTFS ให้กับแอปพลิเคชันของคุณ
สิทธิ์ของเว็บเซิร์ฟเวอร์ คุณสามารถจำกัดวิธีที่ผู้ใช้ทั้งหมดสามารถดู เรียกใช้ และจัดการเพจ ASP ของคุณได้โดยการกำหนดค่าสิทธิ์บนเว็บเซิร์ฟเวอร์ของคุณ ต่างจากสิทธิ์ NTFS ซึ่งให้วิธีการควบคุมการเข้าถึงไฟล์แอปพลิเคชันและไดเร็กทอรีของผู้ใช้บางราย สิทธิ์ของเว็บเซิร์ฟเวอร์จะมีผลกับผู้ใช้ทุกคน และไม่แยกความแตกต่างระหว่างประเภทบัญชีผู้ใช้
สำหรับผู้ใช้ที่จะรันแอปพลิเคชัน ASP ของคุณ คุณต้องปฏิบัติตามแนวทางเหล่านี้เมื่อตั้งค่าสิทธิ์ของเว็บเซิร์ฟเวอร์:
อนุญาตสิทธิ์การอ่านหรือสคริปต์บนไดเร็กทอรีเสมือนที่มีไฟล์ .asp
อนุญาตสิทธิ์ "อ่าน" และ "สคริปต์" บนไดเร็กทอรีเสมือนที่มีไฟล์ .asp และไฟล์อื่นๆ ที่มีสคริปต์ (เช่น ไฟล์ .htm ฯลฯ)
อนุญาตสิทธิ์ในการอ่านและดำเนินการบนไดเร็กทอรีเสมือนที่มีไฟล์ .asp และไฟล์อื่นๆ ที่ต้องมีสิทธิ์ในการดำเนินการจึงจะทำงานได้ (เช่น ไฟล์ .exe และ .dll เป็นต้น)
ไฟล์การแมปสคริปต์ การแมปสคริปต์ของแอปพลิเคชันช่วยให้แน่ใจว่าเว็บเซิร์ฟเวอร์ไม่ได้ดาวน์โหลดซอร์สโค้ดของไฟล์ .asp โดยไม่ได้ตั้งใจ ตัวอย่างเช่น แม้ว่าคุณจะตั้งค่าสิทธิ์ในการอ่านสำหรับไดเร็กทอรีที่มีไฟล์ .asp เว็บเซิร์ฟเวอร์ของคุณจะไม่ส่งคืนซอร์สโค้ดสำหรับไฟล์ตราบใดที่ไฟล์ .asp ยังเป็นของแอปพลิเคชันการแมปสคริปต์สำหรับผู้ใช้
ความปลอดภัยของคุกกี้
ASP ใช้คุกกี้ SessionID เพื่อติดตามข้อมูลเว็บเบราว์เซอร์เฉพาะระหว่างการเยี่ยมชมแอปพลิเคชันหรือเซสชัน ซึ่งหมายความว่าคำขอ HTTP ที่มีคุกกี้ที่เกี่ยวข้องจะถือว่ามาจากเว็บเบราว์เซอร์เดียวกัน เว็บเซิร์ฟเวอร์สามารถใช้คุกกี้ SessionID เพื่อกำหนดค่าแอปพลิเคชัน ASP ด้วยข้อมูลเซสชันเฉพาะของผู้ใช้ ตัวอย่างเช่น หากแอปพลิเคชันของคุณเป็นร้านขายเพลงออนไลน์ที่อนุญาตให้ผู้ใช้เลือกและซื้อซีดี คุณสามารถใช้ SessionID เพื่อติดตามการเลือกของผู้ใช้ขณะที่พวกเขาท่องไปทั่วแอปพลิเคชัน
แฮกเกอร์สามารถเดา SessionID ได้หรือไม่?
เพื่อป้องกันไม่ให้แฮกเกอร์คอมพิวเตอร์คาดเดาคุกกี้ SessionID และเข้าถึงตัวแปรเซสชันของผู้ใช้ที่ถูกต้อง เว็บเซิร์ฟเวอร์จะกำหนดหมายเลขที่สร้างขึ้นแบบสุ่มให้กับแต่ละ SessionID เมื่อใดก็ตามที่เว็บเบราว์เซอร์ของผู้ใช้ส่งคืนคุกกี้ SessionID เซิร์ฟเวอร์จะดึงข้อมูล SessionID และหมายเลขที่กำหนด จากนั้นจะตรวจสอบเพื่อดูว่าตรงกับหมายเลขที่สร้างขึ้นที่เก็บไว้บนเซิร์ฟเวอร์หรือไม่ หากตัวเลขทั้งสองตรงกัน ผู้ใช้จะได้รับอนุญาตให้เข้าถึงตัวแปรเซสชัน ประสิทธิผลของเทคนิคนี้อยู่ที่ความยาวของหมายเลขที่กำหนด (64 บิต) ซึ่งทำให้แฮกเกอร์คอมพิวเตอร์คาดเดา SessionID และขโมยเซสชันที่ใช้งานอยู่ของผู้ใช้ได้เกือบเป็นศูนย์
เข้ารหัสคุกกี้ SessionID ที่สำคัญ
แฮกเกอร์คอมพิวเตอร์ที่ดักจับคุกกี้ sessionID ของผู้ใช้สามารถใช้คุกกี้นี้เพื่อแอบอ้างเป็นผู้ใช้ได้ หากแอปพลิเคชัน ASP มีข้อมูลส่วนตัว หมายเลขบัตรเครดิตหรือบัญชีธนาคาร แฮกเกอร์คอมพิวเตอร์ที่มีคุกกี้ที่ถูกขโมยสามารถเริ่มเซสชันที่ใช้งานอยู่ในแอปพลิเคชันและรับข้อมูลนี้ได้ คุณสามารถป้องกันไม่ให้คุกกี้ SessionID ถูกดักจับโดยการเข้ารหัสลิงก์การสื่อสารระหว่างเว็บเซิร์ฟเวอร์ของคุณและเบราว์เซอร์ของผู้ใช้
การป้องกันเนื้อหา ASP ที่ถูกจำกัดโดยใช้กลไกการรับรองความถูกต้อง คุณสามารถกำหนดให้ผู้ใช้แต่ละรายที่พยายามเข้าถึงเนื้อหา ASP ที่ถูกจำกัดต้องมีชื่อผู้ใช้และรหัสผ่านของบัญชี Windows NT ที่ถูกต้อง เมื่อใดก็ตามที่ผู้ใช้พยายามเข้าถึงเนื้อหาที่ถูกจำกัด เว็บเซิร์ฟเวอร์จะทำการรับรองความถูกต้องหรือตรวจสอบข้อมูลประจำตัวของผู้ใช้ เพื่อตรวจสอบว่าผู้ใช้มีบัญชี Windows NT ที่ถูกต้องหรือไม่
เว็บเซิร์ฟเวอร์รองรับวิธีการรับรองความถูกต้องต่อไปนี้:
การตรวจสอบสิทธิ์ขั้นพื้นฐานจะแจ้งให้ผู้ใช้ระบุชื่อผู้ใช้และรหัสผ่าน
การรับรองความถูกต้องคำขอ/การตอบสนองของ Windows NT เข้ารหัสลับรับข้อมูลประจำตัวผู้ใช้จากเว็บเบราว์เซอร์ของผู้ใช้
อย่างไรก็ตาม เว็บเซิร์ฟเวอร์จะรับรองความถูกต้องของผู้ใช้เฉพาะในกรณีที่การเข้าถึงแบบไม่ระบุชื่อถูกห้ามหรือจำกัดโดยสิทธิ์ของระบบไฟล์ Windows NT
การรักษาความปลอดภัยสคริปต์ Metabase ASP ที่เข้าถึง metabase จำเป็นต้องมีสิทธิ์ของผู้ดูแลระบบบนคอมพิวเตอร์ที่เว็บเซิร์ฟเวอร์กำลังทำงานอยู่ เมื่อเรียกใช้สคริปต์เหล่านี้จากคอมพิวเตอร์ระยะไกล คุณต้องเชื่อมต่อผ่านการเชื่อมต่อที่มีการรับรองความถูกต้อง เช่น การใช้การรับรองความถูกต้องคำขอ/การตอบสนองของ Windows NT คุณควรสร้างเซิร์ฟเวอร์หรือไดเร็กทอรีสำหรับไฟล์ .asp สำหรับผู้ดูแลระบบ และตั้งค่าวิธีการตรวจสอบความปลอดภัยของไดเร็กทอรีเป็นการรับรองความถูกต้องคำขอ/การตอบสนองของ Windows NT ในปัจจุบัน การรับรองความถูกต้องคำขอ/ตอบกลับของ Windows NT ได้รับการสนับสนุนโดย Microsoft Internet Explorer เวอร์ชัน 2.0 หรือใหม่กว่าเท่านั้น
รักษาความปลอดภัยของแอปพลิเคชันโดยใช้ SSL
เนื่องจากเป็นคุณลักษณะการรักษาความปลอดภัยของเว็บเซิร์ฟเวอร์ โปรโตคอล Secure Sockets Layer (SSL) 3.0 จึงมีวิธีการเสมือนที่ปลอดภัยและโปร่งใสในการสร้างการเชื่อมต่อการสื่อสารที่เข้ารหัสกับผู้ใช้ SSL ช่วยให้มั่นใจในการรับรองความถูกต้องของเนื้อหาเว็บและสามารถยืนยันตัวตนของผู้ใช้ที่เข้าถึงเว็บไซต์ที่ถูกจำกัดได้อย่างน่าเชื่อถือ
ด้วย SSL คุณสามารถกำหนดให้ผู้ใช้พยายามเข้าถึงแอปพลิเคชัน ASP แบบจำกัดเพื่อสร้างการเชื่อมต่อที่เข้ารหัสกับเซิร์ฟเวอร์ของคุณ ซึ่งจะช่วยป้องกันการแลกเปลี่ยนข้อมูลสำคัญระหว่างผู้ใช้และแอปพลิเคชันไม่ให้ถูกดักจับ
การรักษาความปลอดภัยสำหรับไฟล์ที่รวม หากคุณรวมไฟล์ที่อยู่ในไดเร็กทอรีที่เปิดใช้งาน SSL จากไฟล์ .asp ที่อยู่ในไดเร็กทอรีรากเสมือนที่ไม่ได้รับการป้องกัน SSL จะไม่นำไปใช้กับไฟล์ที่รวมไว้ ดังนั้น เพื่อให้แน่ใจว่ามีการใช้ SSL ตรวจสอบให้แน่ใจว่าทั้งไฟล์ที่รวมและรวมอยู่ในไดเร็กทอรีที่เปิดใช้งาน SSL
การตรวจสอบสิทธิ์ไคลเอ็นต์ วิธีที่ปลอดภัยมากในการควบคุมการเข้าถึงแอปพลิเคชัน ASP ของคุณคือการกำหนดให้ผู้ใช้เข้าสู่ระบบด้วยการตรวจสอบสิทธิ์ไคลเอ็นต์ ข้อมูลประจำตัวของลูกค้าคือบัตรประจำตัวดิจิทัลที่มีข้อมูลประจำตัวของผู้ใช้และการทำงานในลักษณะเดียวกับการระบุตัวตนแบบดั้งเดิม เช่น หนังสือเดินทางหรือใบขับขี่ ผู้ใช้มักจะได้รับคุณสมบัติของลูกค้าจากองค์กรบุคคลที่สามที่ได้รับความไว้วางใจ ซึ่งจะยืนยันข้อมูลประจำตัวของผู้ใช้ก่อนที่จะออกใบรับรองคุณสมบัติ (โดยทั่วไปองค์กรดังกล่าวจะขอชื่อ ที่อยู่ หมายเลขโทรศัพท์ และชื่อองค์กร ระดับรายละเอียดในข้อมูลนี้จะแตกต่างกันไปขึ้นอยู่กับระดับสถานะที่กำหนด)
เมื่อใดก็ตามที่ผู้ใช้พยายามเข้าสู่ระบบแอปพลิเคชันที่ต้องมีการตรวจสอบสิทธิ์ เว็บเบราว์เซอร์ของผู้ใช้จะส่งข้อมูลประจำตัวของผู้ใช้ไปยังเซิร์ฟเวอร์โดยอัตโนมัติ ถ้าคุณลักษณะการแมปคุณสมบัติ Secure Sockets Layer (SSL) ของเว็บเซิร์ฟเวอร์ได้รับการกำหนดค่าอย่างถูกต้อง เซิร์ฟเวอร์สามารถตรวจสอบข้อมูลประจำตัวของผู้ใช้ก่อนที่จะให้สิทธิ์การเข้าถึงแอปพลิเคชัน ASP
สคริปต์ ASP สำหรับการจัดการการรับรองคุณสมบัติ ในฐานะนักพัฒนาแอปพลิเคชัน ASP คุณสามารถเขียนสคริปต์เพื่อตรวจสอบว่ามีคุณสมบัติหรือไม่ และอ่านฟิลด์คุณสมบัติ ตัวอย่างเช่น คุณสามารถเข้าถึงฟิลด์ชื่อผู้ใช้และฟิลด์ชื่อบริษัทได้จากคุณสมบัติ Active Server Pages เก็บข้อมูลคุณสมบัติไว้ในคอลเลกชัน ClientCertificate ของออบเจ็กต์คำขอ
เว็บเซิร์ฟเวอร์ต้องได้รับการกำหนดค่าให้ยอมรับหรือต้องการคุณสมบัติของไคลเอ็นต์ก่อนจึงจะสามารถประมวลผลผ่าน ASP ได้ มิฉะนั้น คอลเลกชัน ClientCertificate จะว่างเปล่า