RicH and FamouS

       Home         Glosar IT                                                                                                                                                                                                              SUBSCRIBE NOW!
        

10.04.2009

SQL injection

Una dintre cele mai grave probleme de securitate web este SQL injection. Simplu spus, este posibilitatea executarii de comenzi SQL prin alterarea parametrilor paginilor. Problema este grava pentru ca altereaza date permanent salvate in baze de date care pot varia de la caz la caz: nume, parole, date confidentiale, chiar credit carduri, etc.

SQL injection apare datorita neverificarii parametrilor utilizati in comenzi SQL. De exemplu sa presupunem ca avem (pagina.xxx):

- PHP:
<?php ...
mysql_query("SELECT * FROM Tabela WHERE id=".$_GET['id']);
... ?>

- ASP:
<% ...
conexiune.Execute "SELECT * FROM Tabela WHERE id=" & Request.QueryString("id")
... %>

Pentru aceste cazuri daca cineva in loc de pagina.xxx?id=1 cheama
pagina.xxx%3Fid%3D1%3BDELETE+%2A+FROM+Tabela
ceea ce inseamna
pagina.xxx?id=1;DELETE * FROM Tabela
Surpriza o sa fie de proportii.

In acest fel se pot executa si alte comenzi SQL nu doar DELETE.

Intervin citeva probleme:
- Trebuie cunoscut numele tabelelor sau cimpurilor sau gasite comenzi SQL care nu depind de numele tabelelor (folosit la modul general sau tabelele standard ale bazei de date)
- Pagina web sa nu faca nici un fel de verificari a parametrilor.

Dupa cum se poate vedea toata aceasta problema dispare daca avem:

- PHP:
<?php ...
mysql_query("SELECT * FROM Tabela WHERE id=".intval($_GET['id']));
... ?>

- ASP:
<% ...
conexiune.Execute "SELECT * FROM Tabela WHERE id=" & val(Request.QueryString("id"))
... %>

Mai trebuie facuta o observatie: parametri alterati pot veni nu doar din URL (GET) ci si POST sau cookie sau chiar valori inregistrate in baza de date pt. diverse informatii (semnatura alterata, adresa, etc.)

Asa ca orice web developer constient de posibilele probleme puse de SQL injection si care ia masuri impotriva acestei probleme le poate evita relativ usor.
Be Happy!!

    Blog din Moldova    FastCounter 

 
Copyright © 2008-2010 Foster1. All rights reserved.