Web Security Lesson #2

สวัสดีครับ ช่วงนี้ผมเจอกับเรื่อง security บ่อยมาก ก็เลยมาเขียน Lesson #2 ซะเลย
สำหรับผู้ที่หัดเขียนโปรแกรมใหม่ หรือว่าเขียนมานานแล้ว แต่ไม่ได้ใส่ใจตรงนี้เท่าไรนัก
ลองมาอ่าน ตอนนี้ดูกันครับ เกี่ยวกับการ upload file ไม่ว่าจะเป็น images, video
หรืออะไรก็ตามที่ต้องใช้ การ upload คือให้ user สามารถ upload อะไรไปไว้ที่ server ได้

สิ่งที่ควรระวัง คือ
– ต้องกันไม่ให้ upload file ที่สามารถทำงานได้ เข้าไปบน server เช่น .php, .pl, .asp, .cgi
– การใช้ java script check ประเภทของ file หรือกันประเภทของ file ไม่ควรทำ เพราะ
hacker สามารถ สั่งไม่ให้ browser รัน javascript ได้
– การ check mine type ของ file นั้นไม่เพียงพอ เพราะ hacker สามารถ save file เป็น
type ต่างๆ ตามที่เค้าต้องการได้ เช่น จาก c99.php เป็น c99.jpg แบบนี้ ก็จะสามารถ
upload file php ขึ้นไปรันบน server ได้แล้ว ถึงจะเป็น .jpg ก็จริง แต่ว่า hacker
มีวิธีในการ rename file มากมาย ที่เกิดจากช่องว่างของโปรแกรมในส่วนต่างๆ
– การ check ว่าเป็นรูป จริงหรือไม่ ควรใช้ การ getimagesize() จะน่าเชื่อถือกว่า
ว่าเป็นรูปจริงๆ
– ใน directory ที่ใช้เก็บรูปหรือ file นั้น จำเป็นอย่างยิ่ง ที่จะต้องให้ พวก script ต่างๆ
สามารถทำงานได้ เพราะว่าโอกาสที่ในส่วนของการ upload มีสูง เราจริงควรดูตรงนี้ให้ดี
สำหรับวิธีง่ายๆ ก็คือ สร้าง .htaccess สำหรับ PHP ถ้าเราจะไม่ให้ทำงานใน directory
นี้ได้ ก็ให้ใส่ค่านี้ลงไป php_flag engine off คราวนี้ .php ต่างๆ ก็จะทำงานไม่ได้แล้ว

สำหรับเรื่องพวกนี้ เราควรใส่ใจมาก เพราะถ้าเกิดมีการหลุดของพวก php shell เข้าไปแล้ว
hacker สามารถทำทุกอย่างใน server ได้อย่างเต็มที่ ที่นิยมกันก็คืือ c99, r57

วันหลังผมจะมาเขียนว่า เราจะสามารถหาพวก php shell อันตรายเหล่านี้ใน server เรา
ได้อย่างไร ท้ายที่สุด อยากฝากว่าอย่าละเลยเรื่อง security เพราะพลาดเพียงนิดเดียว
สิ่งที่ไม่คาดคิด หรือหายนะ อาจจะมาเยือนได้ 🙂

สำหรับ Video สอนเกี่ยวกับเรื่อง Web Security ที่น่าสนใจจาก UC Berkeley
สามารถเข้าดูได้ที่ http://61.90.198.151/ucb/