ฉันกำลังปกป้องไฟล์ CSV ในไดเร็กทอรีนั้น พวกเขาจะหายไปเมื่อมีการตั้งค่าคำสั่งการตรวจสอบสิทธิ์นั้น มันปรากฏขึ้นเมื่อฉันลบออก ฉันต้องการที่จะเห็นไฟล์เป็นอย่างน้อย แต่เมื่อเข้าถึงไฟล์เหล่านี้ จะมีการแจ้งเตือนให้ตรวจสอบสิทธิ์
เมื่อสร้างรายชื่อไดเร็กทอรีโดยใช้ mod_autoindex จะมีการออกคำขอย่อยภายในสำหรับแต่ละไฟล์ที่ปรากฏในรายการไดเร็กทอรี เมื่อใช้ก <FilesMatch "^(.*).csv$">
คอนเทนเนอร์ จากนั้นจะถูกประมวลผลสำหรับคำขอย่อยเหล่านี้ ดังนั้นรายการของไฟล์เหล่านี้ในรายการไดเร็กทอรีจึงถูกบล็อกด้วย
อีกทางเลือกหนึ่งของการใช้ <FilesMatch>
คำสั่งคือการใช้ <If>
การแสดงออกและการทดสอบกับ THE_REQUEST
ตัวแปรเซิร์ฟเวอร์แทน เพียงเท่านี้ ประสบความสำเร็จ เมื่อ .csv
ผู้ใช้ร้องขอไฟล์จริง ๆ ไม่ใช่เมื่อเรียกดูรายการไดเร็กทอรี
ตัวอย่างเช่น:
# ต้องเปิดใช้งานรายชื่อไดเรกทอรี (mod_autoindex)
ตัวเลือก + ดัชนี
# ป้องกันการเข้าถึงไฟล์ CSV แต่ยังคงมองเห็นได้ในรายการไดเร็กทอรี
<ถ้า "%{THE_REQUEST} =~ m#\.csv(\s|\?)#">
AuthName "ไดอะล็อกพรอมต์"
AuthType พื้นฐาน
AuthUserFile /xxxxx/ทดสอบ
ต้องการผู้ใช้ที่ถูกต้อง
</หาก>
THE_REQUEST
มีบรรทัดแรกของคำขอ HTTP เช่น. รับ /foo/test.csv HTTP/1.1
(ในกรณีของคำขอ GET สำหรับ /foo/test.csv
) - และไม่เปลี่ยนแปลงตลอดคำขอ ดังนั้นเมื่อร้องขอไดเร็กทอรีเอง เช่น /ฟู/
จากนั้นบล็อกที่ปิดล้อมจะไม่ถูกประมวลผล และรายการไฟล์เหล่านี้จะไม่ถูกบล็อก
ภาวะแทรกซ้อนที่เพิ่มขึ้นก็คือ THE_REQUEST
มี URL ทั้งหมดตามที่ร้องขอ ซึ่งอาจรวมถึงสตริงข้อความค้นหา ดังนั้นการตรวจสอบ (\s|\?)
(เช่น. ช่องว่าง หรือ ตัวอักษร ?
) คือการหลีกเลี่ยงการข้ามการตรวจสอบรหัสผ่านโดยการรวมสตริงข้อความค้นหา เช่น. /foo/test.csv?anything
.