Сокетите не работят във Flash Player

След версия 9.0.115.0 на Adobe Flash Player следните конфигурации може да не работят според очакванията:

  • SWF файл се опитва да използва сокет или XMLSocket връзка назад до своя хост, без да изпълни повикване loadPolicyFile, за да извлече файла на правилата за сокети.
  • SWF файл се опитва да използва сокет или XMLSocket връзка назад до своя хост, като зарежда файл на правила, който не показва своя собствен домейн като позволен домейн.
  • SWF файл се опитва да използва сокет или XMLSocket връзка назад до своя хост, като дава разрешение на файл на правила за HTTP.

Вижте раздел Диагностика за инструкции относно това как да определите дали тази промяна ще засегне вашия сайт.

Причина

След версия 9.0.115.0 на Flash Player изискванията за разрешения за сокет връзки са променени, а файловете на правилата за HTTP вече не разрешават сокет връзки. Flash Player има два типа файлове на правила:

  • Файлове на правила за HTTP, които използват файлове crossdomain.xml на сървъра, които пък определят дали SWF файловете от другите домейни могат да зареждат съдържание от този сървър.
  • Файлове на правила за сокети, дефиниращи портовете към които Flash Player може да се свързва, като използва връзки Socket или XMLSocket.

В по-ранните версии файлът на правилата за сокети, който представлява файл на правила, внедрен от сокет, не се изисква при свързване с портове с номера над 1024, ако

  • домейнът, който обслужва SWF файла, е същият като на домейна на сокет връзката, както и ако
  • файлът crossdomain.xml се хоства в обслужващия домейн.

Тази предишна конфигурация представлява риск за клиентите, тъй като се обслужват по-голям брой критични услуги от портове с номера над 1024. Тази промяна също така помага за намаляване на възможностите за DNS атаки, като се използват сокетите на Flash Player за достигне на хоста на жертвата. За да се смекчи този проблем, сега Flash Player изисква файл на правила за сокети за всички сокет връзки, независимо от приемните портове и присъствието на файл crossdomain.xml. Вече има фиксирано основно място за файловете на правилата за сокети на порт 843. Файлът на правилата на този порт ще бъде в състояние да дефинира мета правила, които ще определят дали други файлове на правила за сокети са разрешени за хоста. По подразбиране всички файлове на правила са признати.

Ако вашите SWF файлове преди са можели да се свързват със своя първоначален хост чрез портове с номера над 1024, защото е бил наличен файл crossdomain.xml, то сега трябва да е наличен файл на правила за сокети. Файлът на правила за сокети може да се обслужва или чрез основния порт за правила за сокети (843), или от същия порт като използвания за сокет връзката.

Диагностика

Използвайте следната информация, за да определите дали тази промяна ще засегне вашия сайт. От версия 9.0.115.0 на Flash Player се въведе регистрационен файл на правилата, който представлява нова функция. Регистрационният файл на правилата показва съобщения за всяко събитие, свързано с файловете на правилата: опити за извличане, успешни и неуспешни обработки, както и какво става със заявките, които зависят от тях. Можете да намерите пълна справка за регистрационния файл на правилата в Приложение B на Промени във файловете на правилата за Flash Player 9 и 10.

