วิธีตรวจสอบเว็บไซต์ที่โดน Hack #9
สวัสดีปีใหม่ ปี 2557 ขอทุกท่านนประสบความสำเร็จในหน้าที่การงาน คิดหวังสิ่งใดก็สมปรารถนา และมีสุขภาพแข็งแรง ปลอดภัยตลอดทั้งปีครับ บทความนี้ ขอกล่าวถึงปัญหาสำคัญปัจจุบัน เรียกว่าเป็น Trends ของปีที่ผ่านมาและต่อไปในปีนี้ (2557) ด้วย นั่นคือ เรื่อง Cross Site Scripting หรือ ที่เขียนย่อๆว่า XSS XSS นั้น ก็คล้ายๆกับปัญหาเดิมของ SQL Injection เดิม SQL Inject คือ Web Form ที่ให้ผู้ใช้ป้อนข้อมูลเข้ามา ไม่ได้มีการกรองข้อมูลให้ดี จึงทำให้ Hacker สามารถ แทรกคำสั่ง SQL เข้ามา เพื่อให้สามารถ Bypass การตรวจสอบได้ เช่น ตัวอย่าง SQL Injection ที่เขียนจาก PHP ที่หน้าที่รับ username และ password เข้ามาตรวจสอบ จากฐานข้อมูล โดยคิดว่า จับคู่ได้ แล้วมีจำนวน มากกว่า 0 ก็แสดงว่า ให้ผ่านได้ ดังนี้ <?php $username=$_POST[‘username’]; $password=$_POST[‘password’]; $host=”localhost”; $dbuser=”root”; $dbpass=”123456″; $dbname=”xss”; $dbtable=”user”; $conn = mysql_connect(“$host”,”$dbuser”,”$dbpass”); mysql_select_db(“$dbname”); $sql = “SELECT count(*) FROM $dbtable WHERE username=’$username’ AND password = ‘$password’ “; $query=mysql_query($sql); $result=mysql_fetch_array($query); $count=$result[0]; if ( $count > 0 ) { echo ” Hello $username “; } else { echo “Login Fail”; } echo “<hr>”; echo “SQL=$sql”; mysql_close($conn); ?> เมื่อทำการ Login ด้วย Username เป็น admin และ Password เป็น yyy ซึ่งผิด ผลที่ได้ จะประมาณนี้ แต่หาก ใส่ Password แทนที่จะเป็น yyy แต่ใส่เป็น yyy’ or ‘1’=’1 ผลที่ได้คือ จะเห็นได้ว่า การที่ไม่ตรวจสอบ Escape Character ให้ดี จึงทำให้ Hacker สามารถเข้ามาได้ โดยไม่จำเป็นต้องทราบรหัสผ่านจริงๆ, นี่คือ SQL Injection ส่วน XSS นั้น ก็คล้ายๆกัน แต่ แทนที่จะแทรก SQL Statement ก็ ใช้ JavaScript แทน โดยช่องโหว่มาจากการเขียนโปรแกรมบน Web Server แต่จะส่งผลกระทบต่อ Web Browser เช่น ทำให้เกิดการ Download Malware, การถูกส่งข้อมูลส่วนตัวที่ผู้ใช้กรอกไปให้ Hacker หรือ Hacker