inyección de código SQL para hackear tu web o servidor

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.

¿Cómo me puede afectar a mí?
Vamos a ver un ejemplo de lo que es la inyección de código SQL. Imagina que para validar el acceso de un usuario registrado utilizas la siguiente consulta SQL:

<?
$sql = “SELECT * FROM usr WHERE id = ‘” . $id ;
$sql .= “‘ AND pwd = ‘” . $pwd . “‘” ;
?>

Cuando tengas unos valores para el nombre de usuario (id) y la contraseña del usuario (pwd) tendrás una consulta normal a la base de datos que te devolverá los datos del usuario, si es que la contraseña es correcta, cómo en el siguiente ejemplo:

SELECT * FROM usr WHERE id = ‘root’ AND pwd = ’4358′

Pero vamos a ver que pasa si intentamos modificar la consulta poniendo cómo contraseña ‘ OR ” = ‘

SELECT * FROM usr WHERE id = ‘root’ AND pwd = ‘ ‘ OR ” = ‘ ‘

En este caso, cómo usamos el valor ”siempre es igual a”, se habrá modificado la consulta para que devuelva siempre los datos del usuario aunque la contraseña sea incorrecta, y así, el visitante malintencionado podrá conectarse como un usuario autorizado del sistema y podrá conseguir contraseñas, borrar, añadir, modificar registros de tu base de datos, etc… Por este motivo es importante que te asegures de que tu sitio web es completamente seguro en este aspecto.

¿Puedo ser afectado por una inyección de código SQL?
Según la configuración de tu servidor de hosting, 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:

(Crea un archivo llamado prueba.php con el siguiente 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 te muestre, deberás preocuparte o no.

.

¿Que debo hacer para prevenir la inyección SQL?
En el caso de que tu servidor haya dado resultado positivo, será porque no cambia la comilla simple por el caracter , y en este caso, deberás ser tú el que manualmente lo cambie de todas las variables pasadas tanto por URL como vía formulario:

(Crea un archivo llamado inyeccion.php con el siguiente código)

<?
// Evitamos la inyeccion SQL

// Modificamos las variables pasadas por URL
foreach( $_GET as $variable => $valor ){
$_GET [ $variable ] = str_replace ( “‘” , “‘” , $_GET [ $variable ]);
}
// Modificamos las variables de formularios
foreach( $_POST as $variable => $valor ){
$_POST [ $variable ] = str_replace ( “‘” , “‘” , $_POST [ $variable ]);
}
?>

Y añade también este script en todas las páginas en las que realices consultas a tu base de datos:

<?
// Evitamos la inyeccion SQL
include ‘inyeccion.php’ ;
//
// Contenido de la página PHP
//
?>

De esta manera conseguirás hacer consultas a la base de datos desde PHP de una forma más segura.

.

OTRA OPCION:

Con el siguiente código puedes evitar que te inyecten contenido inapropiado a tu página web. Para ello, solo debes incluir en cada uno de tus archivos la linea “include(‘no_ataques.php’);”  Cómo puedes ver en el siguiente ejemplo:

<? include(‘no_ataques.php’); //Tu codigo echo (‘Hola Mundo’); ?>
En el archivo “no_ataques.php” tendrás el siguiente contenido que filtra todo el contenido inapropiado:

.
<? if(is_array($_GET) ) { foreach ($_GET as $_GET_nombre=>$_GET_contenido) { $_GET[$_GET_nombre]= seguridad_x($_GET_contenido); } } if(is_array($_POST) ) { foreach ($_POST as $_POST_nombre=>$_POST_contenido) { $_GET[$_POST_nombre]= seguridad_x($_POST_contenido); } } function seguridad_x($texto){ $texto = stripslashes($texto); $texto = addslashes($texto); $texto= ereg_replace(“;”,”",$texto); $texto= ereg_replace(“<”,”",$texto); $texto= ereg_replace(“>”,”",$texto); $texto= ereg_replace(“/”,”",$texto); $texto= ereg_replace(‘:’,”",$texto); return $texto; }?>
.
Es imprescindible verificar el código de programación de tus formularios o scripts PHP, ya que los hackers aprovechan cualquier vulneravilidad para atacar sitios web de todo el mundo. Sobretodo, aplicaciones de código abierto cómo osCommerce, PhpNuke, WordPress, Joomla, Prestashop y otros similares, suelen ser el blanco principal de usuarios malintencionados para llevar a cabo sus actividades ilícitas o fraudulentas. Por este motivo, es muy importante instalar siempre las últimas versiones disponibles de estas aplicaciones y también nstalar periódicamente todos los parches de seguridad que vayan apareciendo en los sitios web oficiales de dichas aplicaciones.

 

.



OTROS ARTICULOS RECIENTES :