สอน PHP ASP ASP.NET C# JSP Javascript Java Perl IT Solution Opensource Source Code MVC Software Freeware Shareware
 หน้าแรก  |  ข่าวสารต่างๆ  |  ค้นหาบทความ

Web Vulnerability Development | เขียนเว็บปลอดภัยจากแฮกเกอร์

Web Vulnerability Development

ในการเขียนเว็บนั้น หลายๆ คนที่เป็น Programmer มักจะไม่รู้ว่าเขียนเว็บอย่างไรให้ปลอดภัย มีขั้นตอนการป้องกันจากแฮกเกอร์อย่างไรบ้าง ซึ่งโปรแกรมเมอร์ล้วนแต่เขียนตามที่เคยศึกษามาโดยไม่ได้คำนึงถึงความปลอดภัยเลย ทำให้อาจถูกขโมยข้อมูลหรือโดนแฮกเกอร์ทำลายเว็บไซต์ หรือลบฐานข้อมูลก็เป็นได้

วันนี้ผมจะมาแนะนำการเขียนเว็บให้มีความปลอดภัยมากยิ่งขึ้น โดยแบ่งเป็นเรื่องๆ ว่าจะต้องทำอะไรบ้าง มาเริ่มกันเลยครับ

SQL Injection


SQL Injection เป็นอีกทางหนึ่งที่แฮกเกอร์ใช้ล้วงข้อมูลจากฐานข้อมูล โดยปกติเราจะเขียนเว็บไซต์เพื่อรับค่า parameter จาก query string แล้วนำค่านั้นๆ มาเป็นเงื่่อนไขในการ query database. ซึ่งหากไม่ได้เขียนดักอะไรไว้ทางแฮกเกอร์ก็สามารถที่จะส่งคำสั่งเพิ่มเพื่อทำ SQL Injection ให้ดึงหรือกระทำกับฐานข้อมูลเราได้เลย

วิธีป้องกัน SQL Injection
วิธีป้องกันคือ ให้ทำการส่งค่าต่างๆ ที่ใช้ในการ query databse ผ่านตัวแปร parameter แทน ซึ่งตัวแปรแบบนี้จะมีการป้องกันการทำ SQL Injection ให้โดยอัตโนมัติ ซึ่งหากเป็น PHP ก็แนะนำให้ไปใช้ mysqli ซึ่งเป็นส่วนขยายสำหรับ PHP ที่ทำมาเพื่อรองรับการเชื่อมต่อกับฐานข้อมูลโดยมีประสิทธิภาพมากกว่าเดิม หรืออีกทางเลือกหนึ่งคือใช้ PDO ในการติดต่อฐานข้อมูล

XSS (Cross Site Scripting)


เป็นการที่แฮกเกอร์ฝังโค้ดไว้ในโปรแกรมของเรา เพื่อขโมยข้อมูลบางอย่าง โดยจะทำการฝังโค้ดกับหน้าที่มีความปลอดภัยน้อย ส่วนค่าที่ขโมยไปก็จะเป็นพวก cookie, username หรือ password

หน้าเว็บที่สามารถทำให้เกิด XSS ได้ ก็จะเกิดจากเว็บที่มีการรับข้อมูลเข้ามาจากผู้ใช้ และผู้เขียนเว็บไม่ได้ทำการตรวจสอบความถูกต้องของข้อมูลนั้นๆ แล้วนำข้อมูลดังกล่าวไปแสดงบนเว็บ ทำให้แฮกเกอร์ใส่ข้อมูลมาแทรกหน้าเว็บได้โดยทันที โดยแฮกเกอร์สามารถขโมยค่า cookie ที่อาจจะใช้เป็น session ในการ login แล้วนำค่านี้ไปใช้ในเครื่องแฮกเกอร์ก่อนแก้ไขข้อมูลและส่งไปยังเว็บจริงๆ ได้

ตัวอย่าง code ที่มีช่องโหว่ XSS เช่น showresult.php ถ้าเรามีการรับ parameter มาใช้ในการแสดงหน้าเว็บ อาจจะมีการส่ง parameter มาดังนี้
http://www.codethep.com/showresult.php?keyword=php
หน้านี้จะแสดงคำว่า php ออกมา

แต่ถ้าเราใส่เป็น
http://www.codethep.com/showresult.php?keyword=<script>alert(/XSS Hacked/);</script>
จะทำให้มีการ alert ข้อความออกมาว่า "XSS Hacked"

จากตัวอย่างนี้จะเห็นว่า hacker สามารถนำลิงค์นี้ไปโพสที่เว็บอื่นๆ เพื่อให้คนคลิกเข้าไปจากนั้นดึงข้อมูล cookie หรือข้อมูลอื่นๆ ได้

วิธีป้องกัน คือ ก่อนนำข้อมูลไปใช้ ควรทำการ encode html tag ก่อน โดยถ้าเป็น php ก็จะใช้ method ข้างล่างนี้
$message = htmlentities($message, ENT_QUOTES, 'utf-8');

ข้อความก็จะถูกแปลง tag < เป็น < และ tag > เป็น > และ tag html อื่นก็จะถูกแปลง ดังนั้นหน้าเว็บก็จะแสดงผลที่เป็น html encode แล้ว ก็จะไม่มี alert ออกมาให้เห็นแล้วครับ

Cross Site Request Forgery

  
แผนผังเว็บไซต์ Codethep.com
ข่าวสารต่างๆ เว็บบอร์ด ค้นหาบทความ

ติดตาม ข่าวสารจาก Codethep ผ่านช่องทางข้างล่างนี้
Codethep:  Facebook Codethep  Twitter Codethep
- เกี่ยวกับ Codethep
- ติดต่อ Codethep
- ลงโฆษณากับ Codethep
- ช่วยเหลือ