HTTP 403 “ต้องห้าม”: สาเหตุ ป้องกัน และแก้ไข
เผยแพร่แล้ว: 2023-09-01- HTTP 403 คืออะไร
- สาเหตุทั่วไป
- วินิจฉัย
- วิธีการป้องกัน
- วิธีการแก้ไข
- ข้อผิดพลาดที่เกี่ยวข้อง
HTTP 403 หมายถึง "ต้องห้าม" และระบุว่าเซิร์ฟเวอร์เข้าใจคำขอของลูกค้า แต่ปฏิเสธที่จะปฏิบัติตาม
บทความนี้มีจุดมุ่งหมายเพื่อให้ความกระจ่างเกี่ยวกับแก่นแท้ของ HTTP 403 เปิดเผยสาเหตุที่พบบ่อย แนะนำขั้นตอนการวินิจฉัย และนำเสนอเทคนิคการป้องกันและแก้ไข
นอกจากนี้เรายังจะเน้นข้อผิดพลาดที่เกี่ยวข้องเพื่อให้ความเข้าใจที่ครอบคลุม
HTTP 403 คืออะไร

HTTP 403 เป็นรหัสสถานะที่ระบุว่า "ต้องห้าม" เมื่อพบปัญหา ระบบจะแจ้งให้ไคลเอ็นต์ทราบว่าเซิร์ฟเวอร์เข้าใจคำขอแต่ปฏิเสธที่จะดำเนินการให้เสร็จสิ้น
ต่างจากสถานะ 401 “ไม่ได้รับอนุญาต” ซึ่งเกี่ยวข้องกับปัญหาเกี่ยวกับการตรวจสอบสิทธิ์ผู้ใช้ ข้อผิดพลาด 403 บ่งชี้ว่าการตรวจสอบสิทธิ์อาจสำเร็จแล้ว แต่ผู้ใช้ที่ได้รับการตรวจสอบสิทธิ์ยังคงไม่มีสิทธิ์ที่จำเป็นในการเข้าถึงทรัพยากรที่ร้องขอ
สาเหตุทั่วไป
ข้อผิดพลาด HTTP 403 อาจเกิดขึ้นได้จากหลายสถานการณ์:
- สิทธิ์ไม่เพียงพอ : ผู้ใช้อาจไม่มีสิทธิ์ที่จำเป็นในการเข้าถึงทรัพยากรเฉพาะบนเซิร์ฟเวอร์
- ข้อจำกัดทางภูมิศาสตร์ : เนื้อหาเว็บบางส่วนอาจจำกัดเฉพาะผู้ใช้จากภูมิภาคหรือประเทศที่ระบุเท่านั้น
- การบล็อก IP : เซิร์ฟเวอร์อาจบล็อกที่อยู่ IP บางอย่างเนื่องจากข้อกังวลด้านความปลอดภัยหรือกิจกรรมที่น่าสงสัยก่อนหน้านี้
- กฎ .htaccess ที่เข้มงวด : กฎที่ไม่ถูกต้องหรือเข้มงวดเกินไปในไฟล์ .htaccess บนเซิร์ฟเวอร์ Apache อาจทำให้เกิดข้อผิดพลาด 403 ได้
- โปรโตคอลความปลอดภัยของเซิร์ฟเวอร์ : เซิร์ฟเวอร์บางแห่งอาจมีโปรโตคอลความปลอดภัยที่บล็อกคำขอจากตัวแทนผู้ใช้หรือเบราว์เซอร์บางตัว
วินิจฉัย
หากต้องการระบุสาเหตุหลักของข้อผิดพลาด HTTP 403 ให้พิจารณาขั้นตอนต่อไปนี้:
- URL การตรวจสอบ : ตรวจสอบให้แน่ใจว่ามีการเข้าถึง URL ที่ถูกต้องและไม่มีการพิมพ์ผิด
- ตรวจสอบบันทึกเซิร์ฟเวอร์ : บันทึกของเซิร์ฟเวอร์สามารถให้ข้อมูลเชิงลึกว่าเหตุใดคำขอเฉพาะจึงถูกปฏิเสธ
- ตรวจสอบไฟล์ .htaccess : สำหรับเว็บไซต์ที่ทำงานบน Apache การตรวจสอบไฟล์ .htaccess สามารถระบุกฎที่เข้มงวดมากเกินไปได้
วิธีการป้องกัน
การหลีกเลี่ยงข้อผิดพลาด HTTP 403 เกี่ยวข้องกับขั้นตอนเชิงรุกเพื่อให้แน่ใจว่าการโต้ตอบระหว่างเซิร์ฟเวอร์และไคลเอนต์ราบรื่น:
- ตรวจสอบสิทธิ์เป็นประจำ : ตรวจสอบและปรับสิทธิ์เป็นระยะเพื่อให้แน่ใจว่าผู้ใช้สามารถเข้าถึงทรัพยากรที่จำเป็น
- อัปเดต .htaccess อย่างระมัดระวัง : เมื่อแก้ไขไฟล์ .htaccess โปรดดำเนินการด้วยความระมัดระวังและสำรองข้อมูลไว้เสมอ
- ตรวจสอบความปลอดภัยของเซิร์ฟเวอร์ : อัปเดตโปรโตคอลความปลอดภัยของเซิร์ฟเวอร์อยู่เสมอเพื่อป้องกันการอุดตันโดยไม่ได้ตั้งใจ
วิธีการแก้ไข
การแก้ไขข้อผิดพลาด 403 ขึ้นอยู่กับสาเหตุที่แท้จริง:
1. ปรับสิทธิ์
ตรวจสอบให้แน่ใจว่ามีการมอบสิทธิ์ที่ถูกต้องให้กับผู้ใช้หรือไดเร็กทอรีที่ต้องการการเข้าถึง (อ่านเพิ่มเติม)

