Paket Spatie, zlasti paket Laravel-Permission, pomaga pri preprečevanju vbrizgavanja SQL predvsem s svojo integracijo z vgrajenimi varnostnimi mehanizmi Laravel, ne pa z neposrednim uvedbo lastnih funkcij za preprečevanje vbrizgavanja SQL. Tukaj podrobno prispeva k preprečevanju vbrizgavanja SQL:
1. izkoriščanje Laravelove poizvedbe in zgovorno ORM
Spatiejev paket uporablja zgovorno ORM in poizvedbeni graditelj Laravela za interakcijo z bazo podatkov. Laravel's Builder Builder in zgovorno samodejno uporabljata parametrizirane poizvedbe in pripravljene izjave, ki ločijo kodo SQL od uporabniških vhodnih podatkov. To pomeni, da se uporabniški vhodi nikoli ne povežejo v SQL strune, kar preprečuje, da bi napadalci vbrizgali zlonamerno kodo SQL. Laravel pred izvedbo poizvedb pravilno uide vhodne vrednosti in s tem ublaži tveganja za vbrizgavanje SQL [1] [5].
2. Upravljanje vlog in dovoljenj brez surovih poizvedb
Paket Spatie upravlja vloge in dovoljenja z zgovornimi modeli, kot sta "vloga" in "dovoljenje". Ko dodelite dovoljenja ali vloge, uporabljate metode, kot je `$ vloga-> GivePermissionTo ($ dovoljenje)`, ki notranje uporabljajo Laravel-ove načine varnega gradnje poizvedb. To se izogne surovim poizvedbam SQL, ki so nagnjene k ranljivosti vbrizgavanja [1].
3. Izogibanje nevarnih dinamičnih poizvedb
Medtem ko Laravel -ov poizvedbeni graditelj ščiti pred injiciranjem v vrednostih, ne zaščiti dinamičnih imen stolpcev ali surovih fragmentov SQL. Paket Spatie se izogne nevarnemu dinamičnemu SQL, tako da ne dovoli, da nefiltrirani uporabniški vhod neposredno vpliva na strukturo poizvedb (na primer imena stolpcev ali klavzule o naročilu), kar je skupni vektor injiciranja. To je pomembno, ker Laravelova zaščita velja za vrednosti, ne pa tudi za identifikatorje SQL, kot so imena stolpcev [7].
4. Spodbujanje načela najmanjših privilegijev
Paket spodbuja tudi najboljše prakse, kot so omejevanje dovoljenj za uporabnike baze podatkov. Z dodeljevanjem samo potrebnih dovoljenj uporabnikom baze podatkov, tudi če pride do napada v injiciranje, je škoda omejena. To načelo najmanj privilegiranja dopolnjuje preprečevanje vbrizgavanja SQL z zmanjšanjem potencialnega napada [1].
5. Brez neposredne surove uporabe SQL
Paket se izogne uporabi surovih poizvedb SQL, kjer je to mogoče. Če so potrebne surove poizvedbe, je Laravelov priporočeni pristop uporaba pripravljenih izjav ali vezave parametrov izrecno, da se zagotovi, da se vhodi sanirajo, kar se drži, da se zanaša na Laravel -ov poizvedbe in zgovorno ORM [5].
Če povzamemo, paket Spatie pomaga preprečiti vbrizgavanje SQL, tako da se zanaša na Laravelovo varno gradnjo poizvedb in mehanizme vezave parametrov, izogibanje nevarnim surovim SQL in spodbuja najboljše prakse, kot je najmanj privilegij. Sama ne izvaja preprečevanja vbrizgavanja SQL, ampak uporablja močne lastnosti Laravela, da se zagotovi varno interakcije baze podatkov pri upravljanju vlog in dovoljenj [1] [5] [7].
Navedbe:
[1] https://escape.tech/blog/laravel-sql-iniction-guide/
[2] https://www.stackhawk.com/blog/sql-iniction-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-prevent-sql-iniction-in-php
[7] https://swiftmade.co/blog/2019-04-10-orderby-sql-iniction/
[8] https://www.acunetix.com/websesecurity/sql-iniction/