ลดความยุ่งยากในการใช้คลาวด์ พูดคุยกับเจ้าหน้าที่

Home ตั้งรหัสผ่านป้องกันโฟลเดอร์ (Password-Protected Directories) บน Plesk

ตั้งรหัสผ่านป้องกันโฟลเดอร์ (Password-Protected Directories) บน Plesk

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

กลไกเบื้องหลังคือ HTTP Basic Authentication ของเว็บเซิร์ฟเวอร์ ซึ่งส่งรหัสผ่านไปกับทุกคำขอ จึงต้องใช้ร่วมกับ HTTPS เสมอ บทความนี้อ้างอิง Plesk Obsidian บน Linux ตำแหน่งเมนูอาจต่างกันเล็กน้อยตามเวอร์ชันย่อย

สิ่งที่ต้องเตรียม

  • บัญชีเข้าใช้งาน Plesk ของโดเมน
  • เว็บไซต์ที่ใช้ HTTPS ได้แล้ว และแนะนำให้บังคับ HTTPS ตาม บังคับเว็บไซต์ให้ใช้ HTTPS บน Plesk
  • ชื่อโฟลเดอร์ที่ต้องการป้องกัน เทียบกับ Document Root เช่น /private หมายถึง httpdocs/private

หมายเหตุ: ฟีเจอร์นี้ป้องกันการเปิดผ่านเว็บเท่านั้น ไม่ได้เข้ารหัสไฟล์ และไม่มีผลกับการเข้าถึงผ่าน FTP หรือ File Manager ถ้าข้อมูลเป็นความลับระดับสูง ไม่ควรเก็บไว้ในโฟลเดอร์เว็บเลย

ขั้นตอนที่ 1: เปิดหน้า Password-Protected Directories

  1. ล็อกอิน Plesk ไปที่ Websites & Domains แล้วเลือกโดเมน
  2. ในแท็บ Dashboard ของโดเมน คลิก Password-Protected Directories (มักอยู่ในกลุ่ม Security หรือ Files & Databases ขึ้นกับเวอร์ชัน ถ้าหาไม่เจอ ใช้ช่องค้นหาด้านบนของ Plesk พิมพ์ Password-Protected)

ขั้นตอนที่ 2: เพิ่มโฟลเดอร์ที่ต้องการป้องกัน

  1. คลิก Add Protected Directory
  2. ช่อง Directory name ใส่ชื่อโฟลเดอร์เทียบจาก Document Root เช่น /private ถ้าโฟลเดอร์ยังไม่มี Plesk จะสร้างให้ ถ้าต้องการป้องกันทั้งเว็บไซต์ ให้ใส่ /
  3. ช่อง Title of the protected area (บางเวอร์ชันชื่อ Header text) ใส่ข้อความสั้นๆ เช่น Staff only เบราว์เซอร์บางตัวจะแสดงข้อความนี้ในหน้าต่างใส่รหัสผ่าน
  4. Plesk บางเวอร์ชันมีช่องให้เลือกว่าจะป้องกันแบบ SSL/TLS, แบบ non-SSL หรือทั้งสองแบบ ถ้ามี ให้เลือกทั้งสองแบบ
  5. คลิก OK

ขั้นตอนที่ 3: เพิ่มผู้ใช้ที่ได้รับอนุญาต

โฟลเดอร์ที่ป้องกันแล้วแต่ยังไม่มีผู้ใช้ จะไม่มีใครเข้าได้เลย

  1. คลิกชื่อโฟลเดอร์ที่เพิ่งสร้างในรายการ
  2. คลิก Add User
  3. ใส่ Username เช่น staff และตั้ง Password ใช้รหัสที่ยาวและไม่ซ้ำกับรหัสผ่านอื่น เพราะ Basic Authentication ไม่มีระบบล็อกบัญชีเมื่อเดารหัสผิดหลายครั้ง
  4. คลิก OK

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

