SQL Injection คืออะไร ?

SQL Injection

Written by admin

19 มีนาคม 2023

SQL Injection คืออะไร ?

Ads



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

วิธีการทำงานของ SQL Injection

วิธีการทำงานของ SQL Injection คือ การป้อนข้อมูลที่ไม่ได้รับการตรวจสอบเข้าสู่ฐานข้อมูล ดังนั้นเมื่อเราเขียนโปรแกรมหรือเว็บไซต์ที่รับข้อมูลจากผู้ใช้ อย่างเช่น username หรือ password แล้วเราไม่ตรวจสอบความถูกต้องของข้อมูลที่ผู้ใช้กรอกเข้ามาให้ การกระทำดังกล่าวจะเป็นประตูเปิดให้กับผู้โจมตีที่จะสามารถใส่ข้อมูลชุดพิเศษ (special character) เช่น ', ", ;, -- เข้าไปในคำสั่ง SQL ที่มีอยู่ เพื่อทำให้คำสั่ง SQL เปลี่ยนแปลงหรือเพิ่มเติมได้

ตัวอย่างการโจมตีด้วย SQL Injection ในการ Login ด้วย username และ password ดังนี้

SELECT * FROM users WHERE username='admin' AND password='password';

ผู้โจมตีจะสามารถใส่ข้อมูลชุดพิเศษ เพื่อทำให้คำสั่ง SQL เปลี่ยนแปลงได้ ตัวอย่างเช่น

SELECT * FROM users WHERE username='admin' OR 1=1; -- ' AND password='password';

ในตัวอย่างข้างต้นผู้โจมตีใส่ OR 1=1; -- เพื่อให้ SQL ทำการเปรียบเทียบค่า 1=1 ซึ่งจะเป็นจริงเสมอ และ -- ใช้ในการเขียน comment ที่ไม่ส่งผลต่อการทำงานของ SQL ซึ่งทำให้คำสั่ง SQL ที่เหลือถูกลบทิ้ง ดังนั้นคำสั่ง SQL ที่ผู้โจมตีส่งเข้าไปในระบบจะเหมือนกับ

SELECT * FROM users WHERE username='admin' OR 1=1;

เมื่อคำสั่ง SQL ข้างต้นทำงาน จะได้ผลลัพธ์ที่เป็นจริงเสมอ เนื่องจากเงื่อนไข 1=1 เป็นจริง ซึ่งจะทำให้ผู้ใช้เข้าสู่ระบบได้โดยไม่ต้องใส่รหัสผ่าน

วิธีการป้องกัน

วิธีการป้องกัน SQL Injection คือ การตรวจสอบและกรองข้อมูลที่ผู้ใช้กรอกเข้ามาก่อนส่งไปยังฐานข้อมูล ซึ่งสามารถทำได้โดยใช้ฟังก์ชัน mysqli_real_escape_string() เพื่อป้องกันการโจมตีด้วย SQL Injection และควรใช้ Prepared Statements เพื่อเพิ่มความปลอดภัยในการเชื่อมต่อฐานข้อมูล MySQL โดย Prepared Statements เป็นเทคนิคในการเชื่อมต่อฐานข้อมูล MySQL โดยมีการเตรียมคำสั่ง SQL ล่วงหน้า ดังนั้นไม่จำเป็นต้องนำเข้าข้อมูลจากผู้ใช้โดยตรง และป้องกันไม่ให้ผู้โจมตีสามารถเขียน SQL ภายในแอปพลิเคชันได้

นอกจากนี้ยังมีเครื่องมือในการตรวจสอบ SQL Injection อย่างต่อเนื่องที่ช่วยป้องกันการโจมตีด้วย SQL Injection ได้ เช่น ModSecurity ซึ่งเป็นเครื่องมือระบบป้องกันโจมตี (Intrusion Prevention System) ที่สามารถตรวจสอบ SQL Injection และโจมตีอื่นๆ ได้ นอกจากนี้ยังมีเครื่องมืออื่นๆ เช่น SQLMap, W3af, Burp Suite ฯลฯ ที่ช่วยตรวจสอบและทดสอบการเชื่อมต่อฐานข้อมูล MySQL เพื่อหาช่องโหว่และป้องกัน SQL Injection ในแอปพลิเคชันของคุณ

Ads



ทำเว็บไซต์บริษัท ออกแบบเว็บไซต์บริษัท ราคาถูก เว็บไซต์แสดงโปรไฟล์บริษัท ทำเว็บไซต์องค์กร ออกแบบเว็บไซต์ใหม่ทั้งระบบ ทีมงานมืออาชีพที่ใส่ใจคุณ

Aoo Studio Digital 2U ให้บริการรับวางระบบ ไอที ซัพพอร์ต การตลาดดิจิตอล ทำเว็บไซต์ One Page ทำเว็บไซต์บริษัท

zixzax ทำเว็บไซต์ - ออกแบบเว็บไซต์ - ตัวอย่างเว็บไซต์

[ccpw id=”844″]

[cryptopack id=”834″]

บทความที่เกี่ยวข้อง

mysqli connect (php) คืออะไร ?

mysqli connect (php) คือ เวอร์ชันการเชื่อต่อกับฐานข้อมูลในปัจจุบัน และรองรับ PHP5+ โดย MySQL...

บทความอื่นๆ ที่คุณอาจสนใจ

Non-Fungible Token (NFT) คืออะไร

Non-Fungible Token (NFT) คืออะไร

NFT (Non-Fungible Token) คือสินทรัพย์ดิจิทัลที่แสดงถึงวัตถุในโลกแห่งความเป็นจริง เช่น ศิลปะ ดนตรี...

P2P (Peer-To-Peer) คืออะไร

P2P (Peer-To-Peer) คืออะไร

peer to peer network (P2P) เป็นเครือข่ายคอมพิวเตอร์ธรรมดา เกิดขึ้นครั้งแรกในปลายทศวรรษ...

Internet of Things (IOT) คืออะไร?

Internet of Things (IOT) คืออะไร?

บทนำสั้นๆ เกี่ยวกับ Internet of Things (IOT) อนาคตของ IOT : สิ่งที่เราคาดหวังได้จากมัน Internet of Things คือ...

Phishing (ฟิชชิ่ง) คืออะไร

Phishing (ฟิชชิ่ง) คืออะไร

Phishing (ฟิชชิ่ง) คือการหลอกลวงทางอินเทอร์เน็ต โดยผู้กระทำความผิดจะหลอกให้ผู้ใช้เปิดเผยข้อมูลส่วนตัว เช่น รหัสผ่าน...

0 ความคิดเห็น