Quick Tips: A Guide to Cross domenepolicy Files

Quick Tips: A Guide to Cross domenepolicy filer
to
Del
Del
Del

Dette Cyber ​​mandag Envato Tuts + kurs vil bli redusert til bare $ 3. Ikke gå glipp av.

Hver Flash eller Flex-utvikler som har hatt tilgang til fjern ressurser har kommet over en crossdomain.xml politikk fil på noen punkt. Denne artikkelen tar en titt på hva disse politiske filene er, hvordan de fungerer og hvordan du kan lage en selv.



Eksempel

La oss ta en titt på et eksempel av hva vi snakker om:

Hva er så spesielt med denne? Vel, er SWF lasting av smiley bildet fra http://mytestgae.appspot.com/images/smiley.jpg, ikke fra de Activetuts + domene. Uten et kryss domenepolicyfilen, ville prøve å laste bildet utløse en Security.



Hva er en Cross domenepolicy Fil?

Sikkerheten modellen kjent som "samme opprinnelse" politikk, iverksatt av de fleste moderne nettlesere, hindrer noen typer innhold kan nås eller endring hvis filen eksisterer på et annet domene. Det er ikke en fast regel; HTML-sider vil gjerne vise bilder og HTML fra sider på andre domener. Men for Javascript samme opprinnelse politikk hindrer et dokument eller script lastet fra en opprinnelse fra å få eller sette egenskapene til et dokument fra en annen.

Flash inkluderer en lignende sikkerhetspolitikk som vanligvis hindrer en Flash tilgangen data som er vert på et eksternt domene. Men det er mange tilfeller der det ikke bare nyttig, men forventet at ressursene vil få ekstern tilgang. En online fotoalbum ville finne seg selv begrenset hvis eksterne applikasjoner ikke kunne laste ned sine bilder. Det ville også være dumt hvis en web-tjeneste ikke tillot utenfor programmer for å samhandle med det.

På grunn av dette er det mulig å lage en XML-fil, kalt crossdomain.xml, som angir hvordan data på et domene kan nås av en Flash-applikasjon vert på et eksternt domene. For det meste disse politiske filene er ganske enkel, men det er noen detaljer som det er nyttig å være klar over.

Hvis du er vert innhold som du ønsker å få tilgang til eksterne Flash-applikasjoner, vil du trenger for å lage en crossdomain.xml fil. La oss begynne med å ta en titt på et grunnleggende eksempel



Trinn 1:. En grunnleggende crossdomain.xml File

Her er en veldig enkel crossdomain.xml fil. Når denne filen ligger på roten av domenet det tillater ekstern Flash-applikasjoner tilgang til alle ressurser på domenet
. ≪? Xml version = "1.0" >? ≪ tvers av domener-politikk > < allow-access-fra domenet = "*" /> < /cross-domain-politikk >

Politikken filen inneholder en enkelt < tvers av domener-politikk > tag. Inne i denne kan du ha null eller flere < allow-access-fra > tags. Hver < allow-access-fra > koden kan brukes til å definere et domene eller IP-adressen som en Flash-program kan få tilgang til lokale ressurser. Attributtet domain = "*" angir at alle domener har tilgang. Dette er takket være stjernen wildcard, som brukes her for å matche alle domener og IP-adresser.

For de fleste situasjoner er dette "tillat alle" policyfilen er tilstrekkelig. Det gir Flash-applikasjoner tilgang til alle kjønnshår ressurser, mens noen sikkerhet du har på plass (som passordbeskyttede sider) vil fortsatt hindre Flash-programmer får tilgang til sensitive data.

(Merk at du ikke kan sette en crossdomain.xml fil på domenet ditt som gjør at SWF også på domenet for å få tilgang til eksterne filer på en annen
domene)



Trinn 2: Spesifiserte Domains

Hvis du ikke gjør det vil tillate global tilgang til offentlige ressurser, domenet attributt i < allow-access-fra > koden kan brukes til å gi tilgang til bestemte domener.

