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 :).
pedig ott van az a "parancs"
pedig ott van az a "parancs" (bar en inkabb fuggvenynek neveznem), meg hasznalod is: http://api.drupal.org/api/function/db_query/6
18:07 < boobaa>
Azaz:
A hivatkozott oldalról elindulva találsz további segítséget.
csak ennyi az egész?
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á?
A kérdés, hogy mennyire szigorú az értelmezésed. :)
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
Palócz István
https://palocz.hu | https://tanarurkerem.hu
Sot, ha nagyon trendi akarsz
Sot, ha nagyon trendi akarsz lenni akkor irhatod az insert-et igy is:
$data = array();
$data['name'] = 'szoveg';
drupal_write_record('foglal_reg', $data);
?>
writing secure code
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 -