A Spatie csomag, különösen a Laravel-Permission csomag, elősegíti az SQL befecskendezését elsősorban a Laravel beépített biztonsági mechanizmusaival való integráció révén, ahelyett, hogy a saját SQL injekciós megelőzési tulajdonságait közvetlenül végrehajtja. Itt hogyan járul hozzá az SQL injekció megelőzéséhez:
1. Laravel lekérdezés -építő és ékesszóló ORM kihasználása
A Spatie csomagja a Laravel ékesszóló ORM és Query Builder használatát használja az adatbázissal való interakcióhoz. A Laravel lekérdezés -építője és ékesszóló automatikusan használja a paraméterezett lekérdezéseket és az elkészített utasításokat, amelyek elválasztják az SQL kódot a felhasználói bemeneti adatoktól. Ez azt jelenti, hogy a felhasználói bemeneteket soha nem kapják meg közvetlenül az SQL karakterláncokba, megakadályozva a támadókat, hogy a rosszindulatú SQL -kódot injektálják. A Laravel a lekérdezések végrehajtása előtt megfelelően elkerüli a bemeneti értékeket, ezáltal enyhítve az SQL injekciós kockázatot [1] [5].
2. Szerep és engedélykezelés nyers lekérdezések nélkül
A Spatie csomag olyan ékesszóló modellek révén kezeli a szerepeket és az engedélyeket, mint a „Role” és az „Engedély”. Ha engedélyeket vagy szerepeket rendel fel, olyan módszereket használ, mint például a „$ Role-> GiveMissionTo ($ engedély)”, amelyek belsőleg használják a Laravel biztonságos lekérdezési építési módszereit. Ez elkerüli a nyers SQL -lekérdezéseket, amelyek hajlamosak az injekciós sebezhetőségekre [1].
3. Kerülje el a nem biztonságos dinamikus lekérdezéseket
Míg a Laravel lekérdezés -építője védi az értékekben történő injekciótól, addig nem védi automatikusan a dinamikus oszlopneveket vagy a nyers SQL fragmenseket. A Spatie csomag elkerüli a nem biztonságos dinamikus SQL -t, ha nem engedi, hogy a szűrés nélküli felhasználói bemenet közvetlenül befolyásolja a lekérdezés struktúráját (például oszlopneveket vagy rendelési záradékokat), amely egy általános injekciós vektor. Ez azért fontos, mert Laravel védelme az értékekre vonatkozik, de nem az SQL azonosítókra, mint az oszlopnevek [7].
4. Bátorítva a legkevesebb kiváltsági elvet
A csomag arra is ösztönzi a bevált gyakorlatokat, mint például az adatbázis -engedélyek korlátozása a felhasználók számára. Ha csak a szükséges engedélyeket rendeljük az adatbázis -felhasználókhoz, még ha injekciós támadás is bekövetkezik, a kár korlátozott. A legkevesebb kiváltság ez az alapelve kiegészíti az SQL injekció megelőzését a lehetséges támadási hatás csökkentésével [1].
5. Nincs közvetlen nyers SQL használat
A csomag elkerüli a RAW SQL lekérdezések használatát, ahol lehetséges. Ha nyers lekérdezésekre van szükség, a Laravel által ajánlott megközelítés az elkészített utasítások vagy a paraméterek kötődésének kifejezetten történő felhasználása annak biztosítása érdekében, hogy a bemenetek fertőtlenítsék, amelyet a Spatie ragaszkodik a Laravel lekérdezés -építőjére és az ékesszóló ORM -re támaszkodva [5].
Összefoglalva: a Spatie csomag segít megakadályozni az SQL injekciót azáltal, hogy támaszkodik a Laravel biztonságos lekérdezés -épületére és a paraméterekkötési mechanizmusokra, elkerülve a nem biztonságos RAW SQL -t, és elősegíti a bevált gyakorlatokat, mint a legkevésbé kiváltság. Ez önmagában nem valósítja meg az SQL injekció megelőzését, hanem kihasználja a Laravel robusztus tulajdonságait, hogy biztosítsa a biztonságos adatbázis -interakciókat a szerepek és engedélyek kezelése során [1] [5] [7].
Idézetek:
[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-prevent-sql-inject-in-php
[7] https://swiftmade.co/blog/2019-04-10-ordy-sql-injection/
[8] https://www.acunetix.com/websiteecurity/sql-injection/