สิ่งที่ฉันได้เห็นจากการโจมตีด้วยการฉีด SQL ดูเหมือนว่าจะแนะนำว่าการสืบค้นแบบ parametrized โดยเฉพาะอย่างยิ่งในขั้นตอนการจัดเก็บเป็นวิธีเดียวที่จะป้องกันการโจมตีดังกล่าว ในขณะที่ฉันกำลังทำงาน (ย้อนกลับไปในยุคมืด) ขั้นตอนการจัดเก็บถูกมองว่าเป็นการปฏิบัติที่ไม่ดีส่วนใหญ่เป็นเพราะพวกเขาเห็นว่าบำรุงรักษาได้น้อยลง ทดสอบได้น้อยลง คู่อย่างมาก และล็อคระบบเป็นผู้ขายรายเดียว ( คำถามนี้ครอบคลุมเหตุผลอื่น ๆ )
แม้ว่าเมื่อฉันกำลังทำงานอยู่โครงการต่าง ๆ แทบไม่รู้ตัวถึงความเป็นไปได้ของการโจมตีดังกล่าว มีการนำกฎต่างๆมาใช้เพื่อรักษาความปลอดภัยของฐานข้อมูลต่อการทุจริตในหลาย ๆ ประเภท กฎเหล่านี้สามารถสรุปได้ดังนี้:
- ไม่มีไคลเอ็นต์ / แอปพลิเคชันเข้าถึงตารางฐานข้อมูลโดยตรง
- การเข้าถึงตารางทั้งหมดทั้งหมดผ่านมุมมอง (และการอัปเดตทั้งหมดไปยังตารางฐานถูกทำผ่านทริกเกอร์)
- รายการข้อมูลทั้งหมดมีโดเมนที่ระบุ
- ไม่มีรายการข้อมูลที่ได้รับอนุญาตให้เป็นโมฆะ - นี่เป็นนัยที่ DBAs บดฟันของพวกเขาในบางครั้ง; แต่ถูกบังคับใช้
- บทบาทและการอนุญาตได้รับการตั้งค่าอย่างเหมาะสม - ตัวอย่างเช่นบทบาทที่ถูก จำกัด ให้สิทธิ์ในการดูข้อมูลเท่านั้น
ดังนั้นชุดของกฎ (บังคับ) เช่นนี้ (แม้ว่าไม่จำเป็นต้องเป็นชุดนี้โดยเฉพาะ) เป็นทางเลือกที่เหมาะสมในการค้นหาแบบ parametrized ในการป้องกันการโจมตี SQL injection? ถ้าไม่ทำไมล่ะ สามารถรักษาความปลอดภัยฐานข้อมูลจากการโจมตีดังกล่าวด้วยฐานข้อมูล (เฉพาะ) มาตรการเฉพาะได้หรือไม่?
แก้ไข
การเน้นของคำถามเปลี่ยนไปเล็กน้อยในแง่ของการตอบสนองเริ่มต้นที่ได้รับ คำถามพื้นฐานไม่เปลี่ยนแปลง
EDIT2
วิธีการที่ใช้การสืบค้นแบบพารามิเตอร์นั้นดูเหมือนจะเป็นเพียงขั้นตอนต่อพ่วงในการป้องกันการโจมตีระบบ สำหรับฉันแล้วดูเหมือนว่าการป้องกันขั้นพื้นฐานมากขึ้นเป็นที่ต้องการทั้งสองอย่างและอาจเชื่อถือข้อความค้นหาดังกล่าวที่ไม่จำเป็นหรือมีความสำคัญน้อยกว่าแม้จะป้องกันการโจมตีจากการฉีดยาโดยเฉพาะ
วิธีการโดยนัยในคำถามของฉันขึ้นอยู่กับ "การสร้างเกราะ" ฐานข้อมูลและฉันไม่รู้ว่ามันเป็นตัวเลือกที่ทำงานได้หรือไม่ การวิจัยเพิ่มเติมได้แนะนำว่ามีวิธีการดังกล่าว ฉันได้พบแหล่งข้อมูลต่อไปนี้ที่ให้คำแนะนำเกี่ยวกับวิธีการประเภทนี้:
http://database-programmer.blogspot.com
http://thehelsinkideclaration.blogspot.com
คุณสมบัติหลักที่ฉันนำมาจากแหล่งข้อมูลเหล่านี้คือ:
- พจนานุกรมข้อมูลที่กว้างขวางผนวกกับพจนานุกรมข้อมูลความปลอดภัยที่ครอบคลุม
- การสร้างทริกเกอร์แบบสอบถามและข้อ จำกัด จากพจนานุกรมข้อมูล
- ย่อเล็กสุดรหัสและเพิ่มข้อมูล
ในขณะที่คำตอบที่ฉันมีจนถึงตอนนี้มีประโยชน์มากและชี้ให้เห็นปัญหาที่เกิดขึ้นจากการเพิกเฉยต่อข้อความค้นหาแบบ จำกัด ในที่สุดพวกเขาไม่ตอบคำถามดั้งเดิมของฉัน (ตอนนี้เน้นที่ตัวหนา)