Está en la página 1de 4

FORO Hacking database y SQL-Injection

1. Publicar un mensaje donde socialice con sus compañeros la respuesta a las


preguntas:
¿Qué es ser un hacker ético?
En Colombia, en los últimos años se han presentado situaciones muy
renombradas relacionadas con el Hacking. ¿Qué opina al respecto?
¿Qué es SQL-Injection?
¿Qué mecanismos pueden establecerse para prevenir la inyección de SQL?

2. Revisar los mensajes de al menos dos de sus compañeros y opinar


complementando las respuestas.

¿Qué es un Hacker Ético?

Se podría resumir que un hacker ético es aquella persona o grupo de personas


con conocimientos avanzados de redes informáticas, programación, plataformas y
computadoras en general, que son contratas por una persona en particular y/o
organización ya sea esta grande, pequeña o mediana para encontrar fallas y
vulnerabilidades en sus sistemas, equipos de computadoras y sus redes, para
evitar así la piratería informática, actos delictivos y ataques cibernéticos que son
ocasionados por Crackers o personas que buscan un interés particular en realizar
y lleva a cabo este tipo de artimañas que atenta contra la seguridad, la integridad,
confidencialidad y disponibilidad de los sistemas de información de cualquier
organización. El objetivo de un Hacker Ético, es poner en el lugar de un Cracker y
simular un posible ataque cibernético a la red, sistemas o computadoras para
detectar y encontrar fallas y así mismo dar un reporte bien detallado de las fallas
encontradas y una posible solución o mejoras a las mismas.

En Colombia como en muchos países este tipo de actos se ha convertido desde


ya hace más de una década muy frecuente debido al crecimiento y expansión de
la red Internet a nivel mundial. Vemos que el internet se ha convertido en una
herramienta y sustancia muy esencial en nuestro dia a dia siendo uno de los
pilares más importantes dentro una organización y también en nuestros hogares,
pues dependemos de el para hacer realidad muchas cosas y para la propia
subsistencia, avance y desarrollo del ser humano. Por consiguiente, la mano de
obra calificada en esta área ha aumentado exponencialmente en los últimos años,
puesto que es un área muy extensa y el dia de hoy existen personas muy expertas
en ese tema. Muchos utilizan el conocimiento que adquieren ya sea este empírico
o no, para el bien común, el crecimiento personal, el crecimiento profesional,
empresarial y bien de la humanidad. Pero hay cierto número de personas que
utilizan el conocimiento para delinquir cibernéticamente y así sacar provecho de
uno de los activos más importante dentro de una organización, quizás el más
importante y este es la INFORMACION.

¿Qué es SQL Injection?

Una de las vulnerabilidades más comunes es la inyección SQL, que compromete


los servidores que permite al atacante enviar o “inyectar” instrucciones SQL de
forma maliciosa y malintencionada dentro del código SQL programado para la
manipulación de bases de datos, de esta forma todos los datos almacenados
estarían en peligro. La finalidad de este ataque es poder modificar del
comportamiento de nuestras consultas a través de parámetros no deseados,
pudiendo así falsificar identidades, obtener y divulgar información de la base de
datos (contraseñas, correos, información relevante, entre otros), borrar la base de
datos, cambiar el nombre a las tablas, anular transacciones, el atacante puede
convertirse en administrador de la misma.
Esto ocurre normalmente a la mala filtración de las variables en un programa que
tiene o crea SQL, generalmente cuando solicitas a un usuario entradas de
cualquier tipo y no se encuentran validadas, como por ejemplo su nombre y
contraseña, pero a cambio de esta información el atacante envía una sentencia
SQL invasora que se ejecutará en la base de datos.

Consecuencias de la inyección SQL


 Omisión de autenticación: Si la forma de autenticación de la aplicación es
vulnerable a la inyección de SQL, el usuario puede iniciar sesión en la
aplicación sin proporcionar las credenciales adecuadas.
 Obtener acceso a datos no autorizados: A través de la inyección de SQL,
un usuario puede obtener acceso a datos que solo personal autorizado
debería.
 Manipulación de datos no autorizada: La inyección de SQL también puede
permitir que un usuario de la aplicación inserte, modifique o elimine datos
que no esté autorizado. Esto hace que la integridad de los datos se vea
comprometida.
 Obtenga privilegios administrativos: la inyección de SQL podría permitir a
un atacante o un usuario malintencionado obtener privilegios
administrativos en la base de datos o en el servidor de la base de datos y,
en última instancia, realizar acciones como cerrar la base de datos. Esto
afecta su disponibilidad y, en consecuencia, la falta de disponibilidad de la
aplicación.
Los mecanismos que podemos implementar para ser víctimas de este tipo de
ataques cibernéticos en nuestras bases de datos pueden ser las siguientes:

 sanear los parámetros para que no sea posible inyectar parámetros


especiales como, por ejemplo, las comillas. Si se está trabajando con una
base de datos bajo Mysql, el cual es un motor muy utilizado, es posible
sanear los parámetros tal como se indica a continuación:

SELECT * FROM usuarios WHERE usuario=


mysql_real_escape_string(‘$usuario’) and
mysql_real_escape_string(password=’$password’);

 Escapar los caracteres especiales utilizados en las consultas SQL

Al hablar de “escapar caracteres” estamos haciendo referencia a añadir la


barra invertida “\” delante de las cadenas utilizadas en las consultas SQL
para evitar que estas corrompan la consulta. Algunos de estos caracteres
especiales que es aconsejable escapar son las comillas dobles (“), las
comillas simples (‘) o los caracteres \x00 o \x1a ya que son considerados
como peligrosos pues pueden ser utilizados durante los ataques.

 Delimitar los valores de las consultas para mitigar ataques de inyección


SQL

Aunque el valor de la consulta sea un entero, es aconsejable delimitarlo


siempre entre comillas simples. Una instrucción SQL del tipo:

SELECT nombre FROM usuarios WHERE id_user = $id

Será mucho más fácilmente inyectable que:

SELECT nombre FROM usuarios WHERE id_user = ‘$id’

Donde $id es un número entero.

 Verificar siempre los datos que introduce el usuario


Si en una consulta estamos a la espera de recibir un entero, no confiemos
en que sea así, sino que es aconsejable tomar medidas de seguridad y
realizar la comprobación de que realmente se trata del tipo de dato que
estamos esperando. Para realizar esto, los lenguajes de programación
ofrecen funciones que realizan esta acción, como pueden ser ctype_digit ()
para saber si es un número o ctype_alpha () para saber si se trata de una
cadena de texto en el caso del lenguaje PHP.

 Asignar mínimos privilegios al usuario que conectará con la base de datos

El usuario que utilicemos para conectarnos a la base de datos desde


nuestro código debe tener los privilegios justos para realizar las acciones
que necesitemos. No utilizar nunca un usuario root con acceso a todas las
bases de datos ya que de esta forma estaremos dando facilidades a los
hackers para que puedan acceder a toda la información.

 Programar bien para evitar ataques de inyección SQL

Aunque pueda parecer una tontería, no hay mejor medida para evitar este
tipo de ataques que realizar una buena programación, poniendo en
práctica las necesidades básicas y el interés para desarrollar una
aplicación totalmente segura.

También podría gustarte