Ara imaginauvos aquest escenari: un formulari qualsevol per fer login a una pàgina web, amb dos camps, usuari i contrassenya. L'script que executa el codi a la part del servidor el que fa és recollir aquestes dades enviades i fa una consulta SQL en funció d'aquestes.
El codi PHP podria esser aquest mateix:
SELECT * FROM usuaris WHERE user = '$user' AND password = '$password';on $user i $password corresponen a les dades entrades per l'usuari. Suposant que l'usuari admin fós el que té tots els privilegis del lloc web podriem fer el següent:
- Al camp del nom d'usuari del formulari hi entram: admin'#
- Al camp de password del formulari hi entram: password (o qualsevol cosa, inclus cap caràcter)
SELECT * FROM usuaris WHERE user = 'admin'#' AND password = 'password'A SQL el caràcter # actua com a delimitador pels comentaris i per conseqüent la part #' AND password = 'password' no s'executaria ja que està comentada.
Si el lloc web on volem accedir no contempla les possibles injeccions SQL ens hauriem loguejat com a administrador fora tenir la clau d'accés.
Cal remarcar que és molt dificil que els programadors web no tenguin en compte aquests típus d'atacs, però sempre n'hi ha algun de despistat que no implementa la seguretat a aquest nivell.
Per prevenir aquests atacs hi ha una sèrie de mecanismes (a nivell de llenguatge de programació, no a nivell de SQL) que et solucionen bastant la cosa, un d'ells es l'objecte PDO (PHP Data Objects) que et permet fer queries segurs, evaluant antes d'executar-lo la possibilitat de sofrir una injecció SQL.
A l'enllaç a continuació hi ha més informació i més exemples sobre aquests típus d'atacs.
Més informació | Security A(r)t Work

Cap comentari:
Publica un comentari a l'entrada
Nota: Només un membre d'aquest blog pot publicar entrades.