« 1 2
Autor Zpráva
David Grudl
Profil
Nevím, jestli to byl přímo Ugo, ale už jsem tu od někoho zaznamenal podobnou neznalost co se týče escapování (neber si to prosím osobně).

O co jde: jedna věc jsou bezpečná a nebezpečná data a druhá věc je escapování. Obojí spolu vůbec nesouvisí. Ošetřování uživatelských vstupů se nijak netýká šablonovacího systému a představuje problematiku samu o sobě. Vedle toho escapování je rutinní činnost mající za cíl převést znaky se speciálním významem v daném kontextu na jiné odpovídající sekvence (viz také http://phpfashion.com/escapovani-definitivni-prirucka).

Příklad: v proměnné $table je uložen název tabulky, jde o zcela "bezpečnou" proměnnou, nezískal jsem ji od uživatele, nicméně při použití uvnitř SQL dotazu ji bezpodmínečně musím escapovat. Pokud se totiž tabulka bude jmenovat třeba "order" (je v ní uloženo pořadí čehokoliv), bez escapování by mi databáze vyhodila chybu, protože ORDER je také klíčové slovo. Takže třeba pro MySQL se escapuje na `order`.

Totéž platí pro jakýkoliv jiný kontext, jako je třeba HTML, URL nebo iCal. Všechny proměnné krom speciálních výjimek se musí při výstupu escapovat. Což v PHP představuje volání např. funkce htmlSpecialChars(). Pokud to opomenu, hrozí, že vytvořím bezpečností díru XSS, která může vést k tomu, že útočník získá cizí identitu apod.

Protože programátoři na escapování zapomínají (a dost často mu nerozumí nebo o něm nevědí, viz tato diskuse), je velkou výhodou šablonovacího systému Latte, že to dělá za programátora. Latte přitom můžete používat samostatně, bez nutnosti se učit nějaký framework.
Ugo
Profil
David Grudl:
Ano to jsem byl já, třeba s tím SQL je to jasné, tma vlastně ani není na výběr, ale konkrétně HTML se dost často upravuje v administraci (většina webů co dělám má jen to a žádný vstup od uživatele), pak je třeba ho zobrazit bez escapování spec. znaků. I to by bylo dobré nějak ošetřit, ale htmlspecialchars není řešením, jestli jsem pochopil tak někdo psal, že to slouží třeba tvé Texy.

Já se jen přikláním k tomu, že je lepší nechat na programátorovi kdy chce escapovat, je to jen můj názor. Když na to někdo zapomene na důležitém místě, je to jeho chyba a za chyby se vždy platilo :) - btw. je mi jasný, že stránek z minulosti kde mám bezpečnostní díry je hafec a escapování je často tou nejmenší :-P (i když za blbý hesla do administrace snad nemůžu)

Jinak Latte samostatně použít nejde, ale jak říkám proti je i copyright a morální zábrana toho něco vykrádat, nicméně potřebuje další knihovny z FW (minimálně Strings) a to pro mě znamená, že samostatně prostě nejde, i když de načíst těch pár knihoven a pak se dá říct že samostatné je. Ovšem vím, jak je těžký dělat samostatný podobný věci, ono to pak odporuje tomu že třída má umět jednu věc, tomu že se jedna věc má vyskytovat jednou a dalším - prostě to nejde :)
Jan Tvrdík
Profil
Ugo:
proti je i copyright a morální zábrana toho něco vykrádat
Licence naopak explicitně říká, že „vykrádání“ je povoleno. Staří, aby výsledný zdrojový kód obsahoval informaci o tom, odkud byl vykraden a dále musí být přiložen stejný seznam podmínek a zřeknutí se odpovědnosti, jako obsahuje původní licence.
« 1 2

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0