× Cuéntanos a todos acerca de que te inquieta, qué te gusta y que recomiendas con respecto de la Seguridad Informática

Evitar el SQL Injection

More
10 months 4 weeks ago #36 by Corazon_Valiente
Corazon_Valiente created the topic: Evitar el SQL Injection
Hey necesito encontrar tecnicas para evitar el SQL injection, en la web me urge un debate sobre el tema, pasen lo que encuentren, please.
The following user(s) said Thank You: ElApredizdeDeveloper, stevejobs

Please Identificarse or Create an account to join the conversation.

More
10 months 3 weeks ago #37 by stevejobs
Evitar el SQL Injection
Mira la cosa en este tema no es tan sencilla, agujeros infinitos puedes encontrar con el sql inyection, tal ves logres frenar ciertas partes y evitar el uso de comillas cambiandolas / porque el verdadero problema es introducir caracteres sin control alguno, aca te pongo algunas soluciones, en varios lenguajes no son todas las que existen pero algo, es algo, heheheheehe feliz dia, un saludos, a todos los websupportels, y bienvenidos los nuevos

PHP

En PHP tenemos varias formas de hacerlo, entre ellas para bases de datos MySQL tenemos la función mysql_real_escape_string, que añadiremos en las variables que introducimos en la consulta.
$respuesta=mysql_query("SELECT * FROM `Usuarios` WHERE `user`='".mysql_real_escape_string($name)."' AND `pass`='".mysql_real_escape_string($password)."'")

.NET

En .NET evitaremos la inyección en SQL Server (con C#) estableciendo el tipo de parámetro como literal con SqlDbType.VarChar.
SqlConnection con = new SqlConnection(_connectionString);
SqlCommand cmd = new SqlCommand("SELECT * FROM Usuarios WHERE user=@user AND pass=@pass", con);
/* Convertimos en literal estos parámetros, por lo que no podrán hacer la inyección */
cmd.Parameters.Add("@user", SqlDbType.VarChar, 32).Value = user;
cmd.Parameters.Add("@pass", SqlDbType.VarChar, 64).Value = password;

O también podríamos usar AddWithValue de una forma ligeramente similar a la anterior:
using( SqlConnection con = (acquire connection) ) { 
    con. Open(); 
    using( SqlCommand cmd = new SqlCommand("SELECT * FROM Usuarios WHERE user=@user AND pass=@pass", con) ) { 
        /* Convertimos también en literales los parámetros */
        cmd.Parameters.AddWithValue("@user", user); 
        cmd.Parameters.AddWithValue("@pass", password); 
        using( SqlDataReader rdr = cmd.ExecuteReader() ){ 
            /* [...] */
        }
    }
}

Java

Ahora con Java lo que hacemos es similar a lo que hemos hecho con C# (en .NET), crear la consulta con los parámetros y posteriormente establecerlos (sustituirlos siendo ya estos un literal, que no producirán fallos de seguridad).
Connection con = (acquire Connection) 
PreparedStatement query = con.prepareStatement("SELECT * FROM Usuarios WHERE user=? AND pass=?"); 
query.setString(1, user); 
query.setString(2, password); 
ResultSet rset = query.executeQuery();

Perl

En este ejemplo de Perl usamos la característica placeholder que al fin y al cabo es igual que con los dos ejemplos anteriores, agregando a la consulta los parámetros (con este método se pone a punto las comillas para evitar las inyecciones SQL).
$query = $sql->prepare("SELECT * FROM Usuarios WHERE user=? AND pass=?"); 
$query->execute($user,$password);
The following user(s) said Thank You: ElApredizdeDeveloper, elpredikeitor

Please Identificarse or Create an account to join the conversation.

More
10 months 3 weeks ago #38 by ElApredizdeDeveloper
Evitar el SQL Injection
Gracias a todos por participar en este foro que fue creado para su deleite, El SQL inyection es bastante sencillo de explotar pero muy poco util a la hora de un ataque serio, esto según los expertos en seguridad informatica para la web (y no me digan que solo leo al chema alonso :whistle: ), aunque este es un campo para la seguridad de bases de datos en otras palabras para los administradores de base de dato, no debemos olvidar que a los desarrolladores web, nos toca que aprender bases de datos a manera de usuario y quizas avanzados solo en proyectos colosales, en los cuales conviene buscar un experto en bases de datos, por lo que a mi manera de ver seria completamente un error invertir tiempo en volverte un experto en base de datos si tu prioridad es descubrir las mejores técnicas en el desarrollo web, tomando como base que aca solo hay desarrolladores web (si ese es el caso), por lo que les recomiendo mejor usar herramientas dedicadas a descubrir fallas, se evitaran horas de análisis y testeo (lo digo por experiencia :side: :side: :woohoo: )

Aca les dejo unas cuantas:

Otra de las opciones que podemos utilizar para realizar un análisis de nuestro código es el uso de herramientas que testen nuestras aplicaciones en busca de vulnerabilidades por inyección SQL. Algunas de estas herramientas son:

SQLiHelper 2.7 SQL Injection: Se trata de una aplicación cuyo objetivo es facilitar la extracción de información procedente de bases de datos utilizando para ello técnicas de inyección SQL. Una vez indicada la url que queremos analizar, la aplicación realizará peticiones inyectando código SQL con el fin de comprobar si es realmente vulnerable.

Pangolin: Se trata de una herramienta de pago que ofrece más posibilidades que la vista en el punto anterior y que está destinada a descubrir vulnerabilidades tanto del tipo inyección SQL como inyección SQL ciego.

SQLMap: Se trata de una herramienta de pruebas de código abierto que automatiza el proceso de detectar y explorar los errores de inyección SQL

mi recomendacion es pangolin, lamentablemente es pago, un saludo a toda la comunidad de websupportels

El Aprediz de Developer
The following user(s) said Thank You: elpredikeitor, Leonardo_torres

Please Identificarse or Create an account to join the conversation.

More
10 months 3 weeks ago #39 by elpredikeitor
Evitar el SQL Injection
hola a todos, totalmente de acuerdo, un saludo al aprendiz de brujo y vaya que mejor manera de comparar a un developer, hehehehehehe, hasta que apareció! hey que la pasen bien todos
The following user(s) said Thank You: Leonardo_torres

Please Identificarse or Create an account to join the conversation.

More
10 months 3 weeks ago - 10 months 3 weeks ago #43 by Leonardo_torres
Evitar el SQL Injection
Hola, no soy experto pero hasta donde se con esta técnica solo le puedes cambiar las letras a un sitio web, con ddos es otra cosa :unsure:
Last Edit: 10 months 3 weeks ago by Leonardo_torres.

Please Identificarse or Create an account to join the conversation.

Powered by Kunena Forum