2012-03-12 14 views
9

Desarrollé un sitio web para un cliente donde publicarán imágenes de su mercancía en línea. La url es www.domiainname.com/item-details.cfm?sku=125. Alguien intentó navegar al www.domiainname.com/item-details.cfm?sku=125%20and%203=3 que produjo y error en el que me notificaron.¿Es este un ejemplo de ataque de inyección SQL?

También he recibido informes de errores de:

[email protected]@version-- 
item-details.cfm?sku=1291'[email protected]@version 
[email protected]@version 

Los tres últimos ejemplos son sin duda de alguien que intenta entrar en el sistema, ¿verdad?

Si convertimos esto en procedimientos almacenados, ¿eso reduciría o eliminaría el riesgo de ataques de inserción?

+1

Y sí, las consultas se envuelven en las etiquetas cfqueryparam (por ejemplo, ' – HPWD

+0

Entiendo lo que estaban tratando de hacer con la versión @@, pero ¿qué les diría a 3 = 3? Mi receptor de errores también informa la dirección IP. He pensado en agregar un archivo db tabla y agregué las direcciones IP que recibo de situaciones como esa y luego redirigir a esos usuarios a google o algo. ¿Es esto efectivo o solo un ejercicio en futililty? ? – HPWD

+1

Al agregar una tautología (p. Ej., 3 = 3) están intentando obtener todos los resultados de la base de datos que pueden. Sin embargo, tal vez no sean tan inteligentes como todo porque necesitarían usar O en ese caso en lugar de Y! Siempre que use '', debe estar a salvo de los ataques de inyección de SQL (al menos en SELECT, aún puede ser vulnerable a ataques XSS en INSERT y UPDATE). Aún así, es una buena idea validar sus parámetros para que pueda atrapar el error antes de que ocurra - intente hacer '' para atrapar este, o use 'isNumeric()' ser notificado. –

Respuesta

8

Sí, parece que alguien está siendo malicioso.

El uso de cfqueryparam evitará ataques de inyección de SQL. En caso de duda (y es CF), pregunte a Ben:

SQL Injection Attacks, Easy To Prevent, But Apparently Still Ignored

Ejemplo:

<cfquery ...> 
    SELECT * 
    FROM  Products 
    WHERE  SKU=<cfqueryparam value="#URL.SKU#" cfsqltype="CF_SQL_INTEGER"> 
</cfquery> 
+1

Marcar esto como correcto ya que es la respuesta más completa (por ejemplo, uso de ejemplo, enlaces al blog de Ben y Livedocs). Las otras dos respuestas también son técnicamente correctas. – HPWD

2

Uso cfqueryparam y olvidarse de cualquier inyección SQL;)

+0

typo ... * olvide –

0

Sí, alguien intentó inyección de SQL. Si marca correctamente la variable sku en su código, esto no causará ningún daño.

Cuestiones relacionadas