“Conocimientos Programación>Programación PHP /MySQL

MySQL Tutorial de inyección

2013/4/19
inyección MySQL es acto de insertar declaración de MySQL en una base de datos sin el conocimiento del propietario de la base de datos . Esto se hace generalmente mediante la explotación de campos de entrada de usuario que no están protegidos adecuadamente. En lugar de proporcionar la entrada real de que el propietario de la base de datos se ha solicitado , el usuario inyecta una declaración de MySQL que cambia el comportamiento de la consulta para dar al usuario la capacidad de inyectar para manipular la base de datos . MySQL inyecciones

La forma más fácil de entender y aprender lo que la inyección MySQL realmente doesis echar un vistazo a un ejemplo . Una de las formas populares de la utilización de MySQLinjections es para eludir los controles de inicio de sesión en los sitios web . He aquí un ejemplo de awebsite que está utilizando el siguiente formulario para autenticar al usuario :

Login : < input type = "text" name = " nombre de usuario" > Lozinka : < /form>

Después de pulsar enviar datos introducidos se envía al userlogin.php página que recibe y ejecuta a través de una consulta en la base de datos para comprobar el nivel de acceso de los usuarios y ha si ha entrado el nombre de usuario y contraseña correctos.

< ? $ username = $ _POST [ 'username' ] , $ password = $ _POST [' password' ] , $ query = " SELECT nombre de usuario , contraseña FROM usuarios WHERE username = '$ nombre de usuario" y la contraseña =' $ password ' " ; ? >

Este tipo de formulario de acceso está abierto a la explotación de los ataques de inyección de MySQL . Para acceder a la página web de cualquier usuario puede introducir el siguiente código: 'OR 1 = 1 - el nombre de usuario y' OR 1 = 1 para la contraseña

Query ahora se verá así : $ query = " SELECT nombre de usuario . , contraseña de los usuarios DONDE username = '' OR1 = 1 - ' y password = '' OR 1 = 1 " ;

Esta consulta seleccionará nombre de usuario y contraseña de los usuarios en que no existen nombres de usuario o contraseñas ( '' parte ) o si uno es igual a uno . Como uno es igual a uno en todos los casos se ve comprometida la seguridad de la base de datos . Se añadieron dos guiones antes apóstrofe que MySQL ignore apóstrofe que ahora es redundante. Esto es sólo un tipo de ataque mediante inyección MySQL. Otra variante de este ataque es GetAccess a más información que el usuario tiene permitido .

Ahora mira un ejemplo en el propietario de la base está utilizando siguiente queryto obtener datos para mostrar en las páginas de información de cuenta de usuario .
< P > $ query = "SELECT * FROM usuarios WHERE username = '$ nombre ' " ;

Si este tipo de consulta no está protegido usuario malintencionado puede input'OR 1 = 1 - para eludir comprobar nombre de usuario. $ query = "SELECT * FROM usuarios WHERE nombre de usuario ='' OR 1 = 1 - ' " , . Esta consulta ahora no seleccionar sólo los datos de los usuarios , pero los datos de todos los usuarios en la tabla "usuarios"


Protección contra MySQL inyecciones

Hay muchas maneras de protegerse contra las inyecciones de MySQL. De hecho inyecciones de MySQL son amenazas sólo si el desarrollador ha ignorado la amenaza y han fracasado en la protección de su código. La manera más fácil de protegerse contra inyecciones en combinación PHP y MySQL es utilizar la función de PHP: " mysql_real_escape_string "

Volviendo al primer ejemplo <$ username = $ _POST [ 'username' ] ; $ . . ? password = $ _POST [' password' ] , $ query = " SELECT nombre de usuario , contraseña FROM usuarios WHERE username = '$ nombre de usuario" y la contraseña =' $ password ' " ; ? >

Para protegerse contra las inyecciones de MySQL utilización directa de las entradas del usuario deben befiltered través de " mysql_real_escape_string " . Función " mysql_real_escape_string " se escape todos los caracteres especiales MySQL eliminación de la posibilidad de cambiar el comportamiento de nuestra consulta

<$ username = mysql_real_escape_string ($ _POST [ 'username' ] ) ; . ? $ Password = mysql_real_escape_string ($ _POST [ ,"' password' ] ) ; $ query = " SELECT nombre de usuario , contraseña FROM usuarios WHERE username = '$ nombre de usuario" y la contraseña =' $ password ' " ; ? >


Programación PHP /MySQL
Cómo cambiar la contraseña del anuncio en PHP
Cómo cambiar la contraseña de Scripts PHP para MySQL
Cómo enviar datos en MySQL con PHP
Cómo reproducir un archivo de audio en PHP
PHP ' isset ' vs ' vacío '
Cómo dibujar una línea en PHP
Cómo mostrar la imagen y no el link de un Registro Dreamweaver De la Base de Datos
Cómo comparar las fechas con Oracle SQL
Conocimientos Informáticos © http://www.ordenador.online