ดัชนีไดเรกทอรีเว็บเซิร์ฟเวอร์

Article

July 5, 2022

เมื่อไคลเอนต์ HTTP (โดยทั่วไปคือเว็บเบราว์เซอร์) ร้องขอ URL ที่ชี้ไปยังโครงสร้างไดเรกทอรีแทนหน้าเว็บจริงภายในโครงสร้างไดเรกทอรี โดยทั่วไปเว็บเซิร์ฟเวอร์จะให้บริการหน้าเริ่มต้น ซึ่งมักเรียกว่าหน้าหลักหรือ " หน้าดัชนี" ชื่อไฟล์ทั่วไปสำหรับหน้าดังกล่าวคือ index.html แต่เซิร์ฟเวอร์ HTTP สมัยใหม่ส่วนใหญ่มีรายการชื่อไฟล์ที่กำหนดค่าได้ซึ่งเซิร์ฟเวอร์สามารถใช้เป็นดัชนีได้ หากเซิร์ฟเวอร์ได้รับการกำหนดค่าให้รองรับการเขียนสคริปต์ฝั่งเซิร์ฟเวอร์ โดยปกติรายการจะรวมรายการที่อนุญาตให้ใช้เนื้อหาแบบไดนามิกเป็นหน้าดัชนี (เช่น index.cgi, index.pl, index.php, index.shtml, index.jsp, default.asp) แม้ว่ายังคงควรระบุเอาต์พุต HTML (index.html.php หรือ index.html.aspx) ต่อไป เนื่องจากไม่ควรมองข้าม ตัวอย่างคือเว็บเซิร์ฟเวอร์โอเพ่นซอร์สยอดนิยม Apache ซึ่งรายการชื่อไฟล์ถูกควบคุมโดยคำสั่ง DirectoryIndex ในไฟล์การกำหนดค่าเซิร์ฟเวอร์หลักหรือในไฟล์การกำหนดค่าสำหรับไดเร็กทอรีนั้น เป็นไปไม่ได้ที่จะไม่ใช้นามสกุลไฟล์เลย และเป็นกลางต่อวิธีการส่งเนื้อหา และตั้งค่าเซิร์ฟเวอร์ให้เลือกไฟล์ที่ดีที่สุดโดยอัตโนมัติผ่านการเจรจาเนื้อหา หากเซิร์ฟเวอร์ไม่พบไฟล์ที่มีชื่อใด ๆ ที่ระบุไว้ในการกำหนดค่า เซิร์ฟเวอร์อาจส่งคืนข้อผิดพลาด (โดยปกติคือ 403 Index Listing Forbidden หรือ 404 Not Found) หรือสร้างหน้าดัชนีของตัวเองที่แสดงรายการไฟล์ในไดเร็กทอรี โดยปกติตัวเลือกนี้ ซึ่งมักตั้งชื่อว่า autoindex สามารถกำหนดค่าได้เช่นกัน

ประวัติศาสตร์

รูปแบบที่เว็บเซิร์ฟเวอร์ให้บริการไฟล์เริ่มต้นบนพื้นฐานต่อไดเรกทอรีย่อยได้รับการสนับสนุนตั้งแต่ NCSA HTTPd 0.3beta (22 เมษายน 1993) ซึ่งค่าเริ่มต้นจะให้บริการไฟล์ index.html ในไดเรกทอรี CERN HTTPd ได้นำรูปแบบนี้มาใช้ตั้งแต่อย่างน้อย 2.17 เบต้า (5 เมษายน 1994) ซึ่งค่าเริ่มต้นรองรับ Welcome.html และ welcome.html นอกเหนือจาก index.html ที่มาจาก NCSA โดยทั่วไปเว็บเซิร์ฟเวอร์ในภายหลังจะรองรับรูปแบบไฟล์เริ่มต้นนี้ ในรูปแบบใดรูปแบบหนึ่ง โดยปกติแล้วจะกำหนดค่าได้ โดยที่ index.html เป็นหนึ่งในชื่อไฟล์เริ่มต้น

การดำเนินการ

ในบางกรณี หน้าแรกของเว็บไซต์อาจเป็นเมนูตัวเลือกภาษาสำหรับเว็บไซต์ขนาดใหญ่ที่ใช้การกำหนดเป้าหมายตามภูมิศาสตร์ นอกจากนี้ยังสามารถหลีกเลี่ยงขั้นตอนนี้ได้ เช่น โดยใช้การเจรจาเนื้อหา ในกรณีที่ไม่มีไฟล์ index.* ที่รู้จักอยู่ในไดเร็กทอรีที่กำหนด เว็บเซิร์ฟเวอร์อาจได้รับการกำหนดค่าให้แสดงรายการไฟล์ภายในไดเร็กทอรีที่สร้างขึ้นโดยอัตโนมัติแทน ตัวอย่างเช่น ด้วยเว็บเซิร์ฟเวอร์ Apache ลักษณะการทำงานนี้มีให้โดยโมดูล mod_autoindex และควบคุมโดยคำสั่ง Options +Indexes ในไฟล์การกำหนดค่าเว็บเซิร์ฟเวอร์ รายชื่อไดเร็กทอรีอัตโนมัติเหล่านี้บางครั้งมีความเสี่ยงด้านความปลอดภัยเนื่องจากระบุไฟล์ที่มีความละเอียดอ่อนซึ่งอาจไม่ได้มีไว้สำหรับการเข้าถึงแบบสาธารณะ ในกระบวนการที่เรียกว่าการโจมตีการสร้างดัชนีไดเร็กทอรี การกำหนดค่าความปลอดภัยที่ไม่ถูกต้องดังกล่าวอาจช่วยในการโจมตีอื่นๆ เช่น การโจมตีเส้นทางหรือไดเรกทอรี

การแสดง

เมื่อเข้าถึงไดเร็กทอรี วิธีการต่างๆ ของดัชนีที่ใช้ได้อาจมีผลกระทบที่แตกต่างกันต่อการใช้ทรัพยากรระบบปฏิบัติการ (RAM, เวลาของ CPU ฯลฯ) และส่งผลต่อประสิทธิภาพของเว็บเซิร์ฟเวอร์ จากวิธีที่เร็วที่สุดไปช้าที่สุด นี่คือรายการ: โดยใช้ไฟล์ดัชนีคงที่ เช่น: index.html เป็นต้น การใช้คุณสมบัติเว็บเซิร์ฟเวอร์มักจะตั้งชื่อว่า autoindex (เมื่อไม่มีไฟล์ดัชนี) เพื่อให้เว็บเซิร์ฟเวอร์สร้างรายการไดเรกทอรีโดยอัตโนมัติโดยใช้โมดูลภายใน ใช้ไฟล์ที่แปลแล้วซึ่งอ่านโดยตัวแปลโปรแกรมภายในของเว็บเซิร์ฟเวอร์ เช่น index.php; โดยใช้โปรแกรมปฏิบัติการและคอมไพล์ CGI เช่น index.cgi

อ้างอิง