Diskuze: Kde kontrolovat PHP a SQL Injection
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 13 zpráv z 13.
K personalizaci obsahu a reklam, poskytování funkcí sociálních médií a analýze naší návštěvnosti využíváme soubory cookie. Informace o tom, jak náš web používáte, sdílíme se svými partnery pro sociální média, inzerci a analýzy. Partneři tyto údaje mohou zkombinovat s dalšími informacemi, které jste jim poskytli nebo které získali v důsledku toho, že používáte jejich služby.
Používáme nezbytné cookies pro fungování webu a s tvým souhlasem také analytické a marketingové cookies.
Zajišťují základní funkce, bezpečnost a služby, které sis vyžádal. Nelze je vypnout.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| ITnetwork | ITnetwork | Provoz webu, relace, přihlášení a uložení nastavení cookies. | PHPSESSID, auth_token, sid, itn_consent_impression, __Host-itn_consent | Relace až 1 rok |
| Google Tag Manager | Správa značek a načítání měřicích nástrojů webu. | Žádné | Neukládá se | |
| Google Fonts | Načítání typografie webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google Hosted Libraries | Načítání potřebných knihoven a stylů webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google reCAPTCHA | Ochrana formulářů a webu před zneužitím. | _GRECAPTCHA, rc::a, rc::b, rc::c, rc::f | Relace až 180 dní | |
| YouTube | Přehrávání vloženého video obsahu. | localStorage, IndexedDB; cookies after playback interaction | Relace až trvalé úložiště | |
| Vimeo | Vimeo | Přehrávání vloženého video obsahu. | __cf_bm, _cfuvid, vuid, localStorage, IndexedDB | Relace až 2 roky |
| Facebook Login | Meta | Přihlášení pomocí účtu třetí strany. | Úložiště řízené poskytovatelem | Relace až 1 rok |
| GoPay | GoPay | Zpracování uživatelem vyžádané platby. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
Pomáhají nám porozumět používání webu a zlepšovat ho.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Analytics 4 | Měření návštěvnosti a používání webu. | _ga, _ga_* | Až 2 roky | |
| Microsoft Clarity | Microsoft | Měření návštěvnosti a používání webu. | _clck, _clsk, _cltk | Relace až 1 rok |
Slouží k měření kampaní, personalizaci reklamy a marketingové komunikaci.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Ads | Měření kampaní, reklama a remarketing. | _gcl_au, _gcl_ls | Relace až 90 dní | |
| Meta Pixel | Meta | Měření kampaní, reklama a remarketing. | _fbp, _fbc, localStorage | Až 90 dní |
| Sklik | Seznam.cz | Měření kampaní, reklama a remarketing. | retargeting, sid, szn:* | Relace až trvalé úložiště |
| LinkedIn Insight | Měření kampaní, reklama a remarketing. | bcookie, li_gc, lidc, __cf_bm | Relace až 1 rok | |
| Ecomail | Ecomail.cz | Měření kampaní, reklama a remarketing. | ecmid, Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
| Atribuce kampaní ITnetwork | ITnetwork | Přiřazení návštěvy a objednávky ke kampani. | campaign_clid[*], user_session_context | Až 1 rok |
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
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.
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.
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ě.
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 
Co je na tom tak špatného? Data ověřím a pak na nich zavolám metodu pro práci s databází.
To mi zase zpracovává Router, takže jsem se k tomu vlastně nikdy
nedostal. 
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.
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á.
Co je špatného na tom, když si uložím data do DB ošetřené tímto způsobem?
htmlspecialchars($text, ENT_QUOTES);
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š.
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ě?
Myslím tím např., že zápis do DB ošetřím mysql_real_escape_string() a výpis z db ošetřím htmlspecialchars().
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).
Zobrazeno 13 zpráv z 13.
