Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Zdeněk Pavlátka:

Zvykl jsem si všechna zadaná data ($_POST, $_GET) kontrolovat při jejich získávání z těchto polí a pak už to neplést do práce s databází a soubory. Např. $_GET kontroluji pomocí povolených hodnot switchem. Rád bych věděl, kdy to kontrolují ostatní a co je podle vás lepší.

Odpovědět  -1 29.1.2014 17:35
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
Inoue Yūki
Redaktor
Avatar
Inoue Yūki:

Já ošetřuju kdy je to třeba. GET jsem nikdy switchem neošetřoval, protože jsem měl vždycky náhodné (uživatelsky zadávané) hodnoty, které by se těžce získávali, kdybych to dělal na tvrdo. :D Při vstupu do databáze mi to kontroluje PDO, při výstupu ve viewech zase framework. Takže vlastně toho moc neřeším.

Nahoru Odpovědět  +1 29.1.2014 17:40
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Zdeněk Pavlátka
David Čápka:

Ošetřovat máš právě naopak až na konci, kde data vkládáš do DB nebo do HTML. Ošetřovat to při získání je špatně.

Nahoru Odpovědět 29.1.2014 17:41
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Odpovídá na Inoue Yūki
Zdeněk Pavlátka:

Switch mám hlavně na výběr stránek ze souborů:

switch($_GET['url']){
case 'home':
case 'about':
case 'contact':
        $url = $_GET['url'];
        break;
//...

Používám MySQL ;)

Editováno 29.1.2014 17:45
Nahoru Odpovědět 29.1.2014 17:43
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Odpovídá na David Čápka
Zdeněk Pavlátka:

Co je na tom tak špatného? Data ověřím a pak na nich zavolám metodu pro práci s databází.

Nahoru Odpovědět 29.1.2014 17:44
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
Inoue Yūki
Redaktor
Avatar
Odpovídá na Zdeněk Pavlátka
Inoue Yūki:

To mi zase zpracovává Router, takže jsem se k tomu vlastně nikdy nedostal. :D

Nahoru Odpovědět  +2 29.1.2014 17:47
Avatar
Marek Z.
Redaktor
Avatar
Marek Z.:

Data si uložím do databáze ošetřené a při výpisu si je transformuji dle libosti, jak je zrovna chci použít.

Nahoru Odpovědět  -1 29.1.2014 20:25
Chybami se člověk učí, běžte se učit jinam!
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Zdeněk Pavlátka
David Čápka:

Je to špatně, protože si pak do DB ukládáš entity a to se opravdu nedělá. Ale já už jsem tu na úpravu kódu v PHP resignoval, dělejte si to jak chcete, stejně časem zjistíte proč to tak být nemá.

Nahoru Odpovědět  +1 29.1.2014 21:24
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Marek Z.
Redaktor
Avatar
Marek Z.:

Co je špatného na tom, když si uložím data do DB ošetřené tímto způsobem?

htmlspecialchars($text, ENT_QUOTES);
Nahoru Odpovědět 29.1.2014 21:46
Chybami se člověk učí, běžte se učit jinam!
Avatar
Odpovídá na Marek Z.
Martin Konečný (pavelco1998):

Místo 8mi znakový <script> se ti tam uloží 14ti znakový <script>. Zásada je ukládat data do DB surová a teprve při výstupu je ošetřit tak, jak právě potřebuješ.

Editováno 29.1.2014 21:48
 
Nahoru Odpovědět  +1 29.1.2014 21:48
Avatar
Marek Z.
Redaktor
Avatar
Odpovídá na Martin Konečný (pavelco1998)
Marek Z.:

Takže stačí v podstatě ošetřit apostrofy, uvozovky, popř. jiné speciální znaky a při výpisu teprve ošetřit html tagy. Chápu to tak správně?

Nahoru Odpovědět 29.1.2014 21:54
Chybami se člověk učí, běžte se učit jinam!
Avatar
Marek Z.
Redaktor
Avatar
Odpovídá na Marek Z.
Marek Z.:

Myslím tím např., že zápis do DB ošetřím mysql_real_es­cape_string() a výpis z db ošetřím htmlspecialchar­s().

Nahoru Odpovědět  +1 29.1.2014 22:18
Chybami se člověk učí, běžte se učit jinam!
Avatar
Odpovídá na Marek Z.
Martin Konečný (pavelco1998):

Přesně tak. Pokud použiješ např. PDO a parametrizované dotazy, nebudeš se muset starat o SQL injection.
Na výstupu si pak ten řetězec upravíš tak, jak ho zrovna potřebuješ (někdy budeš určitě potřebovat i něco jiného, než jen htmlSpecialChars).

 
Nahoru Odpovědět  +2 29.1.2014 22:30
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 13 zpráv z 13.