2. แก้ไขปัญหา .htaccess
- สำรองไฟล์
.htaccess
ของคุณ : สำรองข้อมูลไฟล์.htaccess
ทุกครั้งก่อนทำการเปลี่ยนแปลงใดๆ - ตรวจสอบคำสั่งปฏิเสธ : ค้นหาคำสั่ง
Deny
ในไฟล์.htaccess
ของคุณ หากมีอยู่ อาจก่อให้เกิดข้อผิดพลาด 403 ตัวอย่างเช่น:Order allow,deny Deny from all
หากต้องการแก้ไขปัญหานี้ ให้ลบคำสั่งออกหรือแก้ไขเพื่ออนุญาตการรับส่งข้อมูลที่ต้องการ - การป้องกันด้วยรหัสผ่าน : หากบางไดเรกทอรีมีการป้องกันด้วยรหัสผ่านโดยใช้
AuthType
,AuthName
,AuthUserFile
และRequire
สอบให้แน่ใจว่าคุณมีข้อมูลประจำตัวที่ถูกต้องในการเข้าถึง หากคุณไม่ต้องการการป้องกันด้วยรหัสผ่าน คุณสามารถแสดงความคิดเห็นหรือลบคำสั่งเหล่านี้ได้ - การอนุญาตไฟล์ : แม้ว่านี่จะไม่ใช่วิธีแก้ปัญหา
.htaccess
อย่างเคร่งครัด แต่ต้องแน่ใจว่าไฟล์และไดเร็กทอรีของคุณมีสิทธิ์ที่ถูกต้อง สำหรับเซิร์ฟเวอร์จำนวนมาก การตั้งค่าสิทธิ์โดยทั่วไปคือ:- โฟลเดอร์: 755
- ไฟล์: 644
- รายการไดเรกทอรี : หากคุณกำลังพยายามเข้าถึงไดเรกทอรีที่ไม่มีไฟล์ดัชนี (เช่น
index.html
หรือindex.php
) และรายการไดเรกทอรีถูกปิดใช้งาน คุณอาจได้รับข้อผิดพลาด 403 คุณสามารถ:- เพิ่มไฟล์ดัชนีลงในไดเร็กทอรี
- เปิดใช้งานรายการไดเรกทอรีด้วย:
Options +Indexes
- กฎ Mod_Rewrite : หากคุณใช้กฎ mod_rewrite ตรวจสอบให้แน่ใจว่ากฎเหล่านั้นเขียนอย่างถูกต้อง กฎที่ไม่ถูกต้องบางครั้งอาจทำให้เกิดข้อผิดพลาด 403 ได้ แสดงความคิดเห็นเกี่ยวกับกฎที่เฉพาะเจาะจงเพื่อดูว่าเป็นสาเหตุหรือไม่
- ตรวจสอบข้อจำกัดของไฟล์ : ค้นหากฎที่จำกัดการเข้าถึงตามชื่อไฟล์ เช่น:
<Files "secretfile.php"> Order allow,deny Deny from all </Files>
ปรับหรือลบกฎเหล่านี้ตามความจำเป็น - ตรวจสอบให้แน่ใจว่าไวยากรณ์ .htaccess : ไฟล์
.htaccess
ที่เขียนไม่ถูกต้องหรือมีคำสั่งที่ไม่ถูกต้องอาจทำให้เกิดข้อผิดพลาด 403 ได้ ตรวจสอบให้แน่ใจว่าคำสั่งและไวยากรณ์ทั้งหมดถูกต้อง
หลังจากทำการเปลี่ยนแปลงไฟล์ .htaccess
แล้ว อย่าลืมล้างแคชของเบราว์เซอร์ของคุณหรือทดสอบโดยใช้เบราว์เซอร์อื่นเพื่อให้แน่ใจว่าคุณเห็นผลลัพธ์ที่อัปเดต หากวิธีการข้างต้นไม่สามารถแก้ไขปัญหาได้ ให้ลองคืนค่าสำเนาสำรองของไฟล์ .htaccess
ในช่วงเวลาที่คุณไม่พบข้อผิดพลาด 403

