ว่าด้วย SQL Injection

SQL Injection จัดเป็นภัยพื้นฐานของเว็บแอพพลิเคชั่น ที่เกิดง่าย เจาะง่าย และแก้ไขได้ง่าย อยู่ที่รู้หรือไม่รู้เท่านั้นเอง เว็บโปรแกรมเมอร์ทั้งหลายจึงไม่ควรละเลยที่จะหาความรู้เรื่องนี้ครับ เพราะมันเป็นภัยที่เกิดจากการละเลย,หละหลวม ซึ่งหมายถึง Source Code ของเรามีช่องโหว่ หนำซ้ำตัว Cracker / Hacker ที่มาเจาะระบบของเราก็ทำงานง่ายซะชนิดว่า แค่มือเปล่าๆไม่ต้องใช้เครื่องไม้เครื่องมือพิศดารอะไรซะด้วย (หยามกันชัดๆ) ก็อย่างที่บอกแหละครับว่ามันคือ "ช่องโหว่" หากใครที่ทำเว็บแอพพลิเคชั่นแล้วไม่ได้ใส่ใจเรื่องนี้ ท่านอาจเสียใจภายหลังได้ครับ ถึงตอนนั้นก็แก้อะไรไม่ทันแล้ว

เพื่อให้เนื้อหาไม่ยาวมาก (เขาว่าเดี๋ยวนี้เขียนยาวไปคนไม่อ่าน...จริงซะด้วย) ผมจึงขอสรุปว่า SQL Injection ก็คือกระบวนการที่ Cracker/Hacker ป้อนคำสั่ง SQL แบบเนียนๆผ่าน Input ของเว็บแอพพลิเคชั่นของเรา (WebForm) ที่เราสร้างไว้รับค่าจากผู้ใช้งานนั่นแหละครับ เมื่อเว็บแอพพลิเคชั่นรับค่าที่มีคำสั่ง SQL เข้ามาทำงาน ก็จะสร้างอันตรายกับตัวระบบได้ต่างๆนานาๆ แล้วแต่เค้าใส่คำสั่งให้ทำอะไรก็ทำตามเค้าไปง่ายๆซะงั้น รายละเอียดลองหาอ่านเอานะครับเต็มเว็บไปหมด ส่วนวิธีแก้ไขก็มีฟังก์ชั่นที่จะช่วยได้อยู่บ้างและง่ายมากๆครับ ข้างล่างนี้ก็คือพระเอกของเรื่อง แค่อ่านวิธีใช้ฟังก์ชั่นเหล่านี้ให้เข้าใจและนำไปใช้ ก็จะช่วยให้ระบบของคุณปลอดภัยขึ้นมากเลยล่ะครับ
  1. mysql_real_escape_string()
  2. mysql_escape_string()
  3. addslashes()
  4. preg_match()
โดยคอนเซปต์แแล้วฟังก์ชั่นพวกนี้จะมีวิธีใช้ง่ายๆด้วยการนำตัวแปรที่ได้รับจากผู้ใช้งานเข้ามาครอบด้วยฟังก์ชั่นที่ว่านี้ก่อนนำไปใช้ครับ เช่น $id = mysql_real_escape_string($id); แบบนี้แหละครับ ส่วนรายละเอียดกดลิงก์ไปอ่านเอานะครับผมทำลิงก์ไว้ให้แล้ว หลังจากใช้แล้วก็พอกันได้บ้าง สำหรับผมมีความคิดว่า "สิ่งที่คุณต้องทำเพื่อเสริมการป้องกันให้แข็งแรงมากกว่านี้ก็คือ การกำหนดเงื่อนไขการกลั่นกรองข้อมูลที่ได้รับจากผู้ใช้งานให้ละเอียด เช่น จำนวนตัวอักษร , อักขระที่ใช้ได้ เป็นต้น หากพบว่าผู้ใช้กรอกเข้ามาไม่ถูกต้องก็ดัดแปลงให้ถูกต้องหรือไม่ก็แจ้งให้ผู้ใช้กรอกใหม่" นี่คือทางรอดที่แท้จริงครับ

ขอทิ้งท้ายทำเท่ห์ด้วย ภาษาปะกิต ไว้สักนิดนึงครับ
SQL injection craking give lessons that. If you are not, well screened. input will make a great danger.

ก็ลองศึกษากันดูครับไม่ยากไม่ง่ายจนเกินไป เพื่อความปลอดภัยของเว็บที่คุณดูแล เขียนให้อ่านด้วยความปรารถนาดีจากใจจริง เจอกันใหม่บทความหน้า..โชคดีครับ

 Reference : 
http://en.wikipedia.org/wiki/SQL_injection
http://www.mindterra.com/firewall/sql-injection
http://en.wikibooks.org/wiki/PHP_Programming
http://en.wikibooks.org/wiki/PHP_Programming/SQL_Injection

แสดงความคิดเห็น

0 ความคิดเห็น