Balíček Spatie pro Laravel pomáhá zabránit injekci SQL primárně pomocí jeho metod budování dotazů a mechanismů filtrování, které se vyhýbají přímému vložení uživatele do surových dotazů SQL. Klíčové funkce a funkce v balíčku Spatie, které pomáhají při prevenci injekce SQL, zahrnují:
- Metoda povolenýchFILTERS (): Tato funkce umožňuje určit, které filtry jsou povoleny v dotazu, a účinně whitelisting přijatelné parametry dotazu. Omezením filtrů pouze na ty výslovně povolené, brání útočníkům v injekci škodlivého SQL prostřednictvím neočekávaných nebo nebezpečných parametrů dotazu [2].
- Použití Laravel's Query Builder a Eloquent Orm: Balíček Spatie využívá Laravel's Query Builder a Eloquent Orm, které interně používají parametrizované dotazy a připravené prohlášení. Tyto mechanismy automaticky vážou uživatelské vstupy spíše jako parametry, než je zřetězují do surových řetězců SQL, čímž se zabrání útokům na vstřikování [1] [4].
- Vyhýbání se nebezpečným funkcím RAW SQL: Balíček podporuje vyhýbání se surovým dotazům SQL, které přímo interpolují vstup uživatele. Místo toho podporuje pomocí bezpečných abstrakcí, jako jsou filtry a rozsahy, které dezinfigují a ověřují vstupy před dosažením dotazovací vrstvy [2] [3].
Stručně řečeno, balíček Spatie pomáhá prevenci injekce SQL tím, že poskytuje bezpečnější jazyk specifický pro doménu (DSL) pro filtrování a dotazování, který se spoléhá na bezpečný tvůrce dotazů Laravel. Jeho specifické funkce jako `povolené filters ()` pomáhají vstupů whitelistů, což zajišťuje, že v dotazech se používají pouze bezpečné a ověřené parametry, a tak efektivně zmírňují rizika injekce SQL [2].
Citace:
[1] https://escape.tech/blog/laravel-sql-injection-guide/
[2] https://www.reddit.com/r/laravel/comments/bbxhoc/unsafe_sql_functions_be_aware_of_your/
[3] https://sitcher.io/blog/unsafe-sql-functions-in-laravel
[4] https://www.kiuwan.com/blog/top-5-best-pactices-for-developers-ing-preventing-sql-niction-actacks/
[5] https://www.baeldung.com/sql-injection
[6] https://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-intphp
[7] https://stackoverflow.com/questions/1862036/how-do-i-protect-this-Function-from-SQL-injection
[8] https://cheatsheetseries.owasp.org/cheatsheets/sql_injection_prevention_cheat_sheet.html