SQL Injection kezelése Drupalban

kkwx képe

Hellósztok

Egy olyan kérdésem lenne, hogy Drupalban, hogyan lehet kivédeni az SQL Injection-os támadásokat?

http://en.wikibooks.org/wiki/PHP_Programming/SQL_Injection - itt találtam megoldásokat, de csak sima PHP-seket, amik nem működtek, vagy csak én alakítottam rosszul át a konkrét példámra.

Találtam egy oldalt, ahol azt olvastam, hogy a Drupal 4-esnél még le kellett kezelni, de az újabbaknál már nem kell. Ha ez igaz az lenne a legjobb, mert akkor nem kéne foglalkoznom vele :). Ha viszont ez nem igaz, akkor a következő esetekben, például, hogyan kéne lekezelnem?

$f = "szöveg";
$a = "INSERT INTO {foglal_reg} (name) VALUES ('$f')";
$events=db_query($a);

$a = "SELECT value FROM {profile_values} WHERE {uid='$az'} AND {fid=2}";
$events=db_query($a);

Olvastam több helyen is (többek között itt a fórumban is), hogy fontos az, hogy ne legyen a változó közvetlenül beírva a lekérdezése, vagy ilyesmi, de olyan parancsot nem találtam amivel biztonságossá lehetne tenni.

Előre is kösz a segítséget :).

Drupal verzió: 
Fórum: 
snufkin képe

pedig ott van az a "parancs" (bar en inkabb fuggvenynek neveznem), meg hasznalod is: http://api.drupal.org/api/function/db_query/6

0
0
Boobaa képe

18:07 < boobaa> db_query?
18:07 < butabot> db_query: Runs a basic query in the active database. => db_query($query) => http://drupalcontrib.org/api/function/db_query/6

Azaz:

$id = 123;
$foo = 'egy sql inj ellen védendő szöveg, vagy bármi, ami web felől, usertől jön';
db_query("UPDATE {bar} SET baz = '%s' WHERE id = %d", $foo, $id);

A hivatkozott oldalról elindulva találsz további segítséget.

0
0
kkwx képe

Szóval ha ehelyett:

$a = "INSERT INTO {foglal_reg} (name) VALUES ('szöveg')";
$events=db_query($a);

ezt használom:

$events=db_query("INSERT INTO {foglal_reg} (name) VALUES ('%s')", $f);

akkor már védve is vagyok az SQL Injection ellen? Ez remek :). Ezer köszönet mindenkinek aki segített :). És ugye SQL Injection ellen csak olyan dolgokat kell menteni, ahol a felhasználó adhat meg adatokat? Mert ha automatikusan működik egy lekérdezés akkor ahhoz ugye nem férhet hozzá?

0
0
pp képe

Ha van egy függvényed amiben van egy lekérdezés amibe a függvény által kapott paramétertől függő érték van akkor az már felhasználótól jövő adat. Tehát a konstans adatokon kívüli összes változó adat felhasználótól jövő adatnak van kikiáltva akkor azt mondhatjuk a fenti kérdésedre, hogy igen.

pp

0
0
snufkin képe

Sot, ha nagyon trendi akarsz lenni akkor irhatod az insert-et igy is:

$data = array();
$data['name'] = 'szoveg';
drupal_write_record('foglal_reg', $data);
?>

0
0
chx képe

http://drupal.org/writing-secure-code es csak az idiota captcha miatt nem link. ez van. nem fejtek captchat.

Én meg igen? :) javítottam - pp -

0
0