Billy Rios legújabb munkája a GoogleCode egy igen kellemetlen hiányosságára hívta fel a figyelmet. A GoogleCode egy SourceForge-hoz hasonló projekt-hoszting szolgáltatás nyílt forráskódú alkalmazások számára verziókezeléssel, hibajelentő felülettel stb. A hibajelentésekhez szinte bármilyen típusú fájl csatolható, hogy az esetleges core dumpokat, képernyőképeket és még ki tudja mi mindent könnyedén el lehessen juttatni a fejlesztőkhöz.
Billy egy speciális .jar fájlt töltött fel az egyik hibajelentése mellé. Ez a fájl bárki számára elérhető és a code.google.com domainen fut, ergo a same-origin policy is ezen a tartományon lesz értelmezve, ha sikerül lefuttatni a csomagban található Java kódot*.
Azért van szükség a kód becsomagolására, mert a JVM végez némi átalakítást az osztályok nevein mielőtt lekéri azokat, ezért a hosszú URL-t tartalmazó elérési út könnyen elromlik, az aapplet tag rchive attributumát azonban ez a kellemetlenség nem érinti, a megfelelő osztály pedig a code attributummal kiválasztható.
Ezek után nincs más dolgunk mint a GoogleCode-ba bejelentkezett felhasználót egy megfelelő oldalra irányítani, ahol is appletként betöltjük a JAR fájlt, ami átcsúszva a same-origin policyn szépen kiolvassa az összes érdekes adatot a code.google.com-ról:

Ez egyszerűen szép! :)
Billy egy speciális .jar fájlt töltött fel az egyik hibajelentése mellé. Ez a fájl bárki számára elérhető és a code.google.com domainen fut, ergo a same-origin policy is ezen a tartományon lesz értelmezve, ha sikerül lefuttatni a csomagban található Java kódot*.
Azért van szükség a kód becsomagolására, mert a JVM végez némi átalakítást az osztályok nevein mielőtt lekéri azokat, ezért a hosszú URL-t tartalmazó elérési út könnyen elromlik, az aapplet tag rchive attributumát azonban ez a kellemetlenség nem érinti, a megfelelő osztály pedig a code attributummal kiválasztható.
Ezek után nincs más dolgunk mint a GoogleCode-ba bejelentkezett felhasználót egy megfelelő oldalra irányítani, ahol is appletként betöltjük a JAR fájlt, ami átcsúszva a same-origin policyn szépen kiolvassa az összes érdekes adatot a code.google.com-ról:
Ez egyszerűen szép! :)
* Valakinek eszébe juthat, hogy ugyanezt egy egyszerű HTML oldallal is meg lehet csinálni, de az a baj, hogy a GoogleCode a feltöltött fájlokat olyan HTTP fejlécekkel küldi el, hogy azok nem renderelődnek a böngészőben, a JVM ellenben magasről tesz ezekre a fejlécekre...
Utolsó kommentek