Begränsa nätverks-API:erFlash Player 9 och senare, Adobe AIR 1.0 och senare Nätverks-API:er kan begränsas på två sätt. Skadlig aktivitet förhindras genom att åtkomsten till portar som brukar reserveras blockeras. Du kan inte åsidosätta dessa spärrar i koden. Om du vill styra en SWF-fils åtkomst till nätverksfunktioner med hänsyn till andra portar använder du inställningen allowNetworking. Blockerade portarFlash Player och Adobe AIR (och även webbläsare) har bara HTTP-åtkomst via vissa portar. HTTP-förfrågningar tillåts inte på vissa standardportar som brukar användas för andra typer av servrar än HTTP-servrar. Dessas portbegränsningar gäller för alla API:er som försöker komma åt en nätverks-URL. Det enda undantaget är API:er som anropar socketar direkt, till exempel Socket.connect() och XMLSocket.connect(), eller anrop till Security.loadPolicyFile() där en socketprincipfil läses in. Socketanslutningar tillåts eller nekas via socketprincipfiler på målservern. I listan nedan visas vilka ActionScript 3.0-API:er som portblockering gäller för: FileReference.download(),FileReference.upload(), Loader.load(), Loader.loadBytes(), navigateToURL(), NetConnection.call(), NetConnection.connect(), NetStream.play(), Security.loadPolicyFile(), sendToURL(), Sound.load(), URLLoader.load(), URLStream.load() Portblockering gäller också för import av delade bibliotek, användningen av taggen <img> i textfält och inläsningen av SWF-filer till en HTML-sida med hjälp av taggarna <object> och <embed>. Portblockering gäller också för användningen av taggen <img> i textfält och inläsningen av SWF-filer till en HTML-sida med hjälp av taggarna <object> och <embed>. I listan nedan visas vilka portar som blockeras: HTTP: 20 ( ftp data), 21 (ftp control) HTTP och 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) Använda parametern allowNetworkingDu kan kontrollera SWF-filens åtkomst till nätverksfunktioner genom inställningar i allowNetworking-parametern i <object>- och <embed>-taggarna på HTML-sidan där SWF-innehållet finns. Tillåtna värden för allowNetworking:
Parametern allowNetworking används i huvudsak när SWF-filen och den omslutande HTML-sidan kommer från olika domäner. Du bör inte använda värdet "internal" eller "none" när SWF-filen läses in från samma domän som de omslutande HTML-sidorna, eftersom du inte kan säkerställa att en SWF-fil alltid läses in med rätt HTML-sida. Otillförlitliga parter kan läsa in en SWF-fil från din domän utan omslutande HTML, och då fungerar inte begränsningen allowNetworking på det sätt som du har tänkt. Om en icke tillgänglig API anropas genereras ett SecurityError-undantag. Lägg till parametern allowNetworking och ange dess värde i taggarna <object> och <embed> på HTML-sidan som innehåller en referens till SWF-filen, enligt följande exempel: <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> En HTML-sida kan också använda ett skript för att generera SWF-inbäddningstaggar. Du måste ändra skriptet så att det lägger in rätt allowNetworking-inställningar. HTML-sidor som genererats av Adobe Flash Professional och Adobe Flash Builder använder funktionen AC_FL_RunContent() för att bädda in referenser till SWF-filer. Lägg till inställningarna för parametern allowNetworking i skriptet enligt följande: AC_FL_RunContent( ... "allowNetworking", "none", ...) Följande API:er är inte tillgängliga när allowNetworking har värdet "internal": navigateToURL(), fscommand(), ExternalInterface.call() Förutom API:erna i ovanstående lista är följande API:er inte heller tillgängliga när allowNetworking har värdet "none": 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() Även om den markerade allowNetworking-inställningen tillåter en SWF-fil att använda ett nätverks-API kan det finnas andra restriktioner på grund av säkerhetssandlådans begränsningar (se Säkerhetssandlådor). Om allowNetworking anges till "none" kan du inte referera till externa medier i en <img>-tagg i egenskapen htmlText i ett TextField-objekt (ett SecurityError-undantag sker). När allowNetworking är inställt på none blockeras en symbol från ett importerat delat bibliotek som lagts till i Flash Professional (inte ActionScript) vid körning. |
|