Sockets fungerer ikke i Flash Player

Med Adobe Flash Player-versioner nyere end 9.0.115.0 fungerer følgende konfigurationer muligvis ikke som ønsket:

  • En SWF-fil forsøger en socket- eller XMLsocket-forbindelse tilbage til sin egen vært uden at foretage et loadPolicyFile-kald om at hente en socket-policy-fil.
  • En SWF-fil forsøger en socket- eller XMLsocket-forbindelse tilbage til sin egen vært og indlæser en policy-fil, der ikke anfører sit eget domæne inden for de tilladte domæner.
  • En SWF-fil forsøger en socket- eller XMLsocket-forbindelse tilbage til en hvilken som helst vært med en HTTP-policy-fil, der giver tilladelse.

Se afsnittet Diagnose for en vejledning til at afgøre, om denne ændring påvirker dit site.

Årsag

Flash Player-versioner nyere end 9.0.115.0 ændrer adgangskravene til socket-forbindelser, og HTTP-policy-filer autoriserer ikke længere socket-forbindelser. Flash Player har to typer af policy-filer:

  • HTTP-policy-filer, der er crossdomain.xml-filer på en server, der definerer, om SWF-filer fra andre domæner kan indlæse denne servers indhold.
  • Socket-policy-filer, der definerer de porte, som Flash Player kan forbindes med via socket- eller XMLSocket-tilslutninger.

I tidligere versioner var en socket-policy-fil, der er en policy-fil, der anvendes af en socket, ikke påkrævet til tilslutninger til porte større end 1024, hvis

  • domænet til SWF-filen, var det samme som socket-forbindelsens domæne, og
  • domænet hostede en crossdomain.xml-fil.

Denne tidligere konfiguration udgjorde en risiko for kunderne, idet et stigende antal kritiske services udføres af porte større end 1024. Denne ændring bidrager også til at nedsætte muligheden for et DNS-gentilknytningsangreb, hvor Flash Player-sockets anvendes til at nå offerets vært. For at reducere denne risiko kræver Flash Player nu en socket-policy-fil til alle socket-forbindelser uanset destinationsporten og tilstedeværelsen af en crossdomain.xml-fil. Der er nu en fast master-placering for socket-policy-filer på port 843. Policy-filen på denne port vil være i stand til at definere meta-policies, der bestemmer, om andre socket-policy-filer er tilladt hos værten. Som standard godkendes alle socket-policy-filer.

Hvis dine SWF-filer tidligere var i stand til at få forbindelse til deres oprindelige vært på porte større end 1024, fordi der var en crossdomain.xml-fil, er du nu nødt til at have en socket-policy-fil. Socket-policy-filen kan betjenes enten fra master-socket-policy-porten (843) eller fra samme port som socket-forbindelsen.

Diagnose

Anvend følgende information til at afgøre, om denne ændring påvirker dit site. Flash Player 9.0.115.0 har indført policy-fil-logging, en ny feature. Policy-fil-loggen viser meddelelser til alle hændelser med forbindelse til policy-filer: forsøg på at hente dem og vellykkede og mislykkede behandlinger af dem samt udfaldet af de forespørgsler, der afhænger af dem. Du finder en udførlig reference til policy-fil-log-meddelelser i appendiks B i Policy file changes in Flash Player 9 and 10.

