Avatar
CZechBoY
Člen
Avatar
CZechBoY:25.6.2012 23:02

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:26.6.2012 6:40

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:26.6.2012 8:16

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:26.6.2012 10:45

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:26.6.2012 11:00

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:26.6.2012 11:37

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:26.6.2012 11:44

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:26.6.2012 11:57

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:26.6.2012 15:27

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:26.6.2012 15:36

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:26.6.2012 16:31

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:26.6.2012 16:41

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:26.6.2012 16:56

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:27.6.2012 16:26

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.