Inyección SQL es el intento de emitir comandos SQL a una base de datos a través de una interfaz de sitio web para obtener otra información. A saber, esta información se almacena información de la base de datos, como nombres de usuario y contraseñas.
La primera regla para proteger cualquier secuencia de comandos o página que se una a una instancia de base de datos es No confíe en la entrada de usuario.
Su ejemplo intenta terminar una cadena mal citada en una instrucción de SQL. Para entender esto, primero necesita understand SQL statements. En el ejemplo de la adición de un '
a un parámetro de, su 'inyección' espera para el siguiente tipo de declaración:
nombre de usuario SELECT, contraseña FROM usuarios WHERE nombre de usuario = '$ nombre de usuario'
Por añadiendo un '
a esa declaración, que podría luego añadir Paramaters SQL adicionales o consultas .: ' OR username --
nombre de usuario, contraseña SELECT FROM usuarios WHERE nombre de usuario = '' o nombre de usuario - '$ nombre de usuario
Esa es una inyección (un tipo de; Reconstrucción de consultas). La entrada del usuario se convierte en una declaración inyectada en la instrucción SQL preescrita.
En general hay tres tipos de métodos de inyección de SQL:
- consulta la remodelación o del cambio de dirección (arriba)
mensaje
- Error basado (No dicho usuario/contraseña)
- Ciegos Inyecciones
Lea en SQL Injection, How to test for vulnerabilities, understanding and overcoming SQL injection, y esta pregunta (y otras relacionadas) en StackOverflow about avoiding injections.
Editar:
En cuanto a las pruebas de su sitio para la inyección de SQL, entienden que se pone mucho más complejo que la simple áppend un símbolo '. Si su sitio es crítico, y usted (o su empresa) puede pagarlo, contrate un probador de lápiz profesional. En su defecto, this great exaxmple/proof puede mostrarle algunas técnicas comunes que uno podría usar para realizar una prueba de inyección.También hay SQLMap que puede automatizar algunas pruebas para Inyección SQL y escenarios de control de base de datos.
CUALQUIER cuadro de texto o entrada en cualquier página donde el usuario puede escribir e ingresar datos puede tener inyección SQL si la entrada del usuario se pasa a un comando SQL. – DOK
posible duplicado de [¿Qué es la inyección SQL?] (Http://stackoverflow.com/questions/601300/what-is-sql-injection) – CanSpice