nette databáza – bezpečnosť
- Tomáš Kolinger
- Člen | 136
To záleží jak to napíšeš :). Pokud budeš podávat dotazy správně a dodržovat co se dodržovat má, tak se šance blíží k nule.
Nette jako takové bezpečností díry nemá a snaží se ti co nejvíce
pomoci ale i tak se dá bezpečnostní díra vytvořit… Klasický příklad
je skládání dotazu pomocí stringu
->query('SELECT * FROM table WHERE id = ' . $id)
místo
správného
->query('SELECT * FROM table WHERE id = ?', $id)
…
Editoval Tomáš Kolinger (15. 3. 2014 19:46)
- Patrik Votoček
- Člen | 2221
Pokud požíváš Nette Database pouze takto tak by jsi tím měl zabránit SQLi. Nicméně je to jenom jedna část bezpečnosti. Je ještě spousta dalších věcí které si musíš pohlídat.
- Tomáš Kolinger
- Člen | 136
Tak to je fuk co používáš i v tvém případě se dá udělat chyba
->where('id = ' . $id)
místo
->where('id', $id)
.
Další věc která by tě mohla zajímat je XSS, tj. vložení nějakého škodlivého HTML kódu např. přes formulář do databáze, který pak na stránce vypíšeš a spustí se u uživatele… Klasický využití je vložit do stránky JS, pomocí kterého uživateli ukradneš session id a tím dočasně i jeho identitu. To ale zase Nette řeší a pokud escapování vysloveně nevypneš, tak se nikomu útok nepodaří.
Samozřejmě nesmíš udělat nějakej logickej fail, že např. zapomeneš kontrolovat oprávnění a uživatel si obstará tvojí databázi pomocí tvého UI.