วิธีป้องกัน SQL injection PHP กับ codeigniter
บ่อยครั้งคที่เราเขียนโปรแกรมโดยที่ไม่คำนึงถึงความปลอดภัย
เปิดช่องโหว่ให้ผู้ไม่หวังดีสามารถใส่ SQL Injection เข้ามาได้ ยกตัวอย่างเช่น
หน้าจอ login ถ้าเรา รับ parameter เป็น username กับ password แล้วนำไปใช้ใน SQL Query
แบบง่ายๆ เช่น
select * from muser where username='$user_name' and password='$passwrod'
ดูแล้วก็ไม่น่าจะมีอะไรแต่ลองนึกภาพดูนะ ยกตัวอย่างจาก statement ข้างต้น สิ่งที่ได้คือคำสั่งนี้
select * from muser where username='admin' and password='admin1234'
ถ้าหากผู้ไม่หวังดีส่งค่าของ $password เข้ามาแบบนี้ล่ะ test' or '1'='1
ลองแทนค่าดูก็จะได้แบบนี้
select * from muser where username='admin' and password='test' or '1'='1'
คำสั่ง or 1=1 เป็นจริงเสมอรับรองได้เลยว่าไม่ว่าจะใส่ username , password มั่วๆ เข้ามา
ก็สามารถทะลุหน้าจอ login เราเข้าไปได้แน่นอน
แบบนี้แหละเขาเรียกว่าปัญหา SQL injection
แนวทางแก้แบบง่ายๆ เลยนะให้เปลี่ยนไปใช้คำสั่งนี้ครับ
$dbResult = $this->db->query("SELECT * FROM users WHERE username = ?", array($this->input->post('username')));
เพียงเท่านี้ก็สามารถป้องกันปัญหา SQL injection ได้แล้ว
Vetinca_tsu2001 Travis Booth https://wakelet.com/@garfroublide289
ตอบลบsighsotofor