tiny ‘n’ smart
database layer

Odkazy: dibi | API reference

Oznámení

Omlouváme se, provoz fóra byl ukončen

Dibi neprovede escapování?

před 5 lety

bartama
Člen | 7

Zdravím,
mám tu už nějakou dobu kód a nemůžu najít spolehlivé řešení. Měl jsem za to, že Dibi (DB framework) dokáže sám escapovat data, která například updatem ukládám do DB. Mám tedy tento kód:

$Data = array(
   'jmeno' => $FirstName,
   'prijmeni' => $LastName,
   'telefon' => $Phone,
   'email' => $Email,
);

dibi::query('UPDATE `users` SET ', $Data, 'WHERE `username` = %s', $Username);

Když zkusím vložit do DB (v proměnné $FirstName) vložit jednoduchý JS alert tak se bez problémů uloží a neodfiltruje.

Nejsem si už úplně jistý co s tím, myslel jsem, že právě tohle je pro Dibi hračka.

Budu rád za jakékoliv rady co s tím. (Chyba je určitě u mě a je to nějaká blbost :D)

Díky

před 5 lety

Milo
Nette Core | 1119

Dibi escapuje SQL. Ochrání před SQL injection. Ale jaká data se ukládají, to už je dibi jedno.

Pokud nechceš, aby se ukládal JavaScript, musíš si data nejprve validovat už když je někdo zadává. A navíc, když data vypisuješ, měl bys je správně escapovat, aby se případný JavaScript nemohl spustit. To je děje automaticky například v Latte.