Red de conocimiento informático - Conocimiento del nombre de dominio - Cómo protegerse mejor contra ataques SQL

Cómo protegerse mejor contra ataques SQL

1. Utilice declaraciones de filtro parametrizadas

Para protegerse contra la inyección de SQL, la entrada del usuario nunca debe incrustarse directamente en una declaración SQL. En su lugar, se deben filtrar las entradas del usuario o se deben utilizar declaraciones parametrizadas. Las declaraciones parametrizadas utilizan parámetros en lugar de incorporar la entrada del usuario en la declaración. En la mayoría de los casos, se corregirá la declaración SQL. Luego limite la entrada del usuario a un parámetro. A continuación se muestra un ejemplo utilizando la API de Java y JDBC:

PreparedStatement prep = conn.prepareStatement("SELECT * FROM USERS WHERE PASSWORD=?");

prep.setString(1, pwd);

En general, hay dos formas de garantizar que una aplicación no sea vulnerable a ataques de inyección SQL: una es utilizar la revisión de código y la otra es imponer el uso de declaraciones parametrizadas. Forzar declaraciones parametrizadas significa que las declaraciones SQL incrustadas en la entrada del usuario serán rechazadas en tiempo de ejecución. Sin embargo, actualmente no existen muchos programas que admitan esta función. Por ejemplo, el motor de base de datos H2 admite esta funcionalidad.

2. Evite también el uso de intérpretes. Los piratas informáticos utilizan intérpretes para ejecutar comandos ilegales.

3. Para evitar la inyección de SQL, evite también el uso de mensajes de error detallados que los piratas informáticos puedan explotar. Utilice el mecanismo de validación de entrada estándar para verificar la longitud, el tipo, la declaración, las reglas empresariales, etc. de todos los datos de entrada.

4. Utilice herramientas especializadas de escaneo de vulnerabilidades. Pero simplemente defenderse contra los ataques de inyección SQL no es suficiente. Los atacantes ahora pueden buscar automáticamente objetivos de ataque y ejecutarlos. Su técnica puede incluso aplicarse fácilmente a otras vulnerabilidades en la arquitectura de red. Las empresas deberían invertir en herramientas especializadas de escaneo de vulnerabilidades, como el famoso Acunetix Web Vulnerability Scanner. Una herramienta de escaneo de vulnerabilidades completa es diferente de una herramienta de escaneo de red que busca específicamente vulnerabilidades de inyección SQL en un sitio web. Los últimos escáneres de vulnerabilidades buscan vulnerabilidades recién descubiertas.

5. Por último, las empresas deben realizar controles de seguridad del código en todas las etapas del proceso de desarrollo de aplicaciones web. En primer lugar, implementar pruebas de seguridad antes de implementar aplicaciones web es más importante y de mayor alcance que nunca. Las empresas también deben probar los sitios web después de la implementación utilizando herramientas de escaneo de vulnerabilidades y herramientas de monitoreo de sitios web.