Zadejte hledaný výraz...

Jak zabezpečit chybně napsanou aplikaci před SQL injection?

Martin
verified
rating uzivatele
(62 hodnocení)
27. 8. 2013 14:23:44
Všechny zdravím.
Dostal jsem od klienta na úpravu na míru vytvořený eshop. Zjistil jsem, že není nijak řešena ochrana proti SQL injection. Psal jsem klientovi, že by s tím chtělo něco udělat. Eshop je docela rozsáhlý a psaný "prasecky", takže opravit to bude docela zdlouhavé.
Chtěl bych to nějak základně zabezpečit, než se dohodneme. Naštěstí se k proměnným $_GET a $_POST přistupuje přes funkci, takže jsem pro začátek dal alespoň u všeho nahrazení uvozovek a apostrofu mezerou. Je nějaký další rychlý dočasný způsob, jak snížit riziko SQL injection.
Jde mi opravdu jen o snížení rizika. Konečný způsob udělám, až se klient vyjádří a trochu se v tom zorientuju. Zřejmě tam toho bude na předělání víc.
Díky moc za případné nápady.
Martin Kejzlar
27. 8. 2013 14:23:44
https://webtrh.cz/diskuse/jak-zabezpecit-chybne-napsanou-aplikaci-pred-sql-injection#reply938290
Nestačilo by při práci s proměnnými používat: htmlspecialchars($_GET) / htmlspecialchars($_POST) - http://cz2.php.net/htmlspecialchars ?
27. 8. 2013 14:56:22
https://webtrh.cz/diskuse/jak-zabezpecit-chybne-napsanou-aplikaci-pred-sql-injection#reply938289
tomve
verified
rating uzivatele
(22 hodnocení)
27. 8. 2013 15:06:09
na sql injection jedině mysql_real_escape_string nebo mysqli::real_escape_string osobně to mixuju s strip_tags
27. 8. 2013 15:06:09
https://webtrh.cz/diskuse/jak-zabezpecit-chybne-napsanou-aplikaci-pred-sql-injection#reply938288
FAKAM
verified
rating uzivatele
(10 hodnocení)
27. 8. 2013 15:07:19
Napsal Matefil;990953
htmlspecialchars($_GET) / htmlspecialchars($_GET) - http://cz2.php.net/htmlspecialchars ?
Je táto ochrana dostatočná?
27. 8. 2013 15:07:19
https://webtrh.cz/diskuse/jak-zabezpecit-chybne-napsanou-aplikaci-pred-sql-injection#reply938287
FAKAM: Toť otázka ... už jsem celkem dlouho nic nepsal a nezjišťoval si novinky, ale pro snížení rizika by to asi stačit mohlo
27. 8. 2013 15:09:00
https://webtrh.cz/diskuse/jak-zabezpecit-chybne-napsanou-aplikaci-pred-sql-injection#reply938286
tomve
verified
rating uzivatele
(22 hodnocení)
27. 8. 2013 15:12:36
htmlspecialchars je myslím na nic ... rozhodí to cz znaky, a pak se to musí opravovat pomoci htmlspecialchars_decode
27. 8. 2013 15:12:36
https://webtrh.cz/diskuse/jak-zabezpecit-chybne-napsanou-aplikaci-pred-sql-injection#reply938285
Tomve: to se mi tedy nikdy nestalo
27. 8. 2013 15:16:26
https://webtrh.cz/diskuse/jak-zabezpecit-chybne-napsanou-aplikaci-pred-sql-injection#reply938284
tomve
verified
rating uzivatele
(22 hodnocení)
27. 8. 2013 15:27:59
Matefil: mě to kdysi jednou rozhodilo, holt
27. 8. 2013 15:27:59
https://webtrh.cz/diskuse/jak-zabezpecit-chybne-napsanou-aplikaci-pred-sql-injection#reply938283
Všechny manipulace řetězců, escapování atd. jsou dnes už zastaralé a zbytečně nebezpečné metody.
Pokud to klient zaplatí, přepište všechno řetězcové skládání SQL dotazů na prepared statements.
V PHP přes PDO.
http://php.net/manual/en/book.pdo.php
27. 8. 2013 15:30:51
https://webtrh.cz/diskuse/jak-zabezpecit-chybne-napsanou-aplikaci-pred-sql-injection#reply938282
Martin
verified
rating uzivatele
(62 hodnocení)
27. 8. 2013 15:46:02
Napsal Martin Schlemmer;990982
Všechny manipulace řetězců, escapování atd. jsou dnes už zastaralé a zbytečně nebezpečné metody.
Pokud to klient zaplatí, přepište všechno řetězcové skládání SQL dotazů na prepared statements.
V PHP přes PDO.
http://php.net/manual/en/book.pdo.php
Pak to předělám na Dibi, to se o to postará. Jen jsem řešil nějakou rychlou záplatu. Pořádně zatím ani nevím, co se a jak používá, proto jsem myslel, že bude lepší zatím data neescapovat a dal jsem prozatím to nahrazení mezerami. Až ten záhadnej systém prolezu, tak uvidím jak to nejlíp řešit.
27. 8. 2013 15:46:02
https://webtrh.cz/diskuse/jak-zabezpecit-chybne-napsanou-aplikaci-pred-sql-injection#reply938281
FAKAM
verified
rating uzivatele
(10 hodnocení)
27. 8. 2013 16:22:48
Napsal Martin Kejzlar;990996
Pak to předělám na Dibi
Na to dibi sa práve pozerám a skúšam. Dokáže to rýchlejšie vykonať príkaz?
27. 8. 2013 16:22:48
https://webtrh.cz/diskuse/jak-zabezpecit-chybne-napsanou-aplikaci-pred-sql-injection#reply938280
Petr Soukup
verified
rating uzivatele
(5 hodnocení)
27. 8. 2013 17:05:04
Napsal FAKAM;991012
Na to dibi sa práve pozerám a skúšam. Dokáže to rýchlejšie vykonať príkaz?
Už z principu to bude pomalejší. Hloupé zavolání mysql_query je zkrátka jeden příkaz, kdežto v dibi to projde sérií escapování a podobně. Ale v rychlosti není až takový rozdíl, aby bylo nutné se tím trápit.
27. 8. 2013 17:05:04
https://webtrh.cz/diskuse/jak-zabezpecit-chybne-napsanou-aplikaci-pred-sql-injection#reply938279
FAKAM
verified
rating uzivatele
(10 hodnocení)
27. 8. 2013 17:41:14
Áno, to spomalenie som si už overil, no neviem či využiť dibi, alebo Mysqli?
27. 8. 2013 17:41:14
https://webtrh.cz/diskuse/jak-zabezpecit-chybne-napsanou-aplikaci-pred-sql-injection#reply938278
Taps
verified
rating uzivatele
(118 hodnocení)
27. 8. 2013 17:49:40
Třeba se bude hodit tento odkaz -> http://phpfashion.com/escapovani-definitivni-prirucka
27. 8. 2013 17:49:40
https://webtrh.cz/diskuse/jak-zabezpecit-chybne-napsanou-aplikaci-pred-sql-injection#reply938277
Marek
verified
rating uzivatele
(2 hodnocení)
27. 8. 2013 18:44:07
@FAKAM Dibi používám už přes rok. Je to šíleně návykové. Nejvíc návykové je Dibi fluent, ale když potřebuju složitější query, napíšu si jí v dibi::query(). Jako obrovskou výhodu považuji to, že *nemusíš* řešit escapování atd. Urychlí to hrozně moc práci. Pro mě osobně je killer feature $connection->query(...)->fetchAssoc, hrozně to urychlí práci s daným výsledkem.
27. 8. 2013 18:44:07
https://webtrh.cz/diskuse/jak-zabezpecit-chybne-napsanou-aplikaci-pred-sql-injection#reply938276
Pro odpověď se přihlašte.
Přihlásit