Underc0de

Foros Generales => Dudas y pedidos generales => Mensaje iniciado por: Only en Agosto 01, 2011, 05:28:50 AM

Título: [SOLUCIONADO] Qué es inyección SQL en php
Publicado por: Only en Agosto 01, 2011, 05:28:50 AM
leyendo la primer entrega del taller de php , me llamo la atencion un comentario acerca de seguridad y mencionan algo que es inyeccion , es para bases de datos ..

alguien me podria explciar que es eso,como hacerlo y como defenderme

gracias a todos
Título: Re:[duda]que es inyeccion en php
Publicado por: Stiuvert en Agosto 01, 2011, 12:10:11 PM
La inyección SQL se produce cuando se inserta o inyecta código SQL dentro del código SQL programado, al fin de alterar el funcionamiento del código programado y lograr que se ejecute el código incrustado en la base de datos.


Algunas formas de evitar la Inyección SQL:

PHP

En el lenguaje PHP, hay diferentes funciones que pueden servir de ayuda para usar con distintos sistemas de gestión de bases de datos. Para MySQL, la función a usar es mysql_real_escape_string:

$query_result = mysql_query("SELECT * FROM usuarios WHERE nombre = \"" . mysql_real_escape_string($nombre_usuario) . "\"");


Parametrización de sentencias SQL


Connection con = (acquire Connection)  PreparedStatement pstmt = con.prepareStatement("SELECT * FROM usuarios WHERE nombre = ?");
pstmt.setString(1, nombreUsuario);
ResultSet rset = pstmt.executeQuery();


Escape de las variables a insertar en la sentencia SQL

Escapar el texto contenido en la variable reemplazando los caracteres especiales en SQL por su equivalente textual, de tal forma que SQL interprete todo el contenido de la variable como si fuera texto.

Connection con = (acquire Connection)
Statement stmt = con.createStatement();
ResultSet rset = stmt.executeQuery("SELECT * FROM usuarios WHERE nombre = '" + nombreUsuario.replace("\\", "\\\\").replace("'", "\\'") + "';");



También se puede utilizar el método escapeSQL de la clase StringEscapeUtils procedente de la librería de Apache Commons Lang

Connection con = (acquire Connection)
Statement stmt = con.createStatement();
ResultSet rset = stmt.executeQuery("SELECT * FROM usuarios WHERE nombre = '" + StringEscapeUtils.escapeSQL(nombreUsuario) + "';");



Título: Re:[duda]que es inyeccion en php
Publicado por: Only en Agosto 01, 2011, 04:30:36 PM
ok muchas gracias bro , estare al pendiente de la seguridad en un proyecto que hago para mi escuela .. me gustaria que me ayudaran con la seguridad para que sea impenetrable

cuando tenga una beta lo subo al foro para ver que mejoras le hacemos

saludos y gracias

Nota : Algun mod que cierre el post