¿Cómo solucionar la inyección SQL en .net core para parámetros de cadena en métodos GET?
Aplicación Net Core. Tengo muchas API en mi aplicación. Ejecuté una herramienta de escaneo de seguridad y encontré una inyección SQL en la siguiente API:
[HttpGet]
[Route("getdata")]
public async Task<string> GetData(string param1 = "", string param2 = "", string param3 = "")
{
//lógica
}
Abajo se muestra un comentario del informe de escaneo de seguridad:
URL https://mywebapp/getdata/getdata?
param1=S+5.0145%27+AND+%271%27%3D%271¶m2=T102.5.42¶m3=Bulgaria
Método GET
Parámetro param1
Ataque S 5.0-145' AND '1'='1
Tengo muchas otras API, pero no tengo comentarios de inyección SQL, por ejemplo:
[HttpGet]
[Route("mydetails/{param1}")]
public async Task<string> mydetails(string param1)
{
}
En esta API no tengo comentarios de inyección SQL. ¿Alguien puede ayudarme a solucionar esto? Cualquier ayuda sería apreciada. Gracias.
davy.ai
Para corregir la vulnerabilidad de inyección SQL en la API
GetData
, se deben utilizar consultas con parámetros en lugar de concatenar directamente la entrada del usuario en las declaraciones de SQL. Las consultas con parámetros aseguran que las entradas del usuario estén correctamente sanitizadas y evitan que se ejecuten declaraciones de SQL maliciosas. Aquí hay una versión actualizada de la APIGetData
que utiliza consultas con parámetros:Con este cambio, las entradas del usuario están correctamente sanitizadas y se elimina la vulnerabilidad de inyección SQL.
Cabe señalar que no todas las vulnerabilidades de inyección SQL serán detectadas por herramientas de escaneo de seguridad, por lo que es importante siempre utilizar las mejores prácticas, como las consultas con parámetros, para asegurar que su aplicación sea segura.