Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Kaip „Spatie“ paketas padeda užkirsti kelią SQL injekcijai


Kaip „Spatie“ paketas padeda užkirsti kelią SQL injekcijai


„Spatie“ paketas, ypač „Laravel-Permission“ paketas, padeda užkirsti kelią SQL injekcijai pirmiausia per jo integraciją su įmontuotais „Laravel“ saugos mechanizmais, o ne tiesiogiai įgyvendinant savo SQL injekcijos prevencijos funkcijas. Kaip tai išsamiai prisideda prie SQL injekcijų prevencijos:

1. Pasinaudokite „Laravel“ užklausų kūrimo priemone ir iškalbingu ORM
„Spatie“ pakete naudojamas iškalbingas „Laravel“ „ORM“ ir „Query Builder“, kad galėtų sąveikauti su duomenų baze. „Laravel“ užklausų kūrėjas ir iškalbingas automatiškai naudoja parametrizuotas užklausas ir paruoštus teiginius, kurie atskiria SQL kodą nuo vartotojo įvesties duomenų. Tai reiškia, kad vartotojo įvestys niekada nėra tiesiogiai sujungtos į SQL eilutes, neleidžiant užpuolikai švirkščiant kenkėjišką SQL kodą. Prieš vykdydama užklausas, „Laravel“ tinkamai išvengia įvesties verčių, taip mažindamas SQL injekcijos riziką [1] [5].

2. Vaidmenų ir leidimų valdymas be neapdorotų užklausų
„Spatie“ paketas valdo vaidmenis ir leidimus naudodami iškalbingus modelius, tokius kaip „vaidmuo“ ir „leidimai“. Kai priskiriate leidimus ar vaidmenis, naudojate tokius metodus kaip „$ Role-> GivePermissionTO ($ leidimas)`, kurie iš vidaus naudoja saugių „Laravel“ užklausų kūrimo metodus. Tai išvengia neapdorotų SQL užklausų, linkusių į injekcijos pažeidžiamumą [1].

3. Venkite nesaugių dinaminių užklausų
Nors „Laravel“ užklausų kūrėjas apsaugo nuo verčių injekcijos, jis automatiškai neapsaugo dinaminių stulpelių pavadinimų ar neapdorotų SQL fragmentų. „Spatie“ paketas išvengia nesaugaus dinaminio SQL, neleisdamas nefiltruoto vartotojo įvesties tiesiogiai paveikti užklausos struktūrą (pvz., Stulpelių pavadinimus ar užsakymo sąlygas), kuri yra bendras injekcijos vektorius. Tai svarbu, nes „Laravel“ apsauga taikoma vertėms, bet ne SQL identifikatoriams, tokiems kaip stulpelių pavadinimai [7].

4. Skatinti mažiausiai privilegijų principą
Paketas taip pat skatina geriausią praktiką, pavyzdžiui, apriboti duomenų bazės leidimus vartotojams. Duomenų bazių vartotojams priskiriant tik būtinus leidimus, net jei įvyksta injekcijos ataka, žala yra ribota. Šis mažiausio privilegijos principas papildo SQL injekcijų prevenciją, sumažinant galimą atakos poveikį [1].

5. Nėra tiesioginio neapdoroto SQL naudojimo
Pakuotėje, kur įmanoma, vengia naudoti neapdorotus SQL užklausas. Jei reikalingos neapdorotos užklausos, „Laravel“ rekomenduojamas požiūris yra aiškiai naudoti paruoštus teiginius ar parametrų įrišimą, kad būtų užtikrinta, jog įėjimai yra dezinfekuojami, o spatie laikosi pasikliaudama „Laravel“ užklausų kūrimo ir iškalbinga ORM [5].

Apibendrinant galima pasakyti, kad „Spatie“ paketas padeda užkirsti kelią SQL injekcijai, pasikliaujant saugiu „Laravel“ užklausų kūrimu ir parametrų surišimo mechanizmais, vengiant nesaugaus RAW SQL ir skatinant geriausią praktiką, pavyzdžiui, mažiausiai privilegiją. Jis pats ne įgyvendina SQL injekcijų prevenciją, tačiau pasitelkia patikimas „Laravel“ funkcijas, kad užtikrintų saugią duomenų bazės sąveiką valdant vaidmenis ir leidimus [1] [5] [7].

Citatos:
[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_funkctions_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-prevent-sql-innection-in-php
[7] https://swiftmade.co/blog/2019-04-10-Orderby-sql-inentict/
[8] https://www.acunetix.com/websitesecurity/sql-innety/