แพ็คเกจ Spatie โดยเฉพาะแพ็คเกจการรับส่งลาเวลล์ช่วยในการป้องกันการฉีด SQL เป็นหลักผ่านการรวมเข้ากับกลไกการรักษาความปลอดภัยในตัวของ Laravel แทนที่จะใช้คุณสมบัติการป้องกันการฉีด SQL ของตัวเองโดยตรง นี่คือวิธีการป้องกันการฉีด SQL ในรายละเอียด:
1. การใช้ประโยชน์จากผู้สร้างแบบสอบถามของ Laravel และ Orm ที่มีคารมคมคาย
แพ็คเกจของ Spatie ใช้ ORM และ Query Builder ของ Laravel เพื่อโต้ตอบกับฐานข้อมูล ตัวสร้างการสืบค้นของ Laravel และ Eloquent ใช้การสืบค้นพารามิเตอร์และคำสั่งที่เตรียมไว้โดยอัตโนมัติซึ่งแยกรหัส SQL ออกจากข้อมูลผู้ใช้อินพุต ซึ่งหมายความว่าอินพุตของผู้ใช้จะไม่ถูกรวมเข้ากับสตริง SQL โดยตรงป้องกันไม่ให้ผู้โจมตีฉีดรหัส SQL ที่เป็นอันตราย Laravel หลบหนีค่าอินพุตอย่างถูกต้องก่อนที่จะดำเนินการสืบค้นดังนั้นจึงช่วยลดความเสี่ยงในการฉีด SQL [1] [5]
2. การจัดการบทบาทและการอนุญาตโดยไม่มีแบบสอบถามดิบ
แพ็คเกจ Spatie จัดการบทบาทและการอนุญาตผ่านแบบจำลองที่มีคารมคมคายเช่น `บทบาท 'และ' อนุญาต ' เมื่อคุณกำหนดสิทธิ์หรือบทบาทคุณใช้วิธีการเช่น `$ ROLE-> GIDPERMISTERTO ($ อนุญาต)` ซึ่งใช้วิธีการสร้างแบบสอบถามที่ปลอดภัยภายในของ LARAVEL สิ่งนี้จะหลีกเลี่ยงการสืบค้น SQL ดิบที่มีแนวโน้มที่จะเกิดช่องโหว่การฉีด [1]
3. การหลีกเลี่ยงการสืบค้นแบบไดนามิกที่ไม่ปลอดภัย
ในขณะที่ตัวสร้างการสืบค้นของ Laravel ป้องกันการฉีดในค่า แต่ก็ไม่ได้ป้องกันชื่อคอลัมน์แบบไดนามิกหรือชิ้นส่วน SQL ดิบโดยอัตโนมัติ แพ็คเกจ Spatie หลีกเลี่ยง SQL แบบไดนามิกที่ไม่ปลอดภัยโดยไม่อนุญาตให้ผู้ใช้ที่ไม่มีการกรองมีอิทธิพลโดยตรงต่อโครงสร้างการสืบค้น (เช่นชื่อคอลัมน์หรือคำสั่งซื้อ) ซึ่งเป็นเวกเตอร์ฉีดทั่วไป สิ่งนี้มีความสำคัญเนื่องจากการป้องกันของ Laravel ใช้กับค่า แต่ไม่ใช่ตัวระบุ SQL เช่นชื่อคอลัมน์ [7]
4. สนับสนุนหลักการสิทธิพิเศษน้อยที่สุด
แพ็คเกจยังส่งเสริมแนวทางปฏิบัติที่ดีที่สุดเช่นการ จำกัด การอนุญาตฐานข้อมูลสำหรับผู้ใช้ โดยการกำหนดสิทธิ์ที่จำเป็นให้กับผู้ใช้ฐานข้อมูลเท่านั้นแม้ว่าจะมีการโจมตีฉีดเกิดขึ้นความเสียหายนั้นมี จำกัด หลักการของสิทธิพิเศษน้อยที่สุดนี้ช่วยเสริมการป้องกันการฉีด SQL โดยการลดผลกระทบจากการโจมตีที่อาจเกิดขึ้น [1]
5. ไม่มีการใช้ SQL ดิบโดยตรง
แพ็คเกจหลีกเลี่ยงการใช้แบบสอบถาม SQL แบบดิบหากเป็นไปได้ หากจำเป็นต้องมีการสืบค้นแบบดิบวิธีที่แนะนำของ Laravel คือการใช้คำสั่งที่เตรียมไว้หรือการผูกพารามิเตอร์อย่างชัดเจนเพื่อให้แน่ใจว่าอินพุตจะถูกฆ่าเชื้อ
โดยสรุปแพ็คเกจ spatie ช่วยป้องกันการฉีด SQL โดยการใช้กลไกการสืบค้นที่ปลอดภัยและกลไกการผูกพารามิเตอร์ของ Laravel หลีกเลี่ยง SQL ดิบที่ไม่ปลอดภัยและส่งเสริมแนวปฏิบัติที่ดีที่สุดเช่นสิทธิพิเศษน้อยที่สุด มันไม่ได้ใช้การป้องกันการฉีด SQL แต่ใช้ประโยชน์จากคุณสมบัติที่แข็งแกร่งของ Laravel เพื่อให้แน่ใจว่าการโต้ตอบฐานข้อมูลที่ปลอดภัยเมื่อจัดการบทบาทและการอนุญาต [1] [5] [7]
การอ้างอิง:
[1] https://escape.tech/blog/laravel-sql-injection-guide/
[2] https://www.stackhawk.com/blog/sql-injection-prevention-laravel/
[3] https://www.reddit.com/r/laravel/comments/bbxhoc/unsafe_sql_functions_be_aware_of_your/
[4] https://stitcher.io/blog/unsafe-sql-functions-in-laravel
[5] https://pentest-tools.com/blog/laravel-application-security-guide
[6] https://stackoverflow.com/questions/60174/how-can-i-i-prevent-sql-injection-in-php
[7] https://swiftmade.co/blog/2019-04-10-orderby-sql-injection
[8] https://www.acunetix.com/websitesecurity/sql-inject