Sfat rapid Un ghid pentru fișierele de politică Cross Domain

Fiecare dezvoltator Flash sau Flex care a trebuit să acceseze resurse la distanță a intrat într-un anumit moment într-un fișier de politică crossdomain.xml. Acest articol aruncă o privire asupra a ceea ce sunt aceste fișiere de politici, a modului de funcționare și a modului în care puteți crea unul pentru dvs..

Exemplu

Să aruncăm o privire la un exemplu despre ceea ce vorbim:

Ce e atât de special în asta? Ei bine, SWF incarca imaginea smiley de la http://mytestgae.appspot.com/images/smiley.jpg, nu din domeniul Activetuts +. Fără un fișier de politică cu domenii încrucișate, încercarea de a încărca imaginea ar declanșa un SecurityError.


Ce este un fișier de politică de domenii încrucișate?

Modelul de securitate cunoscut sub numele de politica de "aceeași origine", implementat de cele mai moderne browsere web, împiedică accesul sau modificarea anumitor tipuri de conținut dacă fișierul există pe un alt domeniu. Nu este o regulă tare și rapidă; Paginile HTML vor afișa cu ușurință imagini și cod HTML din paginile din alte domenii. Însă pentru JavaScript aceeași politică de origine împiedică un document sau un script încărcat dintr-o singură origine să obțină sau să stabilească proprietățile unui document de la altul.

Flash include o politică de securitate similară care, în general, împiedică accesul unei aplicații Flash la date care sunt găzduite pe un domeniu la distanță. Cu toate acestea, există multe circumstanțe în care nu este numai util, ci se așteaptă ca resursele să fie accesate de la distanță. Un album foto online s-ar afla limitat dacă aplicațiile externe nu și-ar putea descărca imaginile. De asemenea, ar fi o prostie dacă un serviciu web nu permitea aplicațiilor externe să interacționeze cu acesta.

Din acest motiv, este posibil să creați un fișier XML, numit crossdomain.xml, care să precizeze modul în care datele dintr-un domeniu pot fi accesate de o aplicație Flash găzduită pe un domeniu la distanță. În cea mai mare parte, aceste fișiere de politici sunt destul de simple, dar există câteva detalii pe care este util să le cunoașteți.

Dacă găzduiți conținut pe care doriți să îl accesați prin aplicații Flash externe, va trebui să creați un fișier crossdomain.xml. Să începem să aruncăm o privire la un exemplu de bază.


Pasul 1: Un fișier de bază crossdomain.xml

Iată un fișier foarte simplu crossdomain.xml. Când acest fișier este găzduit pe rădăcina domeniului dvs., permite accesul la aplicațiile Flash externe pentru toate resursele din domeniul dvs..

    

Fișierul de politică conține un singur fișier etichetă. În interiorul acestuia puteți avea zero sau mai multe Etichete. Fiecare tag-ul poate fi utilizat pentru a defini un domeniu sau o adresă IP de la care o aplicație Flash poate accesa resursele locale. Atributul Domeniul = "*" specifică faptul că toate domeniile au acces. Aceasta este datorită metodei wildcard asterisk, care este utilizată aici pentru a se potrivi cu toate domeniile și adresele IP.

În majoritatea situațiilor, acest fișier de politică "permite tot" este suficient. Oferă aplicațiilor Flash acces la toate resursele publice, în timp ce orice securitate pe care o aveți (cum ar fi paginile protejate prin parolă) va împiedica în continuare aplicațiile Flash să acceseze date sensibile.

(Rețineți că nu puteți pune un fișier crossdomain.xml pe domeniul dvs., care va permite SWF-urilor și în domeniul dvs. să acceseze fișierele la distanță pe o alta domeniu!)


Pasul 2: Domenii specificate

Dacă nu doriți să permiteți accesul global la resursele dvs. publice, atributul de domeniu din tag-ul poate fi folosit pentru a acorda acces la anumite domenii.

Puteți specifica un domeniu în întregime. Exemplul de mai jos va oferi acces la aplicațiile Flash găzduite în domeniul www.example.com.

Puteți utiliza martorul asterisc pentru a se potrivi acelor domenii care se termină cu sufixul dat. Aici acordăm acces la aplicațiile Flash pe domeniile example.com, www.example.com, indiferent de exemplu.exemplu.com etc..


Pasul 3: Adrese IP specificate

Puteți specifica accesul prin adresa IP, așa cum puteți permite accesul la aplicațiile Flash găzduite pe anumite domenii. Se utilizează aceeași etichetă și atribute, cu excepția cazului în care folosiți o adresă IP:


Pasul 4: Lucrul cu HTTPS

Implicit, o aplicație Flash găzduită pe un server HTTPS poate accesa numai resurse pe servere HTTPS la distanță. Dar având în vedere capacitatea pe care HTTPS o poate adăuga la un server, este posibil să nu doriți să o utilizați. În acest caz, setarea sigur atribuit lui fals va permite unei aplicații Flash pe un server HTTPS să acceseze datele de pe un server HTTP.


