บทความด้านคอมพิวเตอร์

บทความ, องค์ความรู้, การทำเว็บไซต์, ทำโปรแกรม

ค้นหา และศึกษาบทความด้านคอมพิวเตอร์ การเขียนเว็บไซต์ ทำเว็บไซต์ ทำโปรแกรม ทำโปรแกรมบนมือถือ ออกแบบเว็บไซต์ การเขียนโปรแกรม การออกแบบเว็บไซต์ ฐานข้อมูล รวมไปถึงข่าวแวดวง IT, Computer และบทความต่าง ๆ ที่ถูกคัดสรรมาอย่างดี ด้วยเนื้อหาที่สดใหม่ กระชับ และอ่านเข้าใจง่าย ซึ่งจะทำให้คุณสามารถที่จะแก้ไขปัญหาต่าง ๆ จากบทความ และองค์ความรู้ที่ทางเราเลือกมาให้ โดยบทความทุกบทความถูกเขียนขึ้นใหม่ ในเรื่องต่าง ๆ เพื่อนำเสนอมุมมองใหม่ ๆ ให้กับผู้อ่านทุกคน


ประเภทบทความ
บทความด้านคอมพิวเตอร์

    ป้องกัน SQL Injection บน PHP และ MySQLi

    บทความวันที่ 18 กุมภาพันธ์ 2557

    SQL Injection คือ วิธีการหนึ่งที่ถูกนำมาใช้ในการเจาะระบบด้วยช่องโหว่ทางการเขียนโปรแกรมรวมกับคำสั่งของ SQL ที่ส่งไปประมวลผล โดยบทความนี้แนะนำวิธีป้องกัน SQL Injection บน PHP และ MySQLi ด้วย 2 วิธี ดังนี้

     

    วิธีป้องกัน SQL Injection บน PHP และ MySQLi

    1. ใช้คำสั่ง prepare เพื่อกรองเงื่อนไขในการประมวลคำสั่ง SQL ด้วย parameter

    2. ใช้ function real_escape_string() สำหรับค่าที่ Input เข้ามาก่อนส่งเข้าเงื่อนไขใน SQL

     

    ตัวอย่างวิธีป้องกัน SQL Injection บน PHP และ MySQLi

    <?
    	$conn = new mysqli("127.0.0.1", "root", "", "db_coffee");
    	$conn->query("set names utf8");
    	$pvc_title = $conn->real_escape_string("%ก%");
    	$sql = " select pvc_title from tb_province where ( pvc_title like ? ) ";
    	$pp = $conn->prepare($sql);
    	$pp->bind_param("s", $pvc_title);
    	$pp->execute();
    	$pp->bind_result($pvc_title);
    	while( $pp->fetch()) {
    	
    		echo $pvc_title.'<br/>';
    		
    	}
    ?>
    

     

    อธิบายคำสั่งเบื้องต้นกับการป้องกัน SQL Injection บน PHP และ MySQLi

    1. บรรทัดที่ 4 คำสั่ง real_escape_string() ใช้สำหรับการป้องกันอักขระแปลกปลอมจากการส่งเข้ามายังโปรแกรม

    2. บรรทัดที่ 5 คำสั่ง SQL จะเปลี่ยนเป็นเครื่องหมาย ? แทนเงื่อนไขแบบเดิม เช่น pvc_title = '$pvc_title'

    3. บรรทัดที่ 6 คำสั่ง prepare() คือ ส่วนเริ่มต้นการใข้คำสั่ง prepare โดยมีการส่งคำสั่ง SQL เป็นค่า parameter

    4. บรรทัดที่ 7 คำสั่ง bind_param คือ ส่วนการกำหนดค่า parameter .ในส่วนของเครื่องหมาย ? ในคำสั่ง SQL โดย ค่า parameter แรก s คือ แทนที่ตัวแปรชนิด String และค่า parameter ที่ 2 แทนค่าตัวแปรที่เป็นเงื่อนไข

    5. บรรทัดที่ 8 คำสั่ง execute() คือ คำสั่งประมวลผล

    6. บรรทัดที่ 9 คำสั่ง bind_result() คือ การผูกเข้ากับ Field ที่ระบุ เพื่อใช้สำหรับการแสดงผล หากกรณีมีการระบุ Field มากกว่า 1 Field ให้กำหนดค่าตัวแปรเพิ่ม เช่น bind_result( $pvc_id, $pvc_title)

    7. บรรทัดที่ 10 - 14 คือ คำสั่งการแสดงผล 


    อ่านเนื้อหาอื่นเพิ่มเติมฟรี ได้ที่
    Devdit - พบคำตอบด้านไอทีและทำตามง่ายๆ



    คำค้นหา รับทำเว็บไซต์, รับเขียนเว็บไซต์, ป้องกัน SQL Injection บน PHP และ MySQLi