IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
adaam
Člen
Avatar
adaam: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
Tvůrce
Avatar
Odpovídá na adaam
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
adaam
Člen
Avatar
adaam: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
Tvůrce
Avatar
Odpovídá na adaam
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 Hartinger
Vlastník
Avatar
Odpovídá na adaam
David Hartinger: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
New kid back on the block with a R.I.P
Avatar
Kit
Tvůrce
Avatar
Odpovídá na David Hartinger
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
Tvůrce
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
26.6.2012 11:44
Avatar
Kit
Tvůrce
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
adaam
Člen
Avatar
adaam: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
Tvůrce
Avatar
Odpovídá na adaam
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
Tvůrce
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 Hartinger
Vlastník
Avatar
Odpovídá na Kit
David Hartinger: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
New kid back on the block with a R.I.P
Avatar
Kit
Tvůrce
Avatar
Odpovídá na David Hartinger
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
adaam
Člen
Avatar
adaam: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.