DB: Almacén de datos simples o estructurados.
Motor de DB: Programa que implementa acceso a data.
SQL: Lenguaje de consulta (para DB).
Inyección: Interceptar una transacción.
Transacción: Consulta (o grupo) hecha a una DB.
Tabla, columna, registro: Componentes de DB.
SELECT
SELECT * FROM users;
INSERT
INSERT INTO users VALUES ('bryanjhv', 'password');
UPDATE
UPDATE users SET username = 'bryan' WHERE id = 1;
DELETE
DELETE FROM users;
WHERE
SELECT * FROM users WHERE id >= 5;
ORDER BY
SELECT * FROM personas ORDER BY nombre;
LIMIT
SELECT * FROM personas ORDER BY pago LIMIT 3;
BETWEEN
SELECT * FROM personas WHERE edad BETWEEN (18, 30);
AND
/OR
SELECT * FROM users WHERE id >= 5 AND id <= 30;
Motor de DB opensource, gratis. Muy usado con PHP.
Se pide un usuario y se ingresa una consulta.
Al leer el usuario, se lo adjunta a la consulta.
El usuario contiene símbolos, o tiene 1000 caracteres.
"Atar cabos" lleva a esto.
Los muy conocidos "leaks", se filtra información.
¿Confiarías en un sitio si deja libre tus datos?
No los datos que piensas, los comunes.
Si puede ejecutar algo, ¿por qué no un ...?
DELETE FROM payments;
Una consulta no debe tener "
o '
.
Reemplazar "
por \"
.
Un nombre de usuario debe:
[A-Za-z][A-Za-z0-9._]+
.Por cada consulta, preguntar si el usuario está autorizado.
Poner un campo oculto y verificarlo en cada petición.
Éstas han pasado por esto y son mantenidas. Ejemplos para PHP:
illuminate/database
Zend ORM