Letos jsem měl příležitost (a jako “moderátor” i povinnost) strávit celé WebExpo v dev hallu, takže jsem viděl víc vývojářských přednášek, než možná za všechny předchozí ročníky dohromady, a tady jsou mé zápisky za den první (pátek). Continue reading
Today is your lucky day
O tom, že když se budete trochu snažit a trochu makat, tak dosáhnete toho, co chcete. O tom, že občas musíte být ve správnou dobu na správném místě. A taky o tom, že se vyplatí otevřít pusu nejen proto, abyste do ní nalili pivo. Continue reading
Zoufalý stav JavaScriptových IDE
Už pár let je ve světě “běžného” softwarového vývoje jasné, že se JavaScriptu nedá a nebude dát vyhnout. Máme teď v Agiliu rozpracované tři projekty a každý z nich JavaScript víc nebo míň používá, ať už na klientu (a tady nejde jen o browsery, ale i o instalované aplikace) nebo na serveru (Node.js). JavaScript je už dneska skoro všude a ani do blízké budoucnosti to nevypadá, že by se trend měl nějak otočit.
Proto jsem čekal, že pro něj budou existovat dobré nástroje. A když říkám dobré, tak nemyslím editor, který podbarví kód a trochu tuší, co v kódu je identifikátor kvůli snazší navigaci. Myslím tím normální IDE, jako existují snad pro každou jinou technologii, tj. kontrola kódu, vychytaná navigace po symbolech, mechanismy pro dělení větších projektů na menší celky (knihovny), ladění atd.
Jaká je realita v roce 2012? Upřímně, docela zoufalá. Continue reading
Metoda “Monte Carlo”
Jako šachistu mě baví sledovat, jaké souvislosti a analogie existují mezi královskou hrou a oborem softwarového vývoje. Je jich poměrně dost, často jsou zajímavé a dneska bych chtěl napsat o tom, jaké poučení si do SW vývoje můžeme odnést z metody používané šachovými motory zvané “Monte Carlo”. Continue reading
První dojmy z AngularJS
Minulý čtvrtek v Praze proběhl druhý JS meetup a jednou z prezentací bylo hezké představení Angularu od Pavola Daniše (slajdy i ukázky zde na GitHubu).
Už jsem psal, že mě Angular zajímá, ale až JS meetup pro mě byl první příležitostí vidět tuto věc naživo a moct se ptát člověka, který s ní už delší dobu pracuje. Tady jsou mé velmi hrubé první dojmy: Continue reading
Vybrané reakce na AngularJS 1.0
Minulý týden byla vydána verze 1.0 JavaScriptového frameworku AngularJS, a protože je to jeden z kandidátů do front-end stacku našeho projektu, procházel jsem reakce. Tady jsou ty nejzajímavější, všechny z webu Hacker News (jinde jsou spíš jen gratulace k prvnímu releasu). Continue reading
Pokud znáte klávesové zkratky pro ladění, děláte to špatně
Dnes jsem na Twitteru napsal následující:
Pokud si pamatujete klávesové zkratky pro Step Into, Step Over a Step Out, děláte to špatně.
— Borek Bernard (@borekb) June 15, 2012
… po čemž se mi ozvalo hned několik lidí, takže si to asi zaslouží kratší vysvětlení. Continue reading
Recenze knížky: JavaScript Patterns
Jak jste si mohli přečíst, slavná knížka JavaScript: The Good Parts mě moc nenadchla a především mě nenaučila to, co jsem od ní čekal, takže jsem se pustil do další. Tou byla JavaScript Patterns od Stoyana Stefanova. Continue reading
JavaScript: The Good Parts – dvě až tři hvězdičky z pěti
Nedávno jsem dočetl slavnou knížku JavaScript: The Good Parts od Douglase Crockforda a toto je rychlá recenze. Ve zkratce: zajímavých informací je v ní dost, ale kvůli formě bych ji nedoporučil. Hlavně pokud to má být první knížka pro vážnější ponoření do JavaScriptu. Continue reading
Bezpečnost je míra, ne vlastnost
Chtěl bych se s vámi podělit o jeden příběh, který se nedávno odehrál. A poněvadž nebyl vyroben kdesi v Hollywoodu, ale napsal ho sám vývojářův život, tak není moc veselý. Na jeho konci se totiž místo závěrečných titulků rolujících po plátně za zvuku dojemných melodií objeví přístupové údaje k databázi jedné české a mnou oblíbené webové služby na sdílení obrázků.
Na sklonku minulého roku se kdesi na blíže neurčeném místě setkali dva vývojáři a začali se o tomto příběhu otevřeně bavit. V dnešní době z každé nevýznamné schůzky existuje záznam a tak i toto setkání kdosi nahrával a mě se po několika krabicích lahodného vína podařilo mého dobře informovaného známého přesvědčit k tomu, aby mi záznam tohoto on-line rozhovoru dvou vývojářů přenechal a já vám tedy teď jeho přepis nabízím. Omluvte gramatické chyby a chybějící diakritiku, z důvodu autentičnosti přepis neprošel jazykovou korekturou.
Začátek záznamu je bohužel nesrozumitelný a je přehlušen zvukem houkaček projíždějících policejních vozů, ale dá se vydedukovat, že jeden ze dvou protagonistů příběhu svého kamaráda upozorňuje na to, že ne zcela legálně získal přístup k databázi uvedené aplikace a zkušeně mu doporučuje, co má v následujících okamžicích podniknout.
spaze, 9.11.2011 23:47:14:
a zmen si heslo do db
spaze, 23:47:17:
a na mail
spaze, 23:47:21:
DB_USER string(5) "jirka" DB_PASS string(14) "d2d5d95h1f5ds9"
Medhi, 10.11.2011 2:33:31:
a jak jste zjistili přístup do db, v čem spočívala ta díra?
spaze, 2:34:34:
vyvolas ladenku [1], mas login do db v konstantach a ladenka vypisuje konstanty
Medhi, 2:35:38:
ono to na nette [2] neběží, měl jsem tam nette jenom kvůli formulářům a nechápu, proč se laděnka zobrazovala na production, asi to nerozpoznala [3]
V tomto místě je záznam opět nesrozumitelný, lze jen vyvodit, že Medhi nabízí za danou informaci úplatek v podobě dodávky kvalitního kubánského nápoje destilovaného ze šťávy z cukrové třtiny. Poté záznam končí.
David Grudl, duchovní otec Nette [2], se v komentářích k jednomu z předchozích článků, ve kterém popisuji možnost napadnutí webových aplikací pomocí metody Mass Assignment, vyjádřil k bezpečnosti Nette takto:
David Grudl (28. 3. 2012 | 20:22) napsal:
Ačkoliv se kvůli své lenosti také snažím dělat v Nette vše co nejjednodušší, nikdy to nesmí jít na úkor bezpečnosti. Mass Assignment se proto Nette vůbec netýká. Z Nettích formulářů vždy dostanete jen ta data, která jste explicitně specifikovali. Totéž platí pro parametry předávané přes $_GET. A nelze to ani žádnou direktivou změnit, to je by design.
Tenkrát samozřejmě ještě nemohl tušit, že světlo světa spatří výše uvedený záznam, ve kterém je právě svatá trojice Nette, Nettí formuláře a Laděnka označena jako pachatel všeho zla. Zda Medhi použil uvedené nástroje špatným způsobem nebo zda je vina opravdu na těchto nástrojích samotných se už bohužel nedozvíme. Nicméně pro učinění závěru z tohoto příběhu to ani vědět nemusíme.
Použití jakéhokoliv nástroje, ať už je to webový framework nebo bouchač z reálného světa s východním přízvukem automaticky nezaručí bezpečnost vašich webových aplikací, nezávisle na tom, co tvrdí autor daného nástroje. Nebo váš nejlepší kamarád. Nebo váš šéf. Vždy se naučte, jak daný nástroj pracuje, jaké má omezení, jaké vlastnosti a kdy je vhodné jej použít a kdy ne. Vše pečlivě otestujte a hlavně věřte pouze svému úsudku a svojí hlavě. Tedy pokud nějakou máte.
Bezpečnost totiž není vlastnost, ale pouze míra, kterou byste neměli nikdy snižovat.
1Laděnka je slangový výraz používaný ve vývojářském podsvětí k označení nástroje pro odhalování organizovaného zločinu v podobě chyb ve zdrojových kódech, často bývá spojován se skupinou známou pod jménem Nette.
2 Skupina Nette disponuje souborem nástrojů, které se využívají především pro rychlejší a pohodlnější psaní webových aplikací, v odborné literatuře se pro takový soubor nástrojů používá pojem framework.
3 Důvod, proč se tomu tak stalo naleznete na GitHubu v sekci Nette Issues: Debugger: wrong development mode detection.