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

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:29.1.2014 17:40

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:29.1.2014 17:41

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:29.1.2014 17:43

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:29.1.2014 17:44

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:29.1.2014 17:47

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.:29.1.2014 20:25

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:29.1.2014 21:24

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.:29.1.2014 21:46

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):29.1.2014 21:48

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
Go hard or go home!
Avatar
Marek Z.
Redaktor
Avatar
Odpovídá na Martin Konečný (pavelco1998)
Marek Z.:29.1.2014 21:54

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.:29.1.2014 22:18

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):29.1.2014 22:30

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
Go hard or go home!
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.