Diskuze: Výběr stránek pomocí switch?
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 14 zpráv z 14.
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.
200 stránek ve switchi je jasnou chybou v návrhu, include($_GET['stranka']) sebevraždou.
Pro 200 podstránek je správným řešením databáze, ve které jsou i texty.
Kdo by se s tím piplal, když mám databázi, ze které nemá útočník kam utéct, se kterou je to rychlejší a bezpečnější? Navíc články mohu přidávat i bez přístupu na FTP přes vlastní administrátorské rozhraní.
Toto není tutoriál pro web s 200 stránkami
S ošetřením vstupů máš pravdu,
ale jak říká kit, tam se to řeší zase přes databázi. Switch mi zde
přijde jako dobré řešení pro malý osobní web někoho, kdo vidí PHP
poprvé.
Když už jsi to tu navrhl, jak bys tedy ošetření udělal a co myslíš direktivou pro vzdálené soubory?
Sice to není na mně, ale funkce basename() by na to měla stačit.
Direktivy pro vzdálené soubory jsou allow_url_fopen a allow_url_include. Určují, jestli je vůbec možné includovat věci z jiných serverů. Teoreticky by to možná stačilo, ale jistější je zabezpečit si to i jinak.
K ukládání stránek do databáze se časem taky dostaneme.
To by určitě nestačilo, viz třeba ../../../../etc/passwd
V ohrožení je i ../.htpasswd, pokud tam je
Máš snad něco proti funkci basename()? Ta udělá vše jedním vrzem.
Jak? Jsou jen 2 zakázané znaky: '/' a '#0'. Funkce basename() vrací text mezi posledním / a prvním #0.
CZechBoY: To se dá nabourat snadno: '/etc/passwd' tím projde. Stačí znát absolutní cestu a dostanu se skoro všude.
Odpovídal jsem na CZechBoY, ale až teď jsem si všiml, že tam nemá
regulární výraz
Říkám,
že bych to raději projel na [A-Za-z].
Už jsem si toho také všiml. Omezení může být libovolné. Uznávám, že povolování vhodných znaků je mnohem výhodnější, než filtrování nevhodných. V daném případě tedy použít basename() i regexp.
Také je dobré tyto texty mít v samostatném adresáři, u kterého je zakázáno prohlížení. Do několika set článků je to ještě použitelné, ale s dalším zvyšováním jejich počtu už začne záležet na typu souborového systému. Některé to neustojí a začnou zadrhávat. Jiné s přehledem přežijí i milióny souborů v jednom adresáři.
Zobrazeno 14 zpráv z 14.