วันพฤหัสบดีที่ 2 กุมภาพันธ์ พ.ศ. 2555

SQL Injection

วันนี้ลองมาดูในเรื่องของการเขียน SQL ที่เรียกว่า SQL Injection กันนะค่ะ ในเรื่องของความปลอดภัย ผู้ไม่หวังดีอาจจะลองเขียนหรือกรอกข้อมูลเข้ามาที่ทำให้
SQL Statement เป็นจริงตลอดเพื่อให้ logic ที่เราเขียนเอาไว้นั้นเกิดผิดพลาดขึ้นมา ก้อลองมั่วดูนะค่ะ

ยกตัวอย่างเช่นในการทำหน้า login ด้วย username password  เราใช้ SQL Statement ดังนี้
Code:
$SQL = "select *
        from member
        where username ='$_POST[username]' and password ='$_POST[password]';";

เราไปกำหนดให้ username เป็น 'admin' password มีค่าเป็น '1234' ดังนั้นทดสอบ login ดังภาพที่ 1
หลังจากนั้นเราจะใช้ function mysql_num_rows ในการนับ recordset ว่ามีจำนวนเท่าไหร่ หาก query ถูกต้องแสดงผลลัพธ์ที่มากกว่าศูนย์



ดังนั้นหากคุณลอง กรอก username password ดังรูปที่ 2 จะเห็นได้ว่า ผลลัพธ์จะเป็นจริงเสมอ
ดังนั้นการทำงานของคุณอาจจะผิดพลาดได้ หาก logic ในการ login ไม่ได้ทำการตรวจสอบจำนวนที่แน่นอนใน recordset ที่ได้มา



Nothing for guest!

ข้อมูลจาก ruk-com.in.th

ไม่มีความคิดเห็น:

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

;