Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

361
Visualizações
¿Qué es la inyección SQL y cómo puedo evitarla?
over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

La inyección de SQL es un tipo de ataque informático que consiste en la infiltración de código intruso dentro de las sentencias/consultas a ejecutar en la base de datos. Esta infiltración suele ocurrir a través de los parámetros pasados por los usuarios a un programa o a través de un formulario web.

El objetivo de la intrusión suele ser malicioso y puede causar daños importantes: revelación de datos, modificación de contenido, suplantación de identidad, borrado y destrucción de datos o estructuras dentro de la base de datos...

Muchos programadores asumen que los usuarios siempre van a introducir datos válidos y que las consultas por tanto van a ser fiables, y no toman medidas especiales a la hora de armar sentencias que ejecutan en la base de datos. Eso hace sus aplicaciones vulnerables a este tipo de ataques.

EJEMPLO: imagina que tienes una página web con un formulario para actualizar los datos del usuario en tu base de datos, pero no saneas esas entradas antes de utilizarlas. En PHP podrías tener algo como esto:

$sql = "UPDATE usuarios SET nombre = '".$_POST["nombre"]."' WHERE id = ".$_POST["id"];

Ahora imagina que el usuario malicioso escribe que su nombre es Pepito' WHERE 1=1;--. Tu sentencia SQL quedará así:


UPDATE usuarios SET nombre = 'Pepito' WHERE 1=1;--' WHERE id = 123

Los caracters -- indican que lo que sigue es un comentario y se ignora en la base de datos, por lo que se ejecuta es simplemente esto:

UPDATE usuarios SET nombre = 'Pepito' WHERE 1=1;


El usuario malicioso ha inyectado código SQL y ha hecho que todos los usuarios en tu base de datos se llamen Pepito a partir de ahora. Si además permites múltiples sentencias a la misma vez, el usuario malicioso podría pasar algo como '; DROP TABLE usuarios;-- y borrar toda la tabla.

¿Cómo puedo evitar la inyección SQL?

Para evitar la inyección SQL basta con seguir una serie sencilla de directrices:

  • DESCONFÍA siempre de las entradas del usuario. Preprocésalas, sanéalas o compruébalas, pero nunca las uses directamente. Debes asumir siempre que el usuario va a intentar atacar tu base de datos; queremos pensar que todos los usuarios son buenas personas, pero basta un único usuario malicioso para destruirlo todo.

  • EVITA los SQL dinámicos. Son el error más común a la hora de ejecutar sentencias a la base de datos y es lo que aprovechan los usuarios maliciosos para atacar tu código. La solución es fácil: no concatenes la consulta SQL con las entradas del usuario, y en su lugar

  • UTILIZA sentencias preparadas (también llamadas parametrizadas). Ofrecen una estrategia más eficiente y menos propensa a errores. Además, los principales sistemas de bases de datos modernos soportan sentencias preparadas con variables vinculadas.

  • LIMITA el acceso a la base de datos. No utilices superusuarios (root) sino usuarios con acceso personlizado/limitado a la base de datos (aunque esto no siempre está al alcance de todos los desarrolladores).

  • MODERNIZA tu código. Mantén tu código al día en materia de seguridad, no utilices métodos obsoletos o no recomendados. Hay motivos por los que están obsoletos.

    Por ejemplo, un error relacionado con la modernización que se ve frecuentemente en StackOverflow es el caso particular de PHP y las funciones mysql_*, que deberían evitarse y usar MySQLi (mysqli_*) o PDO en su lugar. Para más información sobre ese tema, lee la pregunta ¿Cómo evitar la inyección SQL en PHP?

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda