Diferència entre revisions de la pàgina «SQL injection»

De Cacauet Wiki
Salta a la navegació Salta a la cerca
(Es crea la pàgina amb «SQL injection és una forma d'atac cibernètic per manipular la base de dades remota a través dels formularis. == Introducció == Una bona manera d'introduir-se a aq...».)
 
Línia 17: Línia 17:
 
* [[Curs de SQL]]
 
* [[Curs de SQL]]
 
* Partirem d'aquest exemple: [[PHP MySQL select]]
 
* Partirem d'aquest exemple: [[PHP MySQL select]]
 +
 +
<br>
 +
 +
== Un petit exemple amb LOGIN ==
 +
Qualsevol formulari on l'usuari pugui entrar text lliure pot ser un punt vulnerable. Per exemple, el formulari de login típic per entrar al sistema:
 +
 +
 +
Al sistema tenim la taula d'usuaris típica:
 +
mysql> desc users;
 +
+----------+--------------+------+-----+---------+----------------+
 +
| Field    | Type        | Null | Key | Default | Extra          |
 +
+----------+--------------+------+-----+---------+----------------+
 +
| id      | int(11)      | NO  | PRI | NULL    | auto_increment |
 +
| username | varchar(200) | YES  |    | NULL    |                |
 +
| name    | varchar(200) | YES  |    | NULL    |                |
 +
| password | varchar(600) | YES  |    | NULL    |                |
 +
+----------+--------------+------+-----+---------+----------------+
 +
4 rows in set (0,01 sec)
 +
 +
En aquest cas, tenim diversos usuaris: enric, crypto, pepa i manolo. La password està encriptada amb SHA2-512
 +
 +
El més habitual és entrar el teu nom d'usuari i la password, i llavors entraríem amb l'usuari:
 +
 +
 +
Però si enlloc de posar el nom d'usuari posem una sentència SQL hàbil i preclara, podem manipular la ''query'' que finalment enviarem a la base de dades. En el següent exemple, entrarem:

Revisió del 16:27, 16 des 2016

SQL injection és una forma d'atac cibernètic per manipular la base de dades remota a través dels formularis.

Introducció

Una bona manera d'introduir-se a aquest tema és amb aquest acudit:

http://stackoverflow.com/questions/332365/how-does-the-sql-injection-from-the-bobby-tables-xkcd-comic-work?rq=1

Fes-li un cop d'ull a aquest article també:

http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php?rq=1


Coneixements previs

Cal que coneixem el llenguatge de programació PHP i el llenguatge de manipulació de dades SQL.


Un petit exemple amb LOGIN

Qualsevol formulari on l'usuari pugui entrar text lliure pot ser un punt vulnerable. Per exemple, el formulari de login típic per entrar al sistema:


Al sistema tenim la taula d'usuaris típica:

mysql> desc users;
+----------+--------------+------+-----+---------+----------------+
| Field    | Type         | Null | Key | Default | Extra          |
+----------+--------------+------+-----+---------+----------------+
| id       | int(11)      | NO   | PRI | NULL    | auto_increment |
| username | varchar(200) | YES  |     | NULL    |                |
| name     | varchar(200) | YES  |     | NULL    |                |
| password | varchar(600) | YES  |     | NULL    |                |
+----------+--------------+------+-----+---------+----------------+
4 rows in set (0,01 sec)

En aquest cas, tenim diversos usuaris: enric, crypto, pepa i manolo. La password està encriptada amb SHA2-512

El més habitual és entrar el teu nom d'usuari i la password, i llavors entraríem amb l'usuari:


Però si enlloc de posar el nom d'usuari posem una sentència SQL hàbil i preclara, podem manipular la query que finalment enviarem a la base de dades. En el següent exemple, entrarem: