Do nového roku jako lepší programátoři? Znovu otevíráme večerní školu programování. Nette framework, návrhové vzory, testování nebo vůbec poprvé kurzy ASP.NET dostupné odkudkoli v republice.

Diskuze: Výběr stránek pomocí switch?

PHP PHP Výběr stránek pomocí switch? American English version English version

Avatar
CZechBoY
Člen
Avatar
CZechBoY:

už vidim jak dávám do switche 200 stránek :D

 
Odpovědět 25.6.2012 23:02
Avatar
Kit
Redaktor
Avatar
Odpovídá na CZechBoY
Kit:

200 stránek ve switchi je jasnou chybou v návrhu, include($_GET['st­ranka']) sebevraždou.

Pro 200 podstránek je správným řešením databáze, ve které jsou i texty.

Nahoru Odpovědět 26.6.2012 6:40
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
CZechBoY
Člen
Avatar
CZechBoY:

co třeba ošetřit lomítka, tečka pro změnu adresáře?

  • vypnutí direktivy na čtení vzdálených souborů
 
Nahoru Odpovědět 26.6.2012 8:16
Avatar
Kit
Redaktor
Avatar
Odpovídá na CZechBoY
Kit:

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í.

Nahoru Odpovědět 26.6.2012 10:45
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na CZechBoY
David Čápka:

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?

Nahoru Odpovědět 26.6.2012 11:00
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
Kit
Redaktor
Avatar
Odpovídá na David Čápka
Kit:

Sice to není na mně, ale funkce basename() by na to měla stačit.

Nahoru Odpovědět 26.6.2012 11:37
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Mircosoft
Redaktor
Avatar
Mircosoft:

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.

 
Nahoru Odpovědět  +1 26.6.2012 11:44
Avatar
Kit
Redaktor
Avatar
Odpovídá na Mircosoft
Kit:

To by určitě nestačilo, viz třeba ../../../../et­c/passwd

V ohrožení je i ../.htpasswd, pokud tam je

Nahoru Odpovědět 26.6.2012 11:57
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
CZechBoY
Člen
Avatar
CZechBoY:

v tom případě str_replace('­../',null,$in­clude)

 
Nahoru Odpovědět 26.6.2012 15:27
Avatar
Kit
Redaktor
Avatar
Odpovídá na CZechBoY
Kit:

Máš snad něco proti funkci basename()? Ta udělá vše jedním vrzem.

Nahoru Odpovědět 26.6.2012 15:36
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Kit
Redaktor
Avatar
Kit:

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.

Nahoru Odpovědět 26.6.2012 16:31
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Kit
David Čápka:

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].

Nahoru Odpovědět 26.6.2012 16: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
Kit
Redaktor
Avatar
Odpovídá na David Čápka
Kit:

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.

Nahoru Odpovědět 26.6.2012 16:56
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
CZechBoY
Člen
Avatar
CZechBoY:

jo regulární výraz by byl nejlepší
zapomělj sem eště na str_replace('/',nu­ll,$inc) ale regulár je nej /\

 
Nahoru Odpovědět 27.6.2012 16:26
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 14 zpráv z 14.