Pasul 5: Aplicații Flash la distanță

Deci, dacă nu doriți ca aplicațiile Flash să acceseze datele dvs.? Puteți crea fie un fișier crossdomain.xml care nu include niciunul Etichete:

  

Sau pur și simplu nu puteți avea un fișier crossdomain.xml deloc.


Pasul 6: Control granular al subdirectoarelor

Un fișier de politică de domeniu încrucișat va controla accesul la directorul în care se află și la toate subdirectoarele de sub acesta. Acesta este modul în care plasarea unui fișier de politică "permite tot" la rădăcina dvs. de domeniu permite accesul la întregul dvs. domeniu. Dar pot exista situații în care doriți să permiteți accesul numai la un anumit subdirector.

Cu cele mai recente versiuni ale Flash Player, acest lucru necesită două fișiere XML. Mai întâi trebuie să plasați un fișier crossdomain.xml în rădăcina domeniului dvs., care să permită Flash să proceseze fișiere de politică suplimentară de domeniu încrucișat în subdirectoarele. Acest lucru se face cu etichetă. În exemplul de mai jos, setăm permis-cross-domain-politici atribuit lui toate, ceea ce înseamnă că fișierele de politici de domeniu încrucișat care pot exista în subdirectoarele vor fi procesate. Acest comportament este o schimbare în Flash Player 9 Update 3 și în sus. Fișierele de politici anterioare din subdirectoare au fost procesate în mod implicit fără a fi nevoie să se configureze permis-cross-domain-politici atribut.

Rețineți că nu am adăugat niciunul , ceea ce înseamnă că în absența unor fișiere suplimentare crossdomain.xml din subdirectoarele, aplicațiile Flash la distanță nu vor avea acces la resursele de pe acest server.

Puteți afla mai multe despre opțiunile privind politica meta din acest articol.

   

Apoi, plasați un fișier crossdomain.xml în subdirectorul pe care doriți să îl controlați.

Pentru a vedea un exemplu de acest lucru în acțiune, verificați acest fișier. Acest fișier de politică, din rădăcina domeniului http://mytestgae.appspot.com/, utilizează tag pentru a delega controlul la orice fișiere crossdomain.xml care pot exista în subdirectoarele. Apoi, acest fișier de politică din / images / subdirectorul oferă acces deplin la director și la orice subdirector de sub acesta. Deci, o aplicație Flash aflată la distanță ar putea accesa imaginea chipului zâmbitor în directorul de imagini cum ar fi:

      

Cu toate acestea, accesul la imaginea chip smiley din directorul / images-restricted / nu este permis deoarece nu există nici un fișier crossdomain.xml din directorul cu imagini restrânse pentru a suprascrie accesul (lipsa) acordat de fișierul crossdomain.xml din rădăcină a domeniului. Rularea codului de mai jos va duce la o excepție:

      

Excepția prevede:
SecurityError: Eroare # 2123: Încălcarea sandbox-ului de securitate: LoaderInfo.content: file: /// D | /CrossDomain.swf nu poate accesa http://mytestgae.appspot.com/images-restricted/smiley.jpg. Nu au fost acordate accesul fișierelor de politici.
la flash.display :: LoaderInfo / get content ()
la MethodInfo-635 ()


Pasul 7: Politica Cross Domain vs. Firewall

Prin urmare, din informațiile de mai sus, se pare că fișierele de politică cu domenii multiple pot fi utilizate pentru a restricționa în mod eficient accesul la aplicațiile Flash care nu sunt găzduite pe propriul dvs. domeniu. În timp ce este adevărat, nu trebuie să vă bazați pe un fișier de politică de domenii intermediare pentru a restricționa accesul la informații sensibile. În timp ce Flash poate respecta un fișier de politică crossdomain.xml, alte platforme precum PHP nu vor. Faceți o căutare pentru PHP Flash Proxy pentru a vedea ce vreau să spun. Prin utilizarea unui proxy este posibil să se obțină accesul la orice date disponibile publicului, indiferent de existența fișierelor de politică de domeniu transfrontalier. Și nici nu trebuie să plătiți pentru un server PHP - așa cum voi demonstra într-un articol viitor, Google App Engine poate fi folosit ca proxy fără costuri anticipate.

Linia de jos este faptul că fișierele de politică de domeniu încrucișat oferă o modalitate de a acorda selectiv accesul la resursele locale prin aplicații Flash la distanță, dar numai dacă toată lumea joacă după reguli. Dacă doriți să vă asigurați că datele dvs. private rămân private, nu există nici un substitut pentru un paravan de protecție.


Concluzie

Confruntarea cu fișierele politicii de domeniu transversal nu trebuie să fie complicată. Odată ce înțelegeți elementele de bază ale modului în care funcționează, este destul de ușor să acordați sau să restricționați accesul la datele dvs. prin aplicații Flash la distanță. Trebuie doar să știți că nu sunt la fel de siguri cum ar putea părea inițial.

Sper că ți-a plăcut acest sfat rapid, mulțumesc pentru lectură!

Cod