El paquete Spatie para Laravel ayuda a prevenir la inyección de SQL principalmente mediante el uso de métodos seguros de construcción de consultas y mecanismos de filtrado que evitan integrar directamente la entrada del usuario en consultas SQL sin procesar. Las funciones y características clave en el paquete Spatie que ayudan a prevenir la inyección de SQL incluyen:
- Método permitidofilters (): esta función le permite especificar qué filtros están permitidos en una consulta, efectivamente los parámetros de consulta aceptables en la lista blanca. Al restringir los filtros a solo aquellos permitidos explícitamente, evita que los atacantes inyecten SQL malicioso a través de parámetros de consulta inesperados o inseguros [2].
- Uso del constructor de consultas de Laravel y elocuente ORM: el paquete Spatie aprovecha el constructor de consultas de Laravel y el elocuente ORM, que usa internamente consultas parametrizadas y declaraciones preparadas. Estos mecanismos vinculan automáticamente las entradas de los usuarios como parámetros en lugar de concatenarlos en cadenas SQL sin procesar, evitando así ataques de inyección [1] [4].
- Evitar las funciones SQL en bruto inseguras: el paquete fomenta evitar consultas SQL sin procesar que interpolan directamente la entrada del usuario. En cambio, promueve el uso de abstracciones seguras como filtros y ámbitos que desinfectan y validan las entradas antes de alcanzar la capa de consulta [2] [3].
En resumen, el paquete Spatie ayuda a la prevención de la inyección SQL al proporcionar un lenguaje más seguro específico de dominio (DSL) para filtrar y consultar que se basa en el creador de consultas seguras de Laravel. Sus funciones específicas como `permitidofilters ()` ayudan a las entradas de la lista blanca, asegurando que solo se usen parámetros seguros y validados en consultas, mitigando así los riesgos de inyección SQL de manera efectiva [2].
Citas:
[1] https://escape.tech/blog/laravel-sql-inject-guide/
[2] https://www.reddit.com/r/larel/comments/bbxhoc/unsafe_sql_functions_be_aware_of_your/
[3] https://stitcher.io/blog/unsafe-sql-functions-en-laravel
[4] https://www.kiuwan.com/blog/top-5-best-practices-for-de-developers-on-preventing-sql-injections-attacks/
[5] https://www.baeldung.com/sql-inyección
[6] https://stackoverflow.com/questions/60174/how-can-i-prevent-sql-inject-in-php
[7] https://stackoverflow.com/questions/1862036/how-do-i-protect-this-function-from-sql-inyección
[8] https://cheatsheetseries.owasp.org/cheatsheets/sql_inyection_prevention_cheat_sheet.html