mysql_real_escape_string คืออะไร ใช้งานยังไง


หน้าแรก PHP MySQL เกร็ดความรู้ mysql_real_escape_string คืออะไร ใช้งานยังไง
เป็นฟังก์ชันสำหรับเลี่ยงการใช้ตัวอักขระพิเศษในคำสั่ง sql เช่น เครื่องหมาย ' เป็นต้น เพื่่อให้ได้คำสั่ง sql ที่ปลอดภัยสำหรับการ query หรือปลอดภัยจากการเรียกใช้ฟังก์ชัน mysql_query
ยกเว้นเครื่องหมาย % และ _ ซึ่งมีใช้ในคำสั่ง sql

ตัวอย่าง



  Code

<?php
$item = "Zak's and Derick's Laptop";
$escaped_item = mysql_real_escape_string($item);
?>



จากตัวอย่าง ตัวแปร $item จะมีเครื่องหมาย single qoute ( ' ) ซึ่งเป็นอัขระพิเศษ
เมื่อมีการเรียกใช้ฟังก์ชัน mysql_real_escape_string() แล้วเก็บค่าไว้ที่ตัวแปร $escaped_item

ผลลัพธิ์ที่ได้ตัวแปร $escaped_item จะเก็บค่าเท่ากับ
"Zak's and Derick's Laptop";
โดยจะมีการ เครื่องหมาย นำหน้า อักขระพิเศษ
ซึ่งจะมีประโยชน์สำหรับใช้ในการเลี่ยงอักขระพิเศษในคำสั่ง sql

ส่วนการ แฮคข้อมูลโดยการกรอกข้อมูล ที่กล่าวมา สามารถเป็นไปได้ในกรณีระบบล็อกอิน ไม่ปลอดภัย
หรือการใช้คำสั่ง sql ตรวจสอบการล็อกอินไม่ดีพอ หรือ server มีการตั้งค่าระบบไม่มีความปลอดภัย
การใช้ฟังก์ชัน mysql_real_escape_string() มากรองคำสั่ง sql จึงเป็นวิธีที่ปลอดภัย

เช่น คำสั่ง sql สำหรับตรวจสอบการล็อกอินเป็น ดังนี้
$q="SELECT * FROM member WHERE username='$username' and password='$password' ";
หากป้อนข้อมูล username : admin , password : ' or '1' = '1 คำสั่ง sql ก็จะได้เป็น
$q="SELECT * FROM user WHERE username='admin' and password='' or '1' = '1' ";
ถ้าเป็นตามรูปแบบด้านบน จะทำให้สามารถแฮคเข้าระบบล็อกอินได้
หากใช้ฟังก์ชัน mysql_real_escape_string() เช่น
$q="SELECT * FROM member WHERE username='$username' and password='$password' ";
$q=mysql_real_escape_string($q);
ค่า $q สุดท้าย คือ
$q="SELECT * FROM user WHERE username='admin' and password='' or '1' ='1' ";
การ query คำสัง sql ก็จะปลอดภัย

ฟังก์ชัน mysql_real_escape_string() จะคล้ายกับฟังก์ชัน mysql_escape_string() แตกต่างที่
การเรียกใช้งานคำสั่ง mysql_real_escape_string() ต้องมีการติดต่อกับฐานข้อมูล เพื่อสร้าง link_identifier
กล่าวคือหน้านั้นต้องมีการติดต่อกับฐานข้อมูล

ความกังวลเรื่องความปลอดภัย ใช้ว่าเราต้องใช้ฟังก์ชัน mysql_real_escape_string() เสมอไป เพราะโดยส่วนใหญ่
หาก มีการกำหนดค่า magic_quotes_gpc() เท่ากับ on หรือ 1 หรือ true แล้ว ระบบก็จะเลี่ยงอักขระพิเศษ ให้กับตัวแปร
GET POST COOKIE ให้โดยอัตโนมัติ ทดสอบด้วยคำสั่งต่อไปนี้



  Code

<?php
echo get_magic_quotes_gpc(); // หากค่าที่ได้เป็น 1 หมายความว่า ค่าที่ส่งจากตัวแปรจะเลือกอักขระพิเศษโดยอัตโนมัติ
?>



หรือทดสอบโดยการสร้างฟอร์ม มี input textbox และ input submit กรอกเครื่องหมาย ' ใน input textbox แล้วกดปุ่ม submit แล้ว echo ค่าที่ส่งมา หากเครื่องหมาย ' มี อยู่ข้างหน้า แสดงว่า get_magic_quotes_gpc() มีค่า เท่ากับ 1 แสดงว่า ระบบมีเลี่ยงอักขระพิเศษ ให้กับตัวแปร GET POST COOKIE ให้โดยอัตโนมัติ

http://www.ninenik.com/forum_view_65_1.html

ขึ้นไปด้านบน