Inyeccion De Codigo
Enviado por SandraHay • 16 de Diciembre de 2012 • 1.013 Palabras (5 Páginas) • 873 Visitas
Inyección de Código Almacenados
La inyección de código es un ataque en el cual se inserta código malicioso en las cadenas que posteriormente se pasan a una instancia para su análisis y ejecución. Todos los procedimientos que generan instrucciones deben revisarse en busca de vulnerabilidades de inyección de código.
Consiste en la modificación del comportamiento de nuestras consultas mediante la introducción de parámetros no deseados en los campos a los que tiene acceso el usuario.
Por inyección SQL entendemos el acto de insertar una serie de sentencias SQL en una 'consulta' mediante la manipulación de la entrada de datos de una aplicación.
En la inyección de código se introduce un usuario falso y una contraseña falsa y puedes entrar a un sistema como por ejemplo:
Insertando el usuario: Sandra y contraseña 1234;
En caso de ser in correcto no entra al sistema.
En la inyección igual nos dejara entrar al sistema por ejemplo:
Estos usuarios no están registrados en la base de datos.
Insertando el usuario: hack y contraseña: hack'or'1'='1;
Y si nos dejara entrar
Identificar el mecanismo para evitar la inyección de código
Uno de los peligros de implementar formularios en nuestros proyectos, formularios que pueda rellenar el público, como comentarios o mensajes de correo, es que se presta fácilmente a la inyección de código en función de su labor. Por ejemplo, si tenemos un formulario para añadir un comentario y cuando lo mostramos lo ejecutamos directamente puede incluir código de javascript o php que robe información o estropee nuestro server.
Java
En lenguaje java, se puede usar la clase PreparedStatement
En lugar de:
Connection con = (acquire Connection)
Statement stmt = con.createStatement ();
ResultSet rset = stmt.executeQuery("SELECT * FROM usuarios WHERE nombre = '" + nombreUsuario + "';");
Se puede usar parametrización o escape de variables, como se indica en los siguientes apartados.
Bueno hay 2 maneras de las cuales poder evitar un ataque de este tipo
La primera consiste en que los queries que se ejecutan desde el programa deben ser hechos por un usuario de la base de datos con privilegios como select, insert, delete, update y nada mas, si se ejecutan como usuario administrador de la base de datos se corre gran riesgo.
La segunda, cuando se reciben los datos por parte del usuario hay que hacer una validación secundaria donde se verifique que no hay ninguna palabra reservada de SQL como lo es DROP, CREATE, ALTER, etc.
Roles y Usuarios de la aplicación
Un Rol es una clasificación mediante la cual se definen distintos privilegios de operación para los usuarios del sistema.
Los Roles se encuentran predefinidos en el sistema y se detallan a continuación:
Tipos de Roles
Administrador:
Un Administrador (Administrador) puede trabajar en tareas de configuración de la aplicación, puede crear usuarios y asignarles roles.
Supervisor:
Un Supervisor puede tomar casos no atendidos, trabajar en ellos y transferirlos a otros usuarios. Puede ver todos los casos, pero solo trabajar en aquellos en que es propietario. También puede modificar la categoría de los casos.
Manager:
Un Gerente (Manager) puede tomar casos no atendidos y derivar casos de unos usuarios a otros sin importar
...