03 July 2015

การป้องกัน Directory รูปภาพ และ upload ด้วยการใช้ Apache mod_rewrite

Script ที่ใช้งานในเว็บไซต์ไม่ว่าจะเขียนเอง หรือเป็น CMS ต่างๆ ล้วนแล้วแต่มีช่องโหว่อันตรายที่ทำให้เว็บไซต์ของเราอาจถูกผู้ไม่ประสงค์ดีเจาะระบบได้
ซึ่งหากเราไม่อัพเดท Version หรือ Security patch ของระบบ Script หรือ CMS ที่ใช้งานบ่อยๆ เพื่อคอยปิดรอยรั่วที่ Hacker หาพบ
เว็บไซต์ของเราก็อาจจะถูกเจาะเข้ามาวางไฟล์ หรือขโมยข้อมูลได้ครับ

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

สำหรับ Directory จำเป็นต้องตั้งค่าเป็น 777 ส่วนใหญ่จะเป็น Directory สำหรับ อัพโหลดไฟล์ เช่นรูปภาพ หรือวิดีโอ
ให้เราสร้างไฟล์ชื่อ .htaccess (จุด เอช ที เอ ซี ซี อี เอส เอส) ขึ้นมา และใส่ Script ต่อไปนี้เข้าไปครับ

# secure directory by disabling script execution
AddHandler cgi-script .php .pl .py .jsp .asp .htm .shtml .sh .cgi
Options -ExecCGI

จากนั้นนำไปวางไฟล์นี้ใน Directory ที่จำเป็นต้องรับไฟล์อัพโหลด และต้องตั้งค่า Permission เป็น 777 ครับ
ไฟล์นี้คือ Apache mod rewrite เพื่อสั่งให้ Web server ไม่ทำการรันไฟล์ใดๆ ที่เป็น Server Side Script หรอืไฟล์ที่ไม่ปลอดภัยครับ
-------------------------------------------------------------------------
-------------------------------------------------------------------------

หลายเว็บ ตั้งค่า permission แฟ้มที่เก็บรูป ให้เป็น 777 ซึ่งเอาไว้รองรับการ upload และแน่นอน หาก hacker สามารถหาช่องโหว่เพื่อ upload script ขึ้นมาได้ นั่นก็หมายความว่า เค้าสามารถ upload อะไรก็ได้ขึ้นมาใส่ในแฟ้มนี้ (ไม่นับกรณีที่โดน php shell นะ)
ดังนั้น ทางที่ดี เราควรปิดแฟ้มรูปภาพให้ไม่สามารถรันไฟล์ php ได้ เพื่อไม่ให้สามารถรันไฟล์ตามที่ต้องการได้
งานนี้ เราก็เลยเอาไฟล์ .htaccess เข้ามาช่วย เพราะว่าเจ้า .htaccess สามารถสั่งให้ apache ทำงานพิเศษบางอย่างได้ครับ ด้วยโค้ดดังนี้
1# deny access to all .php files
2<Files ~ "^.*\.([Pp][Hh][Pp])">
3 Order allow,deny
4 Deny from all
5 Satisfy All
6</Files>
นี่คือที่เราจะใช้งานครับ ก็คือ ห้ามรัน ไฟล์ที่ลงด้วย .php
วิธีการใช้ง่ายมาก แค่สร้างไฟล์จาก notepad แล้วตั้งชื่อว่า htaccess แล้วใส่โค้ดดังกล่าวเข้าใป
จากนั้น upload ใส่แฟ้ม image แล้ว rename ให้เป็น .htaccess เลยครับ ง่ายๆแค่นี้ไม่ต้องทำอะไรต่อ
***การใช้ .htaccess จะใช้ได้เฉพาะกรณีที่ web server เป็น apache เท่านั้น ส่วน IIS ไม่สามารถใช้งานได้***

--------------------------------------------------------------------
credit : http://meewebfree.com/site/
--------------------------------------------------------------------

No comments:

Post a Comment