čtvrtek 17. května 2007

CZ podcast numero 11

Speciální podcast z JavaOne je právě venku. Roumena jsme vyzpovídali z nejdůležitějších událostí, které se na JavaOne 2007 odehrály. Z tohoto podcastu se dozvíte plno užitečných informací z největší a nejdůležitější konferenci o Jave. Takže nerušený poslech a Vaše dotazy pište na czpodcast at gmail.com.

úterý 15. května 2007

Abeceda AJAX bezpečnosti

Bezpečnost je něco, co máme uložené hluboko v paměti a občas to i oprášíme. V případě webových aplikací se zažilo jisté konvenční smyšlení o bezpečnosti, ale díky inovujícímu prvku v podobě AJAXu je potřeba tento konvenční přístup trochu přehodnotit.

AJAX totiž více odhaluje následující oblasti, které jsou v klasické webové aplikaci více zakryté serverem.

Exposure of Internal Details
Jestli se něčím AJAX aplikace liší v konceptu s web aplikací, pak je to mobilní kód. To jest kód, který cestuje ze serveru na klienta a tam slouží na interakci se serverem. Díky tomu dochází k vystavení určitých citlivých informací klientovi (jména metod, invocation context, návratové typy atd.).
Cross-Site Scripting
Manipulace s klientským stavem aplikace, díky přenesení velkého množství kódu na klienta se otevírají cesty pro manipulaci s jeho stavem. Nebo naopak díky znalosti stavu se otevírá infikovanému kódu možnost volat server s určitým kontextem.
Denial of Service
Přímé vystavení API pro jednotlivé AJAX volání vede k tomu, že se útočník může zaměřit na jednotlivé malé části a tím vyřadit celou službu. Díky neustále integraci služeb různých poskytovatelů do větších aplikací se těžko rozlišuje mezi útoky a běžným využitím.

Na JavaOne 2007 byla kromě mnoha jiných zajímavých prezentací i jedna, která mě velice zaujala a vztahovala se právě k bezpečnosti AJAX či Web 2.0 aplikací. Ptáte se na její jméno? You Are Hacked: AJAX security Essentials for Enterprise Java Technology Developers, vřele doporučuji prostudovat.

neděle 13. května 2007

Do pranice: Jsou persistentní kolekce nutnost nebo vlastnost

Několik posledních dnů řešíme s Lukášem Bartoněm jestli je mapování persistentních kolekcí v ORM nástrojích nutnost a nebo vlastnost. Všechno to začal článek spoluatora Hibernate, Christiana Bauera s názvem Persistent collections are a feature!, ve kterém se snaží uvést na pravou míru jakže to Hibernate zamýšlí s mapováním kolekcí.

Předně nutno poznamenat, že bez mapování kolekci se v ORM nástrojích skutečně obejdete, což si většina vývojářů zprvu neuvědomuje. Kolekce lze celkem snadno nahradit pomocí query. To znamená, že místo to aby vám dotáhnul dceřinou kolekci Hibernate automaticky, tak si tu samou query napíšete ručně.

Tím, že nebudete mapovat kolekce podle mého názoru přijdete o jedno ze základních lákadel, které ORM nástroje nabízejí. Ono lákadlo je pohodlná práce s persistetními daty, aniž by jste nutně museli psát "omáčku" na komunikaci s persistetním úložištěm. Tím myslím především můstek mezi světem objektů a relací.

Přijde mi přirozené, že můžu zavolat parent.getChildren() a dostanu všechny děti daného rodiče. Taktéž mi přijde přirozené, že přidání nového dítěte je jednoduché volání parent.getChildren().add(child). A rozhodně mi nepřijde, že to je jenom nějaké syntaktické cukrátko v podobě pěkné vlastnosti ORM. Můj pohled na věc je, že tohle chování je absolutní povinnost každého ORM nástroje, bez kterého ztrácí ORM nástroje svůj půvab a kouzlo.

Christian Baurer, Gavin King: Java Persitence with Hibernate

One of the reasons you use a full object/relational mapping tool like Hibernate is, of course, that you don’t want to write that query.