👋 Nový obsah na borekb.cz

Info Tento blog je v "read-only módu" a nový obsah již nebude přibývat. O vývoji píšu na DevBlog.

Flash Player 10 bude mít přímý přístup na můj disk

V diskusi u Jakuba Vrány se objevila zmínka o zajímavém a potenciálně užitečném rozšíření pro Firefox, které by před uploadem fotky zmenšilo její velikost tak, aby se na serveru nemusely provádět náročné konverzní operace. Věc by to byla nepochybně užitečná, ale trochu problém je s implementací:

  • Plugin do prohlížeče by znamenal implementovat stejnou věc hned několikrát (Firefox, IE, Opera, Safari,…)
  • Desktopové aplikace by neměly problém po technické stránce, ale zase je potřeba opustit prohlížeč a rovněž implementace nemusí být nejjednodušší, pokud chceme podporovat více platforem (zde bude pravděpodobně čím dál atraktivnější běhové prostředí Adobe AIR)
  • Poslední možností jsou „RIA aplikace“ běžící v prohlížeči, zde mezi nejznámější platformy patří Flash Player, Java a Silverlight. To by mi z mého pohledu připadalo jako rozumný kompromis mezi obtížností implementace, dostupností na různých platformách a uživatelským komfortem.

Poslední skupina má však historicky jeden problém – pluginové technologie typicky spouštějí aplikace v partial trust režimu, což z uživatelského pohledu znamená, že aplikace v zásadě nemají přístup k souborům ani k jiným zdrojům na uživatelově počítači. Zde se trochu vymyká Java, u které jsem na některých webech viděl, že si umí v případě potřeby říct o zvýšení práv a posune se tak do full-trust režimu. Konkrétní příklad lze vidět v bug-tracking systému JIRA, kde lze screenshot k bug reportu nahrát tak, že se obsah schránky Windows vloží přímo do Java appletu. Současný Flash Player ani Silverlight podobnou možnost nemají a vždycky jsem to považoval za jednu z jejich klíčových vlastností.

Ladislav Prskavec v jednom diskusním příspěvku upozornil, že Flash Player 10 bude mít metodu FileReference­.save(), která bude umět data z Flash/Flex aplikace uložit přímo na uživatelův počítač – viz např. článek na flash.cz. V RSS čtečce jsem na ten článek už předtím narazil, ale nevěnoval jsem mu pozornost, protože mám tak hluboce zaryté, že Flash Player je partial-trust technologie, že jsem tomu kdesi v hloubi snad ani nechtěl věřit. Evidentně jsem se ale mýlil.

Z uživatelského pohledu je skvělé mít možnost dostat data do Flash Playeru bez round-tripu na server (diskutovaný scénář zmenšení fotek na klientovi před odesláním na server je perfektním příkladem), ale na první pohled mě trochu vyděsila bezpečnost – nestávám se na webu zranitelnější, když Flash Player umí uložit libovolná data na můj počítač?

Po troše průzkumu (zatím moc informací bohužel není) se však zdá, že k obavám není důvod:

  • Uložení na disk vyžaduje explicitní akci uživatele (otevře se normální dialogové okno pro uložení souboru), přepsání lokálního souboru vyžaduje ještě o jedno kliknutí navíc („opravdu chcete přepsat…?“)
  • Jelikož stejná úroveň „nebezpečí“ je na webu na každém kroku (každý link může směřovat na download potenciálně nebezpečného souboru), bude bezpečnost Flash Playeru 10 na zcela identické úrovni.
  • V důsledku předchozího bodu zůstává Flash Player partial-trust technologií, takže žádné vkládání ze schránky nebo drag&drop z lokálních složek fungovat nebude (což je dobře!)

Celkově to tedy vypadá, že Adobe do FP přidala užitečnou věc, aniž by snížila bezpečnost uživatelů. Paráda.

Kontinuum pluginových RIA technologií tedy bude vypadat takto:

  • Java applety jsou nejmocnější, v extrémním případě dokáží běžet ve full trust módu
  • Flash Player 10 poběží vždy v partial trust módu, ale pro některé specifické případy bude moct načíst nebo uložit soubory k uživatelovi na harddisk
  • V Silverlightu o žádném přístupu k lokálním souborům nebo zdrojům nevím a ani jsem neslyšel, že by se to plánovalo Update: Jak upozornili Mifko a Petr Šnobelt, Silverlight 2.0 má třídu OpenFileDialog, která umožní do aplikace načíst libovolný soubor z uživatelova harddisku, a zmenšovač obrázků před uploadem již dokonce existuje (Fluxify). Ukládání na disk zatím chybí (Isolated Storage nepočítám, něco podobného je dostupné ve Flashi i v HTML už dlouho, ale z uživatelského pohledu to není ono). Díky za doplnění!
Zařazeno do kategorií |
Lukáš Lánský (Pá, 2008-06-13 16:38):

V Silverlightu 2.0 se skutečně na pevný disk sahat nedá. Osobně by mi to nepřišlo jako velké bezpečnostní ohrožení, i přes obyčejné HTML formuláře můžete stránce posílat soukromé soubory… Naštěstí se o tom uvažuje do verze 3.0.

Mifko (Po, 2008-06-16 09:52):

V Silverlight sa na pevny disk siahat da, ale iba v read rezime, teda neda sa na disk ukladat.

Uz Silverlight 2.0 Beta 1 obsahuje „file open dialog“, kde si uzivatel moze nalistovat lubovolny subor (alebo aj viac naraz) na disku. O „file save dialog“ zatial nebolo nikde zmienky, v kazdom pripade viem si predstavit, ze by to mohla byt uzitocna a napriek tomu aj bezpecna funkcionalita.

David Grudl (Pá, 2008-06-13 22:39):

Problém s přístupem na disk jsem nečekal, nakonec používá to třeba http://www.co­deproject.com/…hU­pload.aspx apod.

Když jsme s Jakubem zmenšovač obrázků diskutovali, tak jsem viděl spíš problém v samotném zmenšení a exportu. Totiž ve verzi Flash 6, kterou jsem docela dobře znal, se nedalo s bitmapou pracovat na úrovni pixelů, nešlo ji ani uložit. Veškeré transformace se prováděly pouze na obrazovce. A nevím, jak daleko jsou v tomto současné verze.

Jinak uložení změnšeného obrázku na disk není potřeba – stačí jej uploadovat na server.

Borek (So, 2008-06-14 08:57):

Flash Player v současné verzi podporuje upload zhruba stejně jako <input type=file… v HTML, nikdy ale nebylo možné se souborem manipulovat ještě na klientovi (podporované metody v současné verzi jsou vidět třeba zde: http://livedoc­s.adobe.com/…fe­rence.html). To bude velký přínos desítkové verze.

Co se manipulace s obrázkem týče, v ActionScriptu 3 je možné skoro cokoliv a bitmapové operace jsou podporovány.

Ukládání na lokální disk mě zajímalo především proto, že pokud by někde byl bezpečnostní problém, tak právě tady. Jinak samozřejmě chápu, že zmenšovači obrázků by data stačilo číst.

Petr Snobelt (Po, 2008-06-16 07:52):

Dobrý den, silverlight má přístup do takzvaného Isolated storage už teď. A pokud Vás zajímá silverlight implementace, mrkněte na http://www.jef­f.wilcox.name­/…/21/fluxify/

Borek (Po, 2008-06-16 13:59):

Mifko a Petře, díky za doplnění, článek jsem aktualizoval.

Komentáře jsou uzavřeny (blog je v read-only módu). Pokud mě chcete kontaktovat, můžete mailem.