En el campo del desarrollo de software, prevenir ataques de inyección SQL es crucial. Si bien las consultas SQL parametrizadas son la mejor manera de limpiar las entradas, algunos desarrolladores aún usan el mecanismo de defensa que escapa de citas individuales y encierra las entradas de los usuarios en citas individuales como alternativa.
Técnica de escape defectuosa
El método implica reemplazar cualquier cita única en la entrada del usuario con cotizaciones individuales dobles y encerrar la cadena completa en cotizaciones individuales:
sSanitizedInput = "'" & Replace(sInput, "'", "''") & "'"
El principio de esta técnica es que cualquier cita sola ingresada por el usuario se neutraliza efectivamente para evitar que la cadena termine. Por lo tanto, cualquier otro personaje, como un signo de semicolon o porcentaje, se convierte en parte de la cadena y no se ejecuta como un comando.
Vulnerabilidad de inyección
]Sin embargo, esta técnica no puede manejar casos en los que la entrada del usuario en sí misma puede contener cotizaciones individuales dobles. En este caso, la cadena terminará y el resto de la entrada se puede ejecutar como comandos SQL.
Ejemplo Entrada
Para ilustrar esto, considere la siguiente entrada del usuario:
'SensitiveData' HAVING AMOUNT>2000 OR ''=''
Después de la ejecución, el código se convertirá en:
SELECT * FROM ACCOUNT WHERE NAME='SensitiveData' HAVING AMOUNT>2000 OR ''=''
Esta entrada inyecta con éxito la cláusula OR en la consulta SQL, sin pasar por la limpieza esperada.
más consideraciones
Es importante tener en cuenta que existen otras vulnerabilidades en esta técnica de escape, que incluye:
Best Practices
no confíe en las técnicas de limpieza de entrada temporales, siga estas mejores prácticas para evitar la inyección de SQL:
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3