Autor | Zpráva | ||
---|---|---|---|
Duchaplny Profil |
#1 · Zasláno: 10. 8. 2013, 14:47:09
Zdravím,
akurát som si prerobil testovací projekt z mysql_* na PDO . Chcel by som si teraz vyskúšať nejaké SQL Injection útoky, či je to dostatočne zabezpečené..
INSERT a UPDATE vykonávam cez <form> (metóda $_POST), a ID si vytiahnem z DB (MySQL) a použijem ho pri ukladaní: WHERE id=:id , a následne uložím $stmt->execute(array(':id' => $_GET['id']));
V podstate jediná ochrana, čo mám je momentálne nastavenie dĺžky vstupu na max. 20-25 písmen.. Chcem zistiť, či nejakým upraveným vstupom, môžem docieliť napr. obídenie hesla alebo miesto vloženia/updatu tabuľky ju celú vymazať. Skúšal som napr. do kolonky, ktorá sa ukladá (INSERT) napísať: " a';DROP TABLE users; ", a uložilo mi to presne v tomto znení do db (nič nevymaže). Nevyznám sa v tom, možno na to idem zle, a možno to je vďaka PDO, ale chcem mať istotu..
Poradíte mi nejaké konkrétne vstupy, ktoré by mohli urobiť neporiadok v databáze ? |
||
pcmanik Profil |
Duchaplny:
Stači pouziť prepared statements, ktoré zjavne používaš a vyhneš sa všetkým problémom ktoré by mohli nastať. |
||
Duchaplny Profil |
#3 · Zasláno: 10. 8. 2013, 18:11:03
pcmanik:
presne to používam, ak teda naozaj stačí len toto, a nehrozí SQL Injection, tak ďakujem.. |
||
Časová prodleva: 3 dny
|
|||
Jan Tvrdík Profil |
Duchaplny:
„presne to používam, ak teda naozaj stačí len toto, a nehrozí SQL Injection, tak ďakujem..“ Jen upozorním na to, že prepared statements nelze použít na všechny typy SQL dotazů. V případě, že na takový SQL dotaz narazíš, je nutné použít normální escapování. |
||
Časová prodleva: 12 dní
|
|||
Duchaplny Profil |
#5 · Zasláno: 25. 8. 2013, 19:56:10
Jan Tvrdík:
„Jen upozorním na to, že prepared statements nelze použít na všechny typy SQL dotazů. V případě, že na takový SQL dotaz narazíš, je nutné použít normální escapování.“ zatiaľ som nemal problém s tým, že by niečo nešlo.. asi to platí pre náročnejšie SQL dotazy, než používam.. |
||
Časová prodleva: 11 let
|
0