For at anvende policy-fil-loggen:

  1. Installér en debug-version af Flash Player 9.0.115.0 eller nyere. Du kan anvende en hvilken som helst type Flash Player: ActiveX, Plug-In eller Standalone. Du kan få debug-versionen af Flash Player under Flash Player Support Center Downloads.
  2. Vælg placeringen af din mm.cfg konfigurationsfil. Dette er en generel debugging-konfigurationsfil, som debug-versioner af Flash Player læser under opstart. Din mm.cfg fil er placeret i din home-mappe. F.eks.:

    • Windows: C:\Documents and Settings\brugernavn
    • Windows Vista: C:\Users\brugernavn
    • Mac OS og Linux: /home/brugernavn
  3. Opret mm.cfg, hvis den ikke eksisterer, og tilføj herefter en eller begge af disse linjer:

    • PolicyFileLog=1 # Aktiverer policy-fil-logging
    • PolicyFileLogAppend=1 # Valgfri; ryd ikke log ved start-up
    • Hvis PolicyFileLogAppend ikke aktiveres, vil enhver ny SWF-fil på rodniveauet rydde log-filen. Hvis policyfilelogappendpolicyfilelogappend<> er aktiveret, vil det tidligere indhold i logfilen altid blive bevaret, og logfilen vil udvides i enden.

    Hvis der indlæses mange forskellige SWF-filer på rodniveauet i løbet af testen, vil det formentlig være en fordel at aktivere PolicyFileLogAppend. Men hvis du aktiverer PolicyFileLogAppend, vil det formentlig indimellem være nødvendigt at omdøbe logfilen manuelt eller slette den, da den ellers vil blive meget stor, og det vil blive vanskeligt at afgøre, hvor det tidligere output ender, og hvor det nye begynder.

  4. Find den placering, hvor policyfiles.txt, policy-fil-loggen, vil blive oprettet. Den eksisterer ikke nødvendigvis endnu; Flash Player vil oprette den, næste gang der eksekveres en SWF-fil. Du kan finde policyfiles.txt på følgende placeringer:
    • Windows: C:\Documents and Settings\brugrenavn\Application Data\Macromedia\Flash Player\Logs
    • Windows Vista: C:\Users\brugernavn[ AppData]\Roaming\Macromedia\Flash Player\Logs
    • Mac OS: /Users/brugernavn/Library/Preferences/Macromedia/Flash Player/Logs (det er usædvanligt, at et program opretter logfiler i mappen Foretrukne, men det er tilfældet her)
    • Linux: /home/brugernavn/.macromedia/Flash_Player/Logs
  5. Kontrollér din opsætning, kør en hvilken som helst SWF-fil i Flash Player, og luk derefter Flash Player (eller browseren).

  6. Du ser nu policyfiles.txt i Logs-mappen. Bekræft, at den har et nyligt ændringstidspunkt. Åbn den, og bekræft, at mindst en meddelelse vises (»Rod-niveau SWF indlæst«). Hvis ja, virker policy-loggingen.

  7. Besøg det SWF-indhold, du har brug for at teste. Eksekver indholdet i alle scenarier, der vil medføre, at det støder på policy-filer. Luk Flash Player, når du er færdig.
  8. Læs policyfiles.txt for information om, hvad der skete med policy-filer under din testeksekvering. Hvis du ser meddelelser, der ikke er tydelige, kan du se efter i Policy file changes in Flash Player 9 and 10.

  9. Hvis du finder nyttig information i policyfiles.txt, som du har brug for at gemme til senere, skal du omdøbe filen til noget andet end policyfiles.txt eller flytte den til en anden mappe, så Flash Player ikke overskriver loggen næste gang.

Løsning: Opret en socket-policy-fil, der tillader forbindelser til vært

For at løse dette problem skal du oprette en socket-policy-fil, der tillader forbindelse til værten. Denne policy-fil kan betjenes enten fra master-socket-policy-placeringen på port 843 eller fra socket-forbindelsens destinationsport. Socket-policy-filen skal indeholde alle domæner, der har tilladelse til at forbinde til socket, inkl. sig selv. Hvis socket-policy-filen hostes fra master-policy-filplaceringen, skal du inkludere meta-policies de steder, hvor policy-filer har tilladelse til at blive placeret.

Ændringer for socket-policy-filer er beskrevet udførligt i Policy file changes in Flash Player 9 and 10. (Log-meddelelser er beskrevet udførligt i appendiks B.)

Yderligere oplysninger

Flash Player-sikkerhedsinformation findes på siden om Flash Player-sikkerhed.

Ændringerne i cross-domæne- og socket-policy-filer er også udførligt beskrevet i Policy file changes in Flash Player 9 and 10.

Dette arbejde har licens under en Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License  Opslag på Twitter™ og Facebook er ikke omfattet af vilkårene for Creative Commons.

Juridiske meddelelser   |   Politik for beskyttelse af personlige oplysninger online