Du kan angi et domene i sin helhet. Eksemplet nedenfor vil gi tilgang til Flash-applikasjoner vert i det www.example.com domene
. ≪ allow-access-fra domenet = "www.example.com" />

Du kan bruke asterisk joker å matche de domener som slutter med det gitt suffiks. Her gir vi tilgang til Flash-applikasjoner på domenene example.com, www.example.com, whatever.example.com etc.
< allow-access-fra domenet = "* example.com." /≫ < hr>
Trinn 3: spesifiserte IP-adresser

Du kan spesifisere tilgang ved IP-adresse, akkurat som du kan gi tilgang til Flash-applikasjoner ligger på spesifiserte domener. Den samme koden og attributter brukes, bortsett fra i dette tilfellet du bruke en IP-adresse:
< allow-access-fra domenet = "123.456.789.123" />



Trinn 4: Arbeide med HTTPS

Som standard et Flash-program vert på en HTTPS-server kan bare få tilgang til ressurser på eksterne HTTPS servere. Men gitt overhead som HTTPS kan legge til en server kan du ikke ønsker å bruke den. I dette tilfellet sette sikre attributt til falsk vil tillate et Flash-program på en HTTPS-server for å få tilgang til data fra en HTTP-server
. ≪ allow-access-fra domenet = "*" sikre = "false" /> < hr>
Trinn 5: Remote Flash-programmer

Så hva om du ikke vil at eksterne Flash-applikasjoner tilgang til dine data? Du kan enten lage en crossdomain.xml fil som ikke inkluderer noen < allow-access-fra > tags:?
< xml version = "1.0" > < tvers av domener-politikk > < /cross-domain-politikk >

Eller du kan rett og slett ikke ha en crossdomain.xml fil i det hele tatt? .



Trinn 6: detaljert kontroll av undermapper

En kryssdomenepolicyfilen vil styre tilgangen til katalogen den ligger i, og alle underkataloger under den. Dette er hvordan plassere en "tillate alle" policy-fil på din domene root gir tilgang til hele domenet. Men det kan være situasjoner hvor du ønsker å bare tillate tilgang til en viss underkatalog.

Med de nyeste versjonene av Flash Player Dette krever to XML-filer. Først må du plassere en crossdomain.xml fil i roten av domenet ditt som gjør at Flash for å behandle flere kryss domenepolicyfiler i underkataloger. Dette gjøres med < site-kontroll > tag. I eksempelet under har vi satt de tillatte-tvers av domener-politikk attributt for alle, noe som betyr at kryssdomenepolicyfiler som kan eksistere i underkataloger vil bli behandlet. Denne atferden er en endring i Flash Player 9 Update 3 og oppover. Tidligere politiske filer i undermapper ble behandlet som standard uten å måtte sette den tillatte-cross-domain-politikk tilskriver

Merk at vi ikke har lagt til noen. ≪ allow-access-fra > koder, noe som betyr i fravær av ytterligere crossdomain.xml filer i underkataloger, vil fjern Flash-applikasjoner ikke har tilgang til ressursene på denne serveren.

Du kan finne ut mer om meta politiske valg i denne artikkelen
. <? xml version = "1.0" >? < tvers av domener-politikk > < site-kontroll permitted- tvers av domener-politikk = "all" /> < /cross-domain-politikk >

Deretter plasserer du en crossdomain.xml fil i underkatalogen du ønsker å kontrollere