За да използвате регистрационния файл на правилата:

  1. Инсталирайте версия за дебъгване Flash Player 9.0.115.0 или следваща. Можете да използвате Flash Player от всякакъв тип: ActiveX, добавка или самостоятелен продукт. Можете да вземете версията за дебъгване на Flash Player от раздела с файлове за изтегляне на Центъра за поддръжка на Flash Player.
  2. Определете местоположението на конфигурационния файл mm.cfg. Това е общ конфигурационен файл за дебъгване, който версиите на Flash Player за дебъгване четат при стартирането си. Файлът mm.cfg се намира във вашата домашна (home) директория. Например:

    • Windows: C:\Documents and Settings\username
    • Windows Vista: C:\Users\username
    • Mac OS и Linux: /home/username
  3. Създайте файл mm.cfg, ако той не съществува, и след това добавете единия или и двата от следните редове:

    • PolicyFileLog=1 # Разрешава регистриране във файла на правилата
    • PolicyFileLogAppend=1 # Незадължително; не изчиства регистрационния файл при стартиране
    • Ако параметърът PolicyFileLogAppend е разрешен, всеки нов SWF файл в кореновото ниво ще изчиства регистрационния файл. Ако policyfilelogappendpolicyfilelogappend<> е разрешен, предишното съдържание на регистрационния файл винаги ще се запазва и регистрационният файл ще нараства.

    Ако много различни SWF файлове в кореновото ниво се зареждат по време на тестване, вероятно ще искате да разрешите PolicyFileLogAppend. Обаче ако разрешите PolicyFileLogAppend, вероятно ще се наложи ръчно да преименувате или изтривате регистрационния файл от време на време, или той ще стане много голям и ще бъде трудно да се определя къде завършва старото съдържание и къде започва новото.

  4. Намерете мястото, където ще се запише policyfiles.txt (регистрационния файл на правилата). Не е задължително той вече да съществува. Flash Player ще го създаде, ако следващия път се изпълни SWF файл. Можете да намерите файла policyfiles.txt на следните места:
    • Windows: C:\Documents and Settings\username\Application Data\Macromedia\Flash Player\Logs
    • Windows Vista: C:\Users\username[ AppData]\Roaming\Macromedia\Flash Player\Logs
    • Mac OS: /Users/username/Library/Preferences/Macromedia/Flash Player/Logs (необичайно е за програма да записва регистрационни файлове в директорията Preferences, но в случая това е така)
    • Linux: /home/username/.macromedia/Flash_Player/Logs
  5. За да проверите настройката си, изпълнете някой SWF файл във Flash Player и след това затворете Flash Player (или браузъра).

  6. След това вижте файла policyfiles.txt в директория Logs. Уверете се, че има скорошно време на изменение. Отворете го и се уверете, че се е появило поне едно съобщение ("Root-level SWF loaded"). Ако е така, регистрационният файл на правилата работи.

  7. Отидете на SWF съдържанието, което искате да тествате. Стартирайте съдържанието чрез произволни сценарии, които ще го накарат да се натъкне на файловете на правилата. Затворете Flash Player, когато сте готови.
  8. Прочете файла policyfiles.txt, за да получите информация какво е станало с файловете на правилата по време на тестовото изпълнение. Ако се появят съобщения, които не са ясни, вижте Промени във файловете на правилата за Flash Player 9 и 10.

  9. Ако намерите полезна информация във файла policyfiles.txt, която искате да запазите за бъдещи справки, преименувайте регистрационния файл policyfiles.txt с друго име или го преместите в друга директория, така че Flash Player да не пише върху него, когато го стартирате отново.

Решение: Направете файл на правилата за сокети, който позволява свързване с хоста

За да се справите с този проблем, трябва да създадете файл на правилата за сокети, който позволява свързване с хоста. Тази файл на правила може да се обслужва или чрез основното място за правила за сокети (порт 843), или от приемния порт на сокет връзката. Файлът на правилата за сокети трябва да включва всички домейни, на които е позволено да се свързват към сокета, включително със себе си. Ако файлът на правилата за сокети се хоства от основното място за файловете на правилата, включете мета правила, където на файловете на правилата за сокети им е разрешено да се намират.

Промените във файловете на правилата за сокетите също така са описани подробно вПромени във файловете на правилата за Flash Player 9 и 10. (Съобщенията от регистрационния файл са описани подробно в Приложение B.)

Допълнителни материали за справка

За информация относно сигурността на Flash Player посетете страницата за сигурността на Flash Player.

Промените във файловете на правилата за кросдомейните и сокетите също така са описани подробно вПромени във файловете на правилата за Flash Player 9 и 10.

Този материал е лицензиран под лиценз Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported  Публикациите в Twitter™ и Facebook не попадат под клаузите на Creative Commons.

Правни бележки   |   Правила за онлайн поверителност