[Apache] ป้องกันการเรียกรายการไฟล์ใน Directory ที่เอาไว้เก็บไฟล์โดยใช้ htaccess

เทคนิคอันนี้เป็นเทคนิคที่ผมใช้ไปกับเว็บไซต์ของบริษัทที่ผมทำงานอยู่ เพื่อเอาไว้ป้องกันการเรียก directory เพื่อขอดูรายการไฟล์ Directory Listings?ในโฟลเดอร์ที่เอาไว้เก็บไฟล์ต่างๆ เช่น รูปภาพ หรือว่า ไฟล์อื่นๆ โดยใช้ htacess ซึ่งถือว่าเป็นเทคนิคง่ายๆ ที่ช่วยเราได้มากเลยครับ

โดยทั่วไปแล้วเวลาที่เราทำการเรียก directory ใดๆ บนเครื่อง server แล้วนั้น หากในนั้นไม่มีไฟล์ index (index.html, index.shtml หรือ index.php) ตัว apache จะทำการแสดงรายการไฟล์ใน directory นั้นออกมา ซึ่งจะปลอดภัยในระดับหนึ่ง เช่นในกรณีที่เราต้องเก็บไฟล์รูปภาพไว้มากๆ ในโฟลเดอร์ใดๆ หาก Hacker เรียก Directory นั้นโดยตรงก็จะทำให้โดนขโมยรูปได้โดยง่ายเลยหล่ะครับ ดังรูปด้านล่าง

หากโดนเรียก Directory ตรงๆ ก็อาจจะโดนขโมยรูปได้ง่ายๆ เลยหล่ะ

หากโดนเรียก Directory ตรงๆ ก็อาจจะโดนขโมยรูปได้ง่ายๆ เลยหล่ะ

สำหรับวิธีการในการป้องกันนั้นมีให้เราเลือกได้หลายวิธีครับ มาดูกันเลยครับ

วิธีที่ 1 สร้างไฟล์ index.html, index.shtml หรือ index.php ไว้ในทุกโฟลเดอร์

วิธีนี้เป็นวิธีที่ง่ายที่สุดแต่มีความลำบากและค่อนข้างวุ่นวายหากในโฟลเดอร์นั้นมีหลายๆ โฟลเดอร์ย่อย เนื่องจากต้องสร้างไฟล์ index ที่ว่านั้นใส่ไว้ในทุกๆ โฟลเดอร์นั่นเองครับ

วิธีที่ 2 ใช้ htaccess ช่วยในการกำหนดคุณสมบัติของโฟลเดอร์

วิธีนี้ก็ถือว่าเป็นวิธีที่ง่ายและสะดวกที่สุดคือการสร้างไฟล์ htaccess ซึ่ง webmaster ทุกคนน่าจะคุ้นเคยเป็นอย่างดีกับการเขียน Rewrite URL เนื่องจากก็ต้องเขียนในไฟล์นี้เหมือนกัน เอาหล่ะเรามาดูวิธีการกันดีกว่าครับว่าเราจะทำอย่างไร

เริ่มจากสร้างไฟล์และใส่ code ด้านล่างไว้ในไฟล์

หลังจากนั้นให้เซฟไฟล์ดังกล่าวชื่อ .htaccess?(เทคนิคการสร้างไฟล์นี้คือให้เปิดโปรแกรม Text Editor?แล้วให้กด File > Save As… แล้วให้เลือก File type เป็น All Files ดังรูปด้านล่างครับ)

ให้เซฟภาพตามนี้เลยนะครับ เซฟไว้ที่ directory ที่ต้องการจะปิดนะครับ

ให้เซฟภาพตามนี้เลยนะครับ เซฟไว้ที่ directory ที่ต้องการจะปิดนะครับ

ก็จะสามารถปิดการเข้าถึง Directory นั้นๆ และ Directory ย่อยๆ ได้โดยจะแสดงหน้า Error 403 ออกมาให้เราเห็นแบบนี้นะครับ

Access forbidden! Error 403

หน้าตาของเว็บเมื่อเรียกโฟลเดอร์ที่ได้ทำการป้องกันแล้ว

อย่างไรก็แล้วแต่หากมีใครที่ต้องการกำหนดแบบไม่ให้แสดงเฉพาะบางไฟล์ก็สามารถทำได้ดังนี้ครับ

จากโค๊ดด้านบนจะทำให้ไม่แสดงเฉพาะไฟล์ .jpg และ .gif แต่สำหรับไฟล์อื่นๆ ก็ยังแสดงใน Directory Listings ตามปกตินะครับ

เอาหล่ะ สำหรับบทความนี้ผมก็บอกตรงๆ เลยว่าใช้เวลาเขียนค่อนข้างนานเลยหล่ะครับ แต่ถือว่าคุ้มค่ามากๆ หากมันสามารถช่วยใครได้บ้างนะครับ สำหรับวันนี้ สวัสดีจ้าาาา ^__^

Thapakorn
Follow me

Thapakorn

Programmer / Startup Owner at Phuketinnova Col., Ltd.
โปรแกรมเมอร์ที่ชอบถ่ายภาพและปั่นจักรยาน(แต่ไม่มีจักรยาน) ชอบทุกอย่างที่เกี่ยวกับเครื่องบินและคอมพิวเตอร์ ใฝ่ฝันอยากเป็นนักบินแต่ได้เป็นโปรแกรมเมอร์ :P
Thapakorn
Follow me

Leave a Reply