Ограничение API-интерфейсов сетевого подключенияFlash Player 9 и более поздних версий, Adobe AIR 1.0 и более поздних версий API-интерфейсы сетевого подключения можно ограничить двумя способами. С целью предотвращения вредоносной активности блокируется доступ к традиционно зарезервированным портам. Эту блокировку нельзя отменить с помощью кода. Чтобы контролировать доступ SWF-файла к сетевым подключениям через другие порты, можно настроить свойство allowNetworking. Заблокированные портыПроигрыватели Flash Player и Adobe AIR, как и обозреватели, имеют ограничения для HTTP-доступа к определенным портам. Запрещено отправлять HTTP-запросы определенным стандартным портам, которые традиционно используются для серверов, не использующих протокол HTTP. Данные ограничения применяются ко всем API-интерфейсам, которые обращаются к сетевым URL-адресам. Единственное исключение составляют API-интерфейсы, напрямую вызывающие сокеты, например Socket.connect() и XMLSocket.connect(), или вызывают метод Security.loadPolicyFile(), в который загружается файл политики сокетов. Подключения к сокетам разрешаются или запрещаются с помощью файлов политики сокетов, размещаемых на целевом сервере. Ниже перечислены API-интерфейсы ActionScript 3.0, на которые распространяется блокировка портов: FileReference.download(),FileReference.upload(), Loader.load(), Loader.loadBytes(), navigateToURL(), NetConnection.call(), NetConnection.connect(), NetStream.play(), Security.loadPolicyFile(), sendToURL(), Sound.load(), URLLoader.load(), URLStream.load() Кроме того, блокировка портов распространяется на импорт через общую библиотеку, использование тега <img> в текстовых полях и загрузку SWF-файлов в HTML-страницу с использованием тегов <object> и <embed>. Кроме того, блокировка портов распространяется на использование тега <img> в текстовых полях и загрузку SWF-файлов в HTML-страницу с использованием тегов <object> и <embed>. Ниже перечислены заблокированные порты: HTTP: 20 (ftp data), 21 (ftp control) HTTP и FTP: 1 (tcpmux), 7 (echo), 9 (discard), 11 (systat), 13 (daytime), 15 (netstat), 17 (qotd), 19 (chargen), 22 (ssh), 23 (telnet), 25 (smtp), 37 (time), 42 (name), 43 (nicname), 53 (domain), 77 (priv-rjs), 79 (finger), 87 (ttylink), 95 (supdup), 101 (hostriame), 102 (iso-tsap), 103 (gppitnp), 104 (acr-nema), 109 (pop2), 110 (pop3), 111 (sunrpc), 113 (auth), 115 (sftp), 117 (uucp-path), 119 (nntp), 123 (ntp), 135 (loc-srv / epmap), 139 (netbios), 143 (imap2), 179 (bgp), 389 (ldap), 465 (smtp+ssl), 512 (print / exec), 513 (login), 514 (shell), 515 (printer), 526 (tempo), 530 (courier), 531 (chat), 532 (netnews), 540 (uucp), 556 (remotefs), 563 (nntp+ssl), 587 (smtp), 601 (syslog), 636 (ldap+ssl), 993 (ldap+ssl), 995 (pop3+ssl), 2049 (nfs), 4045 (lockd), 6000 (x11) Использование параметра allowNetworkingМожно контролировать использование SWF-файлом сетевого подключения путем установки параметра allowNetworking для тегов <object> и <embed> на странице HTML, содержащей SWF-содержимое. Ниже перечислены возможные значения тега allowNetworking:
Параметр allowNetworking предназначен для использования в основном в тех случаях, когда SWF-файл и содержащая его HTML-страница находятся в разных доменах. Значения "internal" и "none" не рекомендуется использовать, когда загружаемый SWF-файл находится в том же домене, что и содержащие его HTML-страницы, так как нельзя гарантировать, что он будет всегда загружаться на только на предназначенную для него HTML-страницу. Недоверенные стороны могут загружать SWF-файл с вашего домена без содержащей его HTML-страницы, и в этом случае ограничение allowNetworking будет работать не так, как задумывалось. Вызов запрещенного API-интерфейса выдает исключение SecurityError. Добавьте параметр allowNetworking и присвойте ему значение в тегах <object> и <embed> на HTML-странице, содержащей ссылку на SWF-файл, как показано в следующем примере. <object classic="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" Code base="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,124,0" width="600" height="400" ID="test" align="middle"> <param name="allowNetworking" value="none" /> <param name="movie" value="test.swf" /> <param name="bgcolor" value="#333333" /> <embed src="test.swf" allowNetworking="none" bgcolor="#333333" width="600" height="400" name="test" align="middle" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" /> </object> HTML-страница может также выполнить сценарий для создания тегов внедрения SWF. Такой сценарий нужно изменить, задав нужные значения для свойства allowNetworking. HTML-страницы, созданные в Adobe Flash Professional и Adobe Flash Builder, используют функцию AC_FL_RunContent() для встраивания ссылок на SWF-файлы. Добавьте настройки параметра allowNetworking в сценарий, как показано ниже. AC_FL_RunContent( ... "allowNetworking", "none", ...) Следующие API-интерфейсы запрещены, когда параметр allowNetworking имеет значение "internal": navigateToURL(), fscommand(), ExternalInterface.call() А когда параметр allowNetworking имеет значение "none", помимо перечисленных выше API-интерфейсов также запрещаются следующие: sendToURL(), FileReference.download(), FileReference.upload(), Loader.load(), LocalConnection.connect(), LocalConnection.send(), NetConnection.connect(), NetStream.play(), Security.loadPolicyFile(), SharedObject.getLocal(), SharedObject.getRemote(), Socket.connect(), Sound.load(), URLLoader.load(), URLStream.load(), XMLSocket.connect() Даже если выбранное значение параметра allowNetworking позволяет SWF-файлу использовать API-интерфейс сетевого подключения, могут существовать другие ограничения, связанные с изолированными программными средами (см. раздел Изолированные программные среды). Когда параметр allowNetworking имеет значение "none", нельзя ссылаться на внешнее мультимедийное содержимое в теге <img> свойства htmlText объекта TextField (иначе выдается исключение SecurityError). Когда параметр allowNetworking имеет значение "none", символ из импортированной общей библиотеки, добавленной в инструмент Flash Professional (не в ActionScript), блокируется во время выполнения. |
|