For å se en. eksempel på dette i aksjon sjekke ut denne filen. Denne politikken fil i roten av http://mytestgae.appspot.com/domene, bruker < site-kontroll > tag å delegere kontrollen til noen crossdomain.xml filer som kan eksistere i underkataloger. Da denne politikken fil i /images /katalogen tilskudd full tilgang til katalogen og eventuelle underkatalog under den. Så en ekstern Flash søknad kunne få tilgang til smilefjes bildet i bildekatalogen slik:?
≪ xml version = "1.0" encoding = "UTF-8" > < mx:? Søknad xmlns: mx = " http://www.adobe.com/2006/mxml "layout =" absolutt "width =" 550 "height =" 400 "applicationComplete =" onAppComplete () "> < mx: Bilde id = "image" scaleContent = "true" horizontalCenter = "0" verticalCenter = "0" /> < mx: Script > ! < [CDATA [privat funksjon onAppComplete (): void {Security.loadPolicyFile ("http://mytestgae.appspot.com/images/crossdomain.xml"); Var loaderContext: LoaderContext = new LoaderContext (); loaderContext.checkPolicyFile = true; Var loader: Loader = new Loader (); loader.contentLoaderInfo.addEventListener (Event.COMPLETE, funksjon (hendelse: Hendelse): void {image.source = event.currentTarget.content;}); loader.load (ny URLRequest (encodeURI ("http://mytestgae.appspot.com/images/smiley.jpg")), loaderContext); }]] ≫ < /mx: Script > < /mx: Application >

Men tilgang til smilefjes bildet i /images-begrenset /katalog er ikke tillatt fordi det er ingen crossdomain.xml fil i bilder-bundne katalog å overstyre (mangel på) tilgang gis av crossdomain.xml fil i roten av domenet. Kjører koden under vil resultere i et unntak blir kastet:?
≪ xml version = "1.0" encoding = "utf-8" > < mx:? Søknad xmlns: mx = "http: //www. adobe.com/2006/mxml "layout =" absolutt "width =" 550 "height =" 400 "applicationComplete =" onAppComplete () "> < mx: Bilde id = "image" scaleContent = "true" horizontalCenter = "0" verticalCenter = "0" /> < mx: Script > ! < [CDATA [privat funksjon onAppComplete (): void {var loaderContext: LoaderContext = new LoaderContext (); loaderContext.checkPolicyFile = true; Var loader: Loader = new Loader (); loader.contentLoaderInfo.addEventListener (Event.COMPLETE, funksjon (hendelse: Hendelse): void {image.source = event.currentTarget.content;}); loader.load (ny URLRequest (encodeURI ("http://mytestgae.appspot.com/images-restricted/smiley.jpg")), loaderContext); }]] ≫ < /mx: Script > < /mx: Application >

Unntaket lyder:
Security: Feil # 2123: Sikkerhets sandkasse brudd: LoaderInfo.content: file: ///D | /CrossDomain .swf får ikke tilgang http://mytestgae.appspot.com/images-restricted/smiley.jpg. . Ingen policyfiler gitt tilgang
flash.display :: LoaderInfo /få innhold ()
MethodInfo-635 ()



Trinn 7: Cross domenepolicy vs. Brannmur

Så fra informasjonen ovenfor er det ser ut som kryssdomenepolicyfiler kan brukes til å effektivt begrense tilgangen til Flash-applikasjoner ikke ligger på ditt eget domene. Mens det er sant, bør du ikke stole på et kors domenepolicyfilen til å begrense tilgang til sensitiv informasjon. Mens Flash kan respektere en crossdomain.xml politikk fil, andre plattformer som PHP vil ikke. Gjør et søk for PHP Flash Proxy for å se hva jeg mener. Ved å bruke en proxy er det mulig å få tilgang til alle offentlig tilgjengelige data uavhengig av eksistensen av kryss domenepolicyfiler. Og du trenger ikke engang å betale for et PHP server - som jeg vil demonstrere i en fremtidig artikkel, Google App Engine kan brukes som en proxy med ingen foran kostnader

Poenget er at korset. domenepolicyfiler gi en måte å selektivt gi tilgang til lokale ressurser ved å fjerne Flash-applikasjoner, men bare hvis alle spiller etter reglene. Hvis du ønsker å sikre at dine private data forblir privat, det er ingen erstatning for en brannmur.



Konklusjon

Dealing med kryssdomenepolicyfiler trenger ikke å være komplisert. Når du forstår det grunnleggende om hvordan de fungerer er det ganske enkelt å gi eller begrense tilgang til dine data ved fjern Flash-applikasjoner. Bare vær klar over at de ikke er like sikker som de kan i utgangspunktet virke.

Jeg håper du likte denne Quick Tips, takk for lesing!