3. ไวท์ลิสต์ที่อยู่ IP
หากการบล็อก IP เป็นสาเหตุ ให้พิจารณาไวท์ลิสต์ที่อยู่ IP ที่เกี่ยวข้อง
รายการที่อนุญาตด้วย .htaccess:
- ค้นหากฎการบล็อก IP ที่มีอยู่ : ค้นหากฎที่มีอยู่ในไฟล์
.htaccess
ของคุณที่อาจบล็อกที่อยู่ IP อาจมีลักษณะดังนี้:Order Deny,Allow Deny from all Allow from 123.123.123.123
ในตัวอย่างนี้ อนุญาตเฉพาะ IP123.123.123.123
เท่านั้น และ IP อื่นๆ ทั้งหมดถูกปฏิเสธ - ไวท์ลิสต์ที่อยู่ IP : หากคุณต้องการไวท์ลิสต์ที่อยู่ IP เฉพาะเจาะจง คุณสามารถเพิ่มได้โดยใช้คำสั่ง
Allow from
:Allow from YOUR.IP.ADDRESS.HERE
แทนที่YOUR.IP.ADDRESS.HERE
ด้วยที่อยู่ IP ที่คุณต้องการไวท์ลิสต์ . - ไวท์ลิสต์ที่อยู่ IP หลายรายการ : หากคุณมีที่อยู่ IP หลายรายการที่จะไวท์ลิสต์ คุณสามารถเพิ่มได้หลายรายการ
Allow from
คำสั่ง:Allow from IP.ADDRESS.1 Allow from IP.ADDRESS.2
- ไวท์ลิสต์ช่วง IP : หากคุณมีช่วงของที่อยู่ IP คุณสามารถใช้รูปแบบ CIDR หรืออักขระไวด์การ์ดได้:
#Using CIDR notation Allow from 123.123.123.0/24 # Using wildcards Allow from 123.123.123.*
ทั้งสองตัวอย่างข้างต้น ไวท์ลิสต์ที่อยู่ IP ทั้งหมดตั้งแต่123.123.123.0
ถึง123.123.123.255
- บันทึกและทดสอบ : หลังจากเพิ่มคำสั่ง
Allow from
ที่จำเป็นแล้ว ให้บันทึกไฟล์.htaccess
จากนั้นลองเข้าถึงเว็บไซต์ของคุณจากที่อยู่ IP ที่ถูกบล็อกก่อนหน้านี้ ตอนนี้ควรจะสามารถเข้าถึงได้แล้ว - ล้างแคชของเบราว์เซอร์ : ล้างแคชของเบราว์เซอร์ของคุณเสมอ หรือใช้หน้าต่างที่ไม่ระบุตัวตน/ส่วนตัวเมื่อทำการทดสอบเพื่อให้แน่ใจว่าคุณเห็นการเปลี่ยนแปลงล่าสุด
การใช้ iptables
:
ฉัน. สำรองกฎ iptables ปัจจุบัน : ก่อนทำการเปลี่ยนแปลงใดๆ เป็นความคิดที่ดีที่จะสำรองข้อมูลกฎ iptables
ปัจจุบันของคุณ
sudo iptables-save > /path/to/backupfile.txt
ครั้งที่สอง ไวท์ลิสต์ที่อยู่ IP : เพื่ออนุญาตการรับส่งข้อมูลทั้งหมดจากที่อยู่ IP ที่ระบุ:
sudo iptables -A INPUT -s YOUR.IP.ADDRESS.HERE -j ACCEPT
แทนที่ YOUR.IP.ADDRESS.HERE
ด้วยที่อยู่ IP ที่คุณต้องการอนุญาตพิเศษ
สาม. บันทึกการเปลี่ยนแปลง : คุณอาจใช้: ขึ้นอยู่กับการกระจายของคุณ
sudo service iptables save
หรือ:
sudo iptables-save > /etc/sysconfig/iptables
ใช้ ufw
:
ฉัน. ตรวจสอบว่าติดตั้ง UFW หรือ ไม่ : หากไม่ใช่ คุณสามารถติดตั้งได้โดยใช้ตัวจัดการแพ็คเกจของการแจกจ่ายของคุณ เช่น:
sudo apt install ufw # For Ubuntu/Debian sudo yum install ufw # For CentOS (might not be in the default repositories)
ครั้งที่สอง เปิดใช้งาน UFW : หากยังไม่ได้เปิดใช้งาน คุณสามารถเปิด UFW ด้วย:
sudo ufw enable
สาม. ไวท์ลิสต์ที่อยู่ IP : เพื่ออนุญาตการรับส่งข้อมูลทั้งหมดจากที่อยู่ IP ที่ระบุ:
sudo ufw allow from YOUR.IP.ADDRESS.HERE
แทนที่ YOUR.IP.ADDRESS.HERE
ด้วยที่อยู่ IP ที่คุณต้องการอนุญาตพิเศษ
สี่ ตรวจสอบกฎ : คุณสามารถตรวจสอบกฎ UFW ด้วย:
sudo ufw status
4. ค้นหาการสนับสนุนผู้ให้บริการโฮสติ้ง : บางครั้ง การติดต่อผู้ให้บริการโฮสติ้งของสามารถช่วยระบุและแก้ไขปัญหาเฉพาะเซิร์ฟเวอร์ได้
ข้อผิดพลาดที่เกี่ยวข้อง
หากต้องการปรับบริบท HTTP 403 เพิ่มเติม ให้พิจารณารหัสสถานะ HTTP ที่เกี่ยวข้องเหล่านี้:
- HTTP 401 (ไม่ได้รับอนุญาต) : คำขอต้องมีการตรวจสอบสิทธิ์ผู้ใช้
- HTTP 402 (ต้องชำระเงิน) : สงวนไว้สำหรับใช้ในอนาคต แนะนำให้ชำระเงิน
- HTTP 404 (ไม่พบ) : ทรัพยากรที่ร้องขอไม่พร้อมใช้งานบนเซิร์ฟเวอร์
สรุปแล้ว การทำความเข้าใจความซับซ้อนของรหัสสถานะ HTTP 403 “ต้องห้าม” มีความสำคัญอย่างยิ่งต่อการรับประกันการโต้ตอบทางเว็บที่เหมาะสมที่สุด ด้วยการรับทราบข้อมูลและเชิงรุก นักพัฒนาและผู้ใช้สามารถนำทางข้อผิดพลาดที่อาจเกิดขึ้นและรักษาประสบการณ์เว็บที่ราบรื่น

ในฐานะหนึ่งในผู้ร่วมก่อตั้ง Codeless ฉันนำความเชี่ยวชาญในการพัฒนา WordPress และเว็บแอปพลิเคชัน รวมถึงประวัติในการจัดการโฮสติ้งและเซิร์ฟเวอร์อย่างมีประสิทธิภาพ ความหลงใหลในการได้รับความรู้และความกระตือรือร้นในการสร้างและทดสอบเทคโนโลยีใหม่ๆ ทำให้ฉันคิดค้นและปรับปรุงอย่างต่อเนื่อง
ความเชี่ยวชาญ:
การพัฒนาเว็บ
ออกแบบเว็บไซต์
การบริหารระบบลินุกซ์,
การทำ SEO
ประสบการณ์:
ประสบการณ์ 15 ปีในการพัฒนาเว็บโดยการพัฒนาและออกแบบธีม WordPress ที่ได้รับความนิยมสูงสุด เช่น Specular, Tower และ Folie
การศึกษา:
ฉันสำเร็จการศึกษาสาขาฟิสิกส์วิศวกรรมและ MSC สาขาวัสดุศาสตร์และออปโตอิเล็กทรอนิกส์
ทวิตเตอร์, ลิงค์ดิน