SQL escape/unescape หมายถึงกระบวนการ ทำความสะอาดอินพุตข้อความ เพื่อให้สามารถฝังลงในคำสั่ง SQL ได้อย่างปลอดภัย
การ Escape จะแก้ไขอักขระพิเศษ (เช่น เครื่องหมายคำพูดหรือแบ็กสแลช) ในลักษณะที่ป้องกันข้อผิดพลาดทางไวยากรณ์หรือการเรียกใช้โค้ดที่เป็นอันตราย
การ Unescaping จะแปลงอักขระที่ Escape กลับไปเป็นรูปแบบเดิม ซึ่งโดยปกติแล้วใช้สำหรับการแสดงหรือการประมวลผลเพิ่มเติม
เพื่อป้องกันการโจมตีด้วยการแทรก SQL ซึ่งอินพุตที่เป็นอันตรายสามารถเปลี่ยนแปลงตรรกะของแบบสอบถาม SQL ได้
เพื่อหลีกเลี่ยงข้อผิดพลาดทางไวยากรณ์ ในแบบสอบถามเมื่อข้อมูลมีอักขระเช่น ', " หรือ \
เพื่อรักษาความสมบูรณ์ของข้อมูล เพื่อให้แน่ใจว่าอินพุตของผู้ใช้ถูกเก็บไว้และดึงข้อมูลออกมาตรงตามที่ป้อน
การ Escape ทำได้โดย:
การใส่เครื่องหมายคำพูดเดี่ยวซ้ำในสตริง (เช่น 'O'Brien' จะกลายเป็น 'O''Brien')
การใช้ฟังก์ชันหรือไลบรารีฐานข้อมูลในตัวเพื่อ Escape อินพุตอย่างถูกต้อง
Unescaping เกิดขึ้นเมื่อดึงข้อมูล ซึ่งมักจะจัดการโดยอัตโนมัติโดยฐานข้อมูลหรือเลเยอร์แอปพลิเคชันของคุณ
ในการพัฒนาที่ทันสมัย การดำเนินการนี้โดยทั่วไปจะจัดการโดยแบบสอบถามที่มีพารามิเตอร์ หรือ ORM (Object-Relational Mappers) ซึ่งจัดการการหลบหนีอย่างปลอดภัยและอัตโนมัติ
เมื่อแทรกหรือสอบถามอินพุตของผู้ใช้โดยตรงใน SQL ดิบ (ไม่แนะนำ เว้นแต่จะทำการหลบหนีอย่างถูกต้อง)
เมื่อจัดการกับระบบเดิมหรือสตริง SQL ดิบ ที่ไม่มีการป้องกันอัตโนมัติ
ให้หลีกเลี่ยงอินพุตเสมอ เว้นแต่จะใช้คำสั่งที่เตรียมไว้หรือแบบสอบถามที่มีพารามิเตอร์ ซึ่งเป็นทางเลือกที่ต้องการและปลอดภัยกว่า