วันนี้ลองมาดูในเรื่องของการเขียน 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
ไม่มีความคิดเห็น:
แสดงความคิดเห็น