แพ็คเกจมิดเดิลแวร์ SQL Injection ใน Laravel ทำงานโดยการสกัดกั้นการร้องขอ HTTP ที่เข้ามาและตรวจสอบข้อมูลอินพุตเพื่อตรวจจับและป้องกันการโจมตีการฉีด SQL ก่อนที่จะถึง Logic แอปพลิเคชันหรือฐานข้อมูล นี่คือคำอธิบายโดยละเอียดเกี่ยวกับฟังก์ชั่นมิดเดิลแวร์ดังกล่าว:
ฟังก์ชั่นหลัก
- มิดเดิลแวร์ทำหน้าที่เป็นตัวกรองบนข้อมูลคำขอ HTTP รวมถึงพารามิเตอร์แบบสอบถามอินพุตแบบฟอร์มและข้อมูลที่ผู้ใช้จัดหาอื่น ๆ
- มันตรวจสอบและฆ่าเชื้ออินพุตเหล่านี้เพื่อให้แน่ใจว่าพวกเขาไม่มีรหัสหรือรูปแบบ SQL ที่เป็นอันตรายที่สามารถใช้ในการจัดการแบบสอบถาม SQL
- โดยการฆ่าเชื้ออินพุตก่อนกำหนดจะป้องกันไม่ให้ข้อมูลที่ไม่ปลอดภัยจากการถูกส่งผ่านไปยังแบบสอบถาม SQL ดิบหรือผู้สร้างแบบสอบถามที่อาจเสี่ยงต่อการฉีด
กลไกทางเทคนิค
-มิดเดิลแวร์มักจะสแกนสตริงอินพุตสำหรับอักขระที่น่าสงสัยหรือคำหลัก SQL ที่ใช้กันทั่วไปในการโจมตีแบบฉีดเช่น `'`, `` `` ``-', `drop`,` เลือก 'ฯลฯ
- อาจหลบหนีหรือลบอักขระอันตรายหรือปฏิเสธคำขอทันทีหากตรวจพบรูปแบบที่เป็นอันตราย
- แพ็คเกจมิดเดิลแวร์บางแห่งยังให้การบันทึกที่สามารถกำหนดค่าได้ของอินพุตที่น่าสงสัยช่วยให้นักพัฒนาสามารถตรวจสอบและวิเคราะห์ความพยายามในการโจมตีที่อาจเกิดขึ้น
- มิดเดิลแวร์สามารถนำไปใช้ทั่วโลกกับทุกเส้นทางหรือเลือกเส้นทางเฉพาะที่ต้องการการป้องกันเพิ่มเติม
การรวมใน Laravel
- แพ็คเกจถูกติดตั้งผ่าน Composer และกำหนดค่าโดยการเผยแพร่ไฟล์การกำหนดค่า
- มิดเดิลแวร์ลงทะเบียนในเคอร์เนล HTTP ของ Laravel ไม่ว่าจะเป็นทั่วโลกหรือเป็นมิดเดิลแวร์เส้นทาง
- เมื่อลงทะเบียนแล้วจะประมวลผลคำขอที่เข้ามาทุกครั้งหรือส่งผ่านโดยอัตโนมัติ
- นักพัฒนาสามารถปรับแต่งพฤติกรรมเช่นการบันทึกการบล็อกหรือกลยุทธ์การฆ่าเชื้อผ่านการกำหนดค่า
การป้องกันเพิ่มเติม
- นอกเหนือจากการฉีด SQL แล้วแพ็คเกจมิดเดิลแวร์บางตัวยังป้องกันการฉีด LDAP โดยการฆ่าเชื้อที่ใช้ในการสืบค้นบริการไดเรกทอรี
- มิดเดิลแวร์เติมเต็มการป้องกันในตัวของ Laravel เช่นการเชื่อมโยงพารามิเตอร์ ORM ที่มีคารมคมคายและการสืบค้นซึ่งจะหลบหนีอินพุตโดยอัตโนมัติในกรณีส่วนใหญ่
- มันมีประโยชน์อย่างยิ่งเมื่อใช้การสืบค้น SQL แบบดิบหรือการแสดงออกแบบดิบ (`` wheraw`, `selectraw`) ถูกนำมาใช้ซึ่งมีความเสี่ยงโดยเนื้อแท้
ตัวอย่างการใช้งาน
-หลังจากติดตั้งแพ็คเกจมิดเดิลแวร์ (เช่นผ่าน `นักแต่งเพลงต้องการการป้องกัน/SQL-Query-Protection`) คุณจะเผยแพร่ config และ clear cache
- คุณลงทะเบียนมิดเดิลแวร์ใน `app/http/kernel.php` ทั้งทั่วโลกหรือเป็นมิดเดิลแวร์เส้นทาง
- คำขอที่เข้ามาจากนั้นจะได้รับการกรองโดยมิดเดิลแวร์ซึ่งจะฆ่าเชื้ออินพุตหรือบล็อกการสืบค้นที่เป็นอันตรายก่อนที่จะไปถึงคอนโทรลเลอร์หรือเลเยอร์ฐานข้อมูลของคุณ
โดยสรุปแพ็คเกจมิดเดิลแวร์ SQL Injection ใน Laravel ทำงานเป็นเลเยอร์ความปลอดภัยเชิงรุกที่ตรวจสอบและฆ่าเชื้ออินพุตผู้ใช้ที่ระดับคำขอ HTTP เพื่อป้องกันการโจมตีของการฉีด SQL มันช่วยเพิ่มความคุ้มครองดั้งเดิมของ Laravel โดยกำหนดเป้าหมายการสืบค้นดิบและรูปแบบอินพุตที่น่าสงสัยให้การบันทึกและการปิดกั้นที่กำหนดค่าได้เพื่อปกป้องแอปพลิเคชันและฐานข้อมูล [3] [4] [5]
การอ้างอิง:
[1] https://escape.tech/blog/laravel-sql-injection-guide/
[2] https://www.stackhawk.com/blog/sql-injection-prevention-laravel/
[3] https://github.com/aswinsasi/inject-protector
[4] https://gist.github.com/bewithdhanu/3acd9a44c74e9f2696a5e41692fa89a3
[5] https://acquaintsoft.com/answers/what-is-sql-injection-protection-in-laravel
[6] https://stackoverflow.com/questions/15778572/preventing-sql-injection-in-node-js
[7] https://cheatsheetseries.owasp.org/cheatsheets/laravel_cheat_sheet.html
[8] https://stackoverflow.com/questions/35439234/laravel-dependency-injection