Inicio de sesión

RSS

Distribuir contenido

En línea

En este momento hay 1 usuario y 2 invitados en línea.

Evitar la inyección SQL

La inyección SQL consiste en la modificación de las consultas a nuestra base de datos a partir de los parametros pasados por URL al script en PHP.

¿En que consiste?

Vamos a ver un ejemplo de lo que es la inyección, imaginemos que para validar el acceso de un usuario registrado utilizamos la siguiente consulta SQL:

<?
$sql = "SELECT * FROM usr WHERE id = '".$id;
$sql.= "' AND pwd = '".$pwd."'";
?>

Cuando tengamos unos valores para el nombre de usuario (id) y la contraseña del usuario (pwd) tendremos una consulta normal a la base de datos que nos devolverá los datos del usuario si la contraseña es correcta:

SELECT * FROM usr WHERE id = 'root' AND pwd = '4358'

Pero vamos a ver que pasaria si intentaramos modificar la consulta poniendo cómo contraseña ' OR '' = '

SELECT * FROM usr WHERE id = 'root' AND pwd = '' OR '' = ''

En este caso, como '' siempre es igual a '', habremos modificado la consulta para que nos devuelva siempre los datos del usuario aunque la contraseña sea incorrecta, y el visitante malintencionado se podrá conectar como cualquier usuario.

Pero esto es solo un ejemplo, asimismo, el visitante malintencionado podra conseguir contraseñas, borrar, anñadir y modificar datos de nuestra base de datos... por eso es importanto que nos aseguremos que nuestro sitio es seguro en este aspecto.

¿Estoy afectado?

Según la configuración de tu servidor es posible que no te encuentres afectado por este tipo de problemas, pero de todos modos es mejor asegurarse, vamos a ver si nuestro servidor toma la precaución de cambiar las comillas pasadas en las variables ejecutando este código:

<?
if(!isset($_GET["inyeccion"])){
 header("location: ?inyeccion='");
} else {
 echo 'Tu servidor ';
 if($_GET["inyeccion"] != "'")echo 'no ';
 echo 'tiene problemas de inyección';
}
?>

Segun el mensaje que nos muestre deberemos o no preocuparnos.

Autor

Enviar un comentario nuevo

El contenido de este campo se mantiene como privado y no se muestra públicamente.
  • Las direcciones de las páginas web y las de correo se convierten en enlaces automáticamente.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <i> <b> <h2> <h3> <tt> <blockcode>
  • You can enable syntax highlighting of source code with the following tags: <code>, <blockcode>. Beside the tag style "<foo>" it is also possible to use "[foo]". PHP source code can also be enclosed in <?php ... ?> or <% ... %>.
  • Saltos automáticos de líneas y de párrafos.
  • Every instance heading tags will be modified to include an id attribute for anchor linking.
  • Se pueden agregar imágenes a este envío.
  • Every instance of "<!--tableofcontents-->" in the input text will be replaced with a collapsible mediawiki-style table of contents. Accepts options for title, list style, minimum heading level, and maximum heading level as follows: <!--tableofcontents list: ol; title: Table of Contents; minlevel: 1; maxlevel: 3;-->. All arguments are optional and defaults are shown.

Más información sobre opciones de formato

CAPTCHA
Esta pregunta es para verificar que eres humano y así mismo eviar el SPAM.
Image CAPTCHA
Copy the characters (respecting upper/lower case) from the image.

Publicidad