ตรวจสอบผลลัพธ์

  1. เปิด https://example.com/private/ ในหน้าต่าง Incognito เบราว์เซอร์ต้องแสดงหน้าต่างถามชื่อผู้ใช้และรหัสผ่าน ถ้ากด Cancel ต้องได้หน้า 401 Unauthorized
  2. ทดสอบด้วย curl โดยไม่ใส่รหัสผ่าน
    curl -I https://example.com/private/
    ควรได้ 401 และมีบรรทัด WWW-Authenticate: Basic
  3. ทดสอบพร้อมรหัสผ่าน (คำสั่งนี้จะถามรหัสผ่านโดยไม่แสดงบนจอ)
    curl -I -u staff https://example.com/private/
    ควรได้ 200 หรือ 301/302 ตามที่หน้าในโฟลเดอร์นั้นตอบ ไม่ใช่ 401

จัดการภายหลัง

  • เปลี่ยนรหัสผ่าน: คลิกชื่อโฟลเดอร์ แล้วคลิกชื่อผู้ใช้ ตั้งรหัสใหม่แล้วกด OK
  • ลบผู้ใช้: ติ๊กเลือกผู้ใช้แล้วคลิก Remove
  • ยกเลิกการป้องกัน: ที่หน้ารายการโฟลเดอร์ ติ๊กเลือกโฟลเดอร์แล้วคลิก Remove Protection ตัวโฟลเดอร์และไฟล์ข้างในจะยังอยู่ครบ

ปัญหาที่พบบ่อย

ใส่รหัสถูกแล้วแต่ยังถูกถามซ้ำ

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

ป้องกันโฟลเดอร์ wp-admin ของ WordPress แล้วบางฟังก์ชันหน้าเว็บเสีย

หน้าเว็บ WordPress ฝั่งผู้เข้าชมและปลั๊กอินหลายตัวเรียกไฟล์ wp-admin/admin-ajax.php เมื่อโฟลเดอร์ทั้งหมดถูกป้องกัน คำขอเหล่านั้นจะได้ 401 ทำให้ฟอร์ม ตะกร้าสินค้า หรือปุ่มโหลดเพิ่มทำงานผิดปกติ บนเว็บที่ Apache เป็นผู้ประมวลผล PHP (ค่าเริ่มต้นของ Plesk บน Linux) อาจแก้ได้โดยสร้างไฟล์ httpdocs/wp-admin/.htaccess ที่มีเนื้อหาด้านล่าง เพื่อยกเว้นเฉพาะไฟล์นั้น

<Files "admin-ajax.php">
    Require all granted
</Files>

ทดสอบหลังแก้ว่า curl -I https://example.com/wp-admin/admin-ajax.php ไม่ได้ 401 แล้ว และ https://example.com/wp-admin/ ยังถามรหัสผ่านอยู่ ผลลัพธ์ขึ้นกับการตั้งค่า Apache และ nginx ของเซิร์ฟเวอร์ จึงต้องทดสอบทั้งสองข้อเสมอ ถ้ายังไม่ได้ผล ให้พิจารณาใช้วิธีป้องกันหน้าแอดมินแบบอื่นแทน เช่น เปิดการยืนยันตัวตนสองชั้นของ WordPress

หน้าต่างถามรหัสไม่ขึ้น เข้าได้เลยโดยไม่ต้องใส่รหัส

เบราว์เซอร์อาจยังจำรหัสผ่านจากการทดสอบครั้งก่อน ให้ทดสอบใน Incognito หรือด้วย curl -I ถ้ายังได้ 200 ให้ตรวจว่า Directory name ตรงกับโฟลเดอร์จริง เช่นพิมพ์ /Private แต่โฟลเดอร์ชื่อ private บน Linux ถือเป็นคนละโฟลเดอร์

ลืมรหัสผ่าน

ดูรหัสเดิมไม่ได้ ให้ตั้งรหัสใหม่ในหน้าผู้ใช้ของโฟลเดอร์นั้นตามหัวข้อจัดการภายหลัง

หากตั้งค่าแล้วการป้องกันไม่ทำงานตามที่คาดไว้ ติดต่อทีมงาน THAI DATA CLOUD ได้ที่ https://thaidata.cloud/contact/

ผู้ให้บริการคลาวด์ไทย
เพื่อธุรกิจของคนไทย

"มุ่งมั่น" และ "มั่นคง"
พร้อมรับมือทุกการเติบโต
Trust Cloud
คลาว์ที่ปลอดภัย
คือรากฐานที่มั่นคง
cloud security