<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>CODIGO.actionscript &#187; Seguridad</title>
	<atom:link href="http://www.codigoactionscript.org/category/seguridad/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.codigoactionscript.org</link>
	<description>Blog de programación en ActionScript. Tips, tutoriales, ejemplos de Adobe Flash, Flex y AIR</description>
	<lastBuildDate>Thu, 02 Sep 2010 22:59:29 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Cómo encriptar textos en Actionscript 3</title>
		<link>http://www.codigoactionscript.org/como-encriptar-textos-en-actionscript-3/</link>
		<comments>http://www.codigoactionscript.org/como-encriptar-textos-en-actionscript-3/#comments</comments>
		<pubDate>Mon, 07 Dec 2009 15:41:18 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[AS3]]></category>
		<category><![CDATA[Avanzado]]></category>
		<category><![CDATA[Seguridad]]></category>

		<guid isPermaLink="false">http://www.codigoactionscript.org/como-encriptar-textos-en-actionscript-3/</guid>
		<description><![CDATA[<p>En muchas ocasiones tenemos información que debemos guardar y que no queremos que sea accesible directamente por el usuario. Por ejemplo, archivos de configuración de aplicaciones AIR o archivos de texto con variables. La solución es escriptar ese texto para que no sea entendible si el usuario accede a él directamente.</p>
<p>Para encriptar un texto en actionscript 3 lo primero que hacemos es descargarnos esta librería que nos permitirá utilizar varios algoritmos de encriptación.</p>

 http://ascrypt3.riaforge.org/

<p>Ahora nos crearemos una clase que utilice el cifrado en TEA. Este algoritmo requiere de un texto [...]


Related posts:<ol><li><a href='http://www.codigoactionscript.org/busquedas-de-palabras-en-textos-con-expresiones-regulares/' rel='bookmark' title='Permanent Link: Busquedas de palabras en textos con expresiones regulares'>Busquedas de palabras en textos con expresiones regulares</a></li>
<li><a href='http://www.codigoactionscript.org/onreleaseoutside-ondragout-ondragover-en-actionscript-3/' rel='bookmark' title='Permanent Link: onReleaseOutside, onDragOut, onDragOver en ActionScript 3'>onReleaseOutside, onDragOut, onDragOver en ActionScript 3</a></li>
<li><a href='http://www.codigoactionscript.org/legibilidad-de-los-textos/' rel='bookmark' title='Permanent Link: Legibilidad de los textos'>Legibilidad de los textos</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>En muchas ocasiones tenemos información que debemos guardar y que no queremos que sea accesible directamente por el usuario. Por ejemplo, archivos de configuración de aplicaciones <a href="http://www.cristalab.com/tips/tags/air">AIR</a> o archivos de texto con variables. La solución es escriptar ese texto para que no sea entendible si el usuario accede a él directamente.</p>
<p>Para encriptar un texto en <a href="http://www.cristalab.com/tips/tags/actionscript">actionscript 3</a> lo primero que hacemos es descargarnos esta librería que nos permitirá utilizar varios algoritmos de encriptación.</p>
<ul>
<li> <a href="http://ascrypt3.riaforge.org">http://ascrypt3.riaforge.org/</a></li>
</ul>
<p>Ahora nos crearemos una clase que utilice el cifrado en TEA. Este algoritmo requiere de un texto clave que tendrá que ser el mismo a la hora de encriptar y a la hora de desencriptar.</p>
<div id="codigo">
<div class="syntax_hilite">
<div id="actionscript-7">
<div class="actionscript">package com.<span style="color: #006600;">cristalab</span>.<span style="color: #006600;">utils</span>.<span style="color: #006600;">security</span><br />
<span style="color: #66cc66;">&#123;</span><br />
<span style="color: #0066CC;">import</span> com.<span style="color: #006600;">meychi</span>.<span style="color: #006600;">ascrypt3</span>.<span style="color: #006600;">TEA</span>;<br />
<span style="color: #808080; font-style: italic;">//-------------------------------------------------------------</span><br />
<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">class</span> EncryptUtils<br />
<span style="color: #66cc66;">&#123;</span><br />
internal <span style="color: #0066CC;">static</span> const ENCRYPTION_KEY:<span style="color: #0066CC;">String</span> = <span style="color: #ff0000;">"mi_contraseña_de_encriptado"</span>;<br />
<span style="color: #808080; font-style: italic;">//-------------------------------------------------------------</span><br />
<span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> <span style="color: #000000; font-weight: bold;">function</span> encryptString<span style="color: #66cc66;">&#40;</span>s:<span style="color: #0066CC;">String</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">String</span><br />
<span style="color: #66cc66;">&#123;</span><br />
<span style="color: #000000; font-weight: bold;">var</span> tea:TEA = <span style="color: #000000; font-weight: bold;">new</span> TEA<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;<br />
<span style="color: #000000; font-weight: bold;">var</span> encryptedString:<span style="color: #0066CC;">String</span> = tea.<span style="color: #006600;">encrypt</span><span style="color: #66cc66;">&#40;</span>s, ENCRYPTION_KEY<span style="color: #66cc66;">&#41;</span>;<br />
<span style="color: #b1b100;">return</span> encryptedString;<br />
<span style="color: #66cc66;">&#125;</span><br />
<span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> <span style="color: #000000; font-weight: bold;">function</span> decryptString<span style="color: #66cc66;">&#40;</span>s:<span style="color: #0066CC;">String</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">String</span><br />
<span style="color: #66cc66;">&#123;</span><br />
<span style="color: #000000; font-weight: bold;">var</span> tea:TEA = <span style="color: #000000; font-weight: bold;">new</span> TEA<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;<br />
<span style="color: #000000; font-weight: bold;">var</span> decryptedString:<span style="color: #0066CC;">String</span> = tea.<span style="color: #006600;">decrypt</span><span style="color: #66cc66;">&#40;</span>s, ENCRYPTION_KEY<span style="color: #66cc66;">&#41;</span>;<br />
<span style="color: #b1b100;">return</span> decryptedString;<br />
<span style="color: #66cc66;">&#125;</span><br />
<span style="color: #66cc66;">&#125;</span><br />
<span style="color: #66cc66;">&#125;</span></div>
</div>
</div>
</div>
<p></p>
<p>La utilización de esta clase para encriptar texto sería:</p>
<div id="codigo">
<div class="syntax_hilite">
<div id="actionscript-8">
<div class="actionscript"><span style="color: #0066CC;">import</span> com.<span style="color: #006600;">cristalab</span>.<span style="color: #006600;">utils</span>.<span style="color: #006600;">security</span>;<br />
<span style="color: #000000; font-weight: bold;">var</span> texto:<span style="color: #0066CC;">String</span> = <span style="color: #ff0000;">"Lo que sea"</span>;<br />
<span style="color: #000000; font-weight: bold;">var</span> texto_encriptado:<span style="color: #0066CC;">String</span> = EncryptUtils.<span style="color: #006600;">encryptString</span><span style="color: #66cc66;">&#40;</span>texto<span style="color: #66cc66;">&#41;</span>;</div>
</div>
</div>
</div>
<p></p>
<p>Y para desencriptar:</p>
<div id="codigo">
<div class="syntax_hilite">
<div id="actionscript-9">
<div class="actionscript"><span style="color: #000000; font-weight: bold;">var</span> texto:<span style="color: #0066CC;">String</span> = EncryptUtils.<span style="color: #006600;">decryptString</span><span style="color: #66cc66;">&#40;</span>texto_encriptado<span style="color: #66cc66;">&#41;</span>;</div>
</div>
</div>
</div>
<p></p>
<p>En esta clase de ejemplo la palabra clave para codificar esta añadida dentro de la misma clase, pero podríamos haber creado la clase haciendo que ese String le viniese como parámetro y así utilizar diferentes keys para diferentes proyectos. Lo que ha de estar claro es que para desencriptar un texto deberemos utilizar el mismo key que utilizamos para encriptarlo.</p>

<div class="sociable">
<div class="sociable_tagline">
<strong>Comparte:</strong>
</div>
<ul>
	<li class="sociablefirst"><a rel="nofollow"  target="_blank" href="http://meneame.net/submit.php?url=http%3A%2F%2Fwww.codigoactionscript.org%2Fcomo-encriptar-textos-en-actionscript-3%2F" title="Meneame"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/meneame.png" title="Meneame" alt="Meneame" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://twitter.com/home?status=C%C3%B3mo%20encriptar%20textos%20en%20Actionscript%203%20-%20http%3A%2F%2Fwww.codigoactionscript.org%2Fcomo-encriptar-textos-en-actionscript-3%2F" title="Twitter"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.codigoactionscript.org%2Fcomo-encriptar-textos-en-actionscript-3%2F&amp;t=C%C3%B3mo%20encriptar%20textos%20en%20Actionscript%203" title="Facebook"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fwww.codigoactionscript.org%2Fcomo-encriptar-textos-en-actionscript-3%2F&amp;title=C%C3%B3mo%20encriptar%20textos%20en%20Actionscript%203&amp;source=CODIGO.actionscript+Blog+de+programaci%C3%B3n+en+ActionScript.+Tips%2C+tutoriales%2C+ejemplos+de+Adobe+Flash%2C+Flex+y+AIR&amp;summary=En%20muchas%20ocasiones%20tenemos%20informaci%C3%B3n%20que%20debemos%20guardar%20y%20que%20no%20queremos%20que%20sea%20accesible%20directamente%20por%20el%20usuario.%20Por%20ejemplo%2C%20archivos%20de%20configuraci%C3%B3n%20de%20aplicaciones%20%20o%20archivos%20de%20texto%20con%20variables.%20La%20soluci%C3%B3n%20es%20escriptar%20ese%20te" title="LinkedIn"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/linkedin.png" title="LinkedIn" alt="LinkedIn" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fwww.codigoactionscript.org%2Fcomo-encriptar-textos-en-actionscript-3%2F&amp;title=C%C3%B3mo%20encriptar%20textos%20en%20Actionscript%203&amp;annotation=En%20muchas%20ocasiones%20tenemos%20informaci%C3%B3n%20que%20debemos%20guardar%20y%20que%20no%20queremos%20que%20sea%20accesible%20directamente%20por%20el%20usuario.%20Por%20ejemplo%2C%20archivos%20de%20configuraci%C3%B3n%20de%20aplicaciones%20%20o%20archivos%20de%20texto%20con%20variables.%20La%20soluci%C3%B3n%20es%20escriptar%20ese%20te" title="Google Bookmarks"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fwww.codigoactionscript.org%2Fcomo-encriptar-textos-en-actionscript-3%2F&amp;title=C%C3%B3mo%20encriptar%20textos%20en%20Actionscript%203&amp;notes=En%20muchas%20ocasiones%20tenemos%20informaci%C3%B3n%20que%20debemos%20guardar%20y%20que%20no%20queremos%20que%20sea%20accesible%20directamente%20por%20el%20usuario.%20Por%20ejemplo%2C%20archivos%20de%20configuraci%C3%B3n%20de%20aplicaciones%20%20o%20archivos%20de%20texto%20con%20variables.%20La%20soluci%C3%B3n%20es%20escriptar%20ese%20te" title="del.icio.us"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://technorati.com/faves?add=http%3A%2F%2Fwww.codigoactionscript.org%2Fcomo-encriptar-textos-en-actionscript-3%2F" title="Technorati"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/technorati.png" title="Technorati" alt="Technorati" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="mailto:?subject=C%C3%B3mo%20encriptar%20textos%20en%20Actionscript%203&amp;body=http%3A%2F%2Fwww.codigoactionscript.org%2Fcomo-encriptar-textos-en-actionscript-3%2F" title="email"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/email_link.png" title="email" alt="email" class="sociable-hovers" /></a></li>
	<li class="sociablelast"><a rel="nofollow"  target="_blank" href="http://www.printfriendly.com/print?url=http%3A%2F%2Fwww.codigoactionscript.org%2Fcomo-encriptar-textos-en-actionscript-3%2F&amp;partner=sociable" title="Print"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/printfriendly.png" title="Print" alt="Print" class="sociable-hovers" /></a></li>
</ul>
</div>


<p>Related posts:<ol><li><a href='http://www.codigoactionscript.org/busquedas-de-palabras-en-textos-con-expresiones-regulares/' rel='bookmark' title='Permanent Link: Busquedas de palabras en textos con expresiones regulares'>Busquedas de palabras en textos con expresiones regulares</a></li>
<li><a href='http://www.codigoactionscript.org/onreleaseoutside-ondragout-ondragover-en-actionscript-3/' rel='bookmark' title='Permanent Link: onReleaseOutside, onDragOut, onDragOver en ActionScript 3'>onReleaseOutside, onDragOut, onDragOver en ActionScript 3</a></li>
<li><a href='http://www.codigoactionscript.org/legibilidad-de-los-textos/' rel='bookmark' title='Permanent Link: Legibilidad de los textos'>Legibilidad de los textos</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.codigoactionscript.org/como-encriptar-textos-en-actionscript-3/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Mostrar una alerta antes del cierre de una aplicación AIR</title>
		<link>http://www.codigoactionscript.org/mostrar-una-alerta-antes-del-cierre-de-una-aplicacion-air/</link>
		<comments>http://www.codigoactionscript.org/mostrar-una-alerta-antes-del-cierre-de-una-aplicacion-air/#comments</comments>
		<pubDate>Tue, 27 Jan 2009 01:59:31 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[AIR]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[Básico]]></category>
		<category><![CDATA[Seguridad]]></category>
		<category><![CDATA[alert]]></category>
		<category><![CDATA[componente]]></category>

		<guid isPermaLink="false">http://www.codigoactionscript.org/?p=322</guid>
		<description><![CDATA[<p>En este ejemplo mostraré como crear una ventana de alerta cuando le demos al botón de cerrar en una aplicación AIR, teniendo que validar el cierre evitando que se cierre directamente. De esta manera podemos controlar que el usuario cierre la aplicación si haber realizado una operación necesaria, por ejemplo guardar los cambios realizados en el caso de tratarse de una a aplicación que edite documentos.</p>

<p>Lo primero que deberemos hacer es colocar la función a realizar cuando se detecte el evento de cierre de la aplicación (osea, cuando el usuario [...]


Related posts:<ol><li><a href='http://www.codigoactionscript.org/como-personalizar-el-icono-del-panel-de-alerta-de-flex/' rel='bookmark' title='Permanent Link: Cómo personalizar el icono del panel de Alerta de Flex'>Cómo personalizar el icono del panel de Alerta de Flex</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>En este ejemplo mostraré como crear una ventana de alerta cuando le demos al botón de cerrar en una aplicación AIR, teniendo que validar el cierre evitando que se cierre directamente. De esta manera podemos controlar que el usuario cierre la aplicación si haber realizado una operación necesaria, por ejemplo guardar los cambios realizados en el caso de tratarse de una a aplicación que edite documentos.</p>
<div align="center"><img src="http://www.cristalab.com/images/tips/flex/cerrarAlert/cap_005.png" alt="" /></div>
<p>Lo primero que deberemos hacer es colocar la función a realizar cuando se detecte el evento de cierre de la aplicación (osea, cuando el usuario cierra la aplicación).</p>
<div id="codigo">
<div class="syntax_hilite">
<div id="actionscript-22">
<div class="actionscript">&lt;mx:WindowedApplication xmlns:mx=<span style="color: #ff0000;">"http://www.adobe.com/2006/mxml"</span> layout=<span style="color: #ff0000;">"absolute"</span> closing=<span style="color: #ff0000;">"cerrarApp(event)"</span>&gt;</div>
</div>
</div>
</div>
<p></p>
<p>Ahora escribiremos la función. El punto importante aquí es como evitar el cierre de la aplicación, ya que el usuario realmente a clicado en el botón de cerrar. Esto lo conseguimos con el método <strong>preventDefault()</strong> de la clase Event. Con este método conseguimos que el evento no ejecute las funciones por defecto y por lo tanto no se cierra la aplicación. Lo que haremos en su lugar es abrir una ventana de <strong>Alert</strong>.</p>
<div id="codigo">
<div class="syntax_hilite">
<div id="actionscript-23">
<div class="actionscript"><span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> cerrarApp<span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">e</span>:Event<span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span><br />
<span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #0066CC;">e</span>.<span style="color: #006600;">preventDefault</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; Alert.<span style="color: #006600;">yesLabel</span> = <span style="color: #ff0000;">"Si"</span>;<br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; Alert.<span style="color: #0066CC;">show</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">"¿Realmente quiere salir?"</span>,<span style="color: #ff0000;">"Salir aplicación"</span>, Alert.<span style="color: #006600;">YES</span> | Alert.<span style="color: #006600;">NO</span>, <span style="color: #000000; font-weight: bold;">null</span>, cerrar, <span style="color: #000000; font-weight: bold;">null</span>, <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#41;</span>;<br />
<span style="color: #66cc66;">&#125;</span></div>
</div>
</div>
</div>
<p></p>
<div align="center"><img src="http://www.cristalab.com/images/tips/flex/cerrarAlert/cap_007.png" alt="" /></div>
<p>Con <strong>yesLabel  </strong>decimos que aparezca el texto "Si" en el botón de validar en lugar de "Yes". Y con el <strong>2</strong> al final de los parámetros decimos que el botón seleccionado por defecto sea el segundo, osea el "No".</p>
<p>También le estamos indicando que al clicar sobre cualquiera de los botones se ejecute la función "<strong>cerrar</strong>" que es la siguiente:</p>
<div id="codigo">
<div class="syntax_hilite">
<div id="actionscript-24">
<div class="actionscript"><span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> cerrar<span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">e</span>:CloseEvent<span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span><br />
<span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">e</span>.<span style="color: #006600;">detail</span> == Alert.<span style="color: #006600;">YES</span><span style="color: #66cc66;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">this</span>.<span style="color: #006600;">nativeApplication</span>.<span style="color: #006600;">exit</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span><br />
<span style="color: #66cc66;">&#125;</span></div>
</div>
</div>
</div>
<p></p>
<p>Donde le estamos indicando que si el botón seleccionado es el "Si" entonces cierre la aplicación. En el caso de seleccionar el "No" no se ejecuta nada y por lo tanto la aplicación sigue abierta.</p>
<p>[h3]Segundo ejemplo[/h3]</p>
<p>El código anterior se ejecutaría siempre que le demos al icono de cerrar aplicación. Pero lo interesante es poder controlar cuando queremos mostrar esa advertencia. </p>
<p>Por ejemplo en el caso de tener una aplicación que sea un editor de texto. Si le damos al botón de cerrar la aplicación teniendo cambios sin guardar mostraremos el Alert, pero en el caso de haber guardado los cambios previamente cerraremos directamente la aplicación.</p>
<p>Primero crearemos una variable booleana que controlará si la aplicación se cierra automáticamente o requiere mostrar la advertencia.</p>
<div id="codigo">
<div class="syntax_hilite">
<div id="actionscript-25">
<div class="actionscript"><span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">var</span> cierre:<span style="color: #0066CC;">Boolean</span> = <span style="color: #000000; font-weight: bold;">true</span>;</div>
</div>
</div>
</div>
<p></p>
<p>En la función que se ejecuta al cerrar la aplicación colocaremos un condicional que detecte el estado de esa variable. </p>
<div id="codigo">
<div class="syntax_hilite">
<div id="actionscript-26">
<div class="actionscript"><span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> cerrarApp<span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">e</span>:Event<span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span><br />
<span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #0066CC;">e</span>.<span style="color: #006600;">preventDefault</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; <span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span>cierre == <span style="color: #000000; font-weight: bold;">false</span><span style="color: #66cc66;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; Alert.<span style="color: #006600;">yesLabel</span> = <span style="color: #ff0000;">"Si"</span>;&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; Alert.<span style="color: #0066CC;">show</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">"¿Desea guardar los cambios antes de salir?"</span>,<span style="color: #ff0000;">"Salir aplicación"</span>, Alert.<span style="color: #006600;">YES</span> | Alert.<span style="color: #006600;">NO</span> | Alert.<span style="color: #006600;">CANCEL</span>, <span style="color: #000000; font-weight: bold;">null</span>, cerrar, <span style="color: #000000; font-weight: bold;">null</span>, <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span><br />
&nbsp; &nbsp; <span style="color: #b1b100;">else</span><br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">this</span>.<span style="color: #006600;">nativeApplication</span>.<span style="color: #006600;">exit</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span><br />
<span style="color: #66cc66;">&#125;</span></div>
</div>
</div>
</div>
<p></p>
<div align="center"><img src="http://www.cristalab.com/images/tips/flex/cerrarAlert/cap_009.png" alt="" /></div>
<p>Lógicamente esa función "<strong>cierre</strong>" la deberemos controlar con el resto de funciones de la aplicación. Es decir, todas las funciones que realicen <strong>cualquier cambio que deba ser guardado</strong> deberán colocar esa variable a "<strong>false</strong>", y la función que realice el <strong>guardado de datos</strong> deberá colocar la variable a "<strong>true</strong>".</p>
<p>La función de cierre quedaría asi:</p>
<div id="codigo">
<div class="syntax_hilite">
<div id="actionscript-27">
<div class="actionscript"><span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> cerrar<span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">e</span>:CloseEvent<span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span><br />
<span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">e</span>.<span style="color: #006600;">detail</span> == Alert.<span style="color: #006600;">YES</span><span style="color: #66cc66;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; guardarDatos<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">this</span>.<span style="color: #006600;">nativeApplication</span>.<span style="color: #006600;">exit</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span><br />
&nbsp; &nbsp; <span style="color: #b1b100;">else</span> <span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">e</span>.<span style="color: #006600;">detail</span> == Alert.<span style="color: #006600;">NO</span><span style="color: #66cc66;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">this</span>.<span style="color: #006600;">nativeApplication</span>.<span style="color: #006600;">exit</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span><br />
<span style="color: #66cc66;">&#125;</span></div>
</div>
</div>
</div>
<p></p>
<p>De manera que si clicamos "Si" ejecutaríamos la función que nos guarda los datos y cerraríamos después la aplicación, si clisásemos "No" cerraríamos directamente y si clisásemos "Cancel" entonces no se ejecutaría nada y no cerraríamos la aplicación.</p>

<div class="sociable">
<div class="sociable_tagline">
<strong>Comparte:</strong>
</div>
<ul>
	<li class="sociablefirst"><a rel="nofollow"  target="_blank" href="http://meneame.net/submit.php?url=http%3A%2F%2Fwww.codigoactionscript.org%2Fmostrar-una-alerta-antes-del-cierre-de-una-aplicacion-air%2F" title="Meneame"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/meneame.png" title="Meneame" alt="Meneame" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://twitter.com/home?status=Mostrar%20una%20alerta%20antes%20del%20cierre%20de%20una%20aplicaci%C3%B3n%20AIR%20-%20http%3A%2F%2Fwww.codigoactionscript.org%2Fmostrar-una-alerta-antes-del-cierre-de-una-aplicacion-air%2F" title="Twitter"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.codigoactionscript.org%2Fmostrar-una-alerta-antes-del-cierre-de-una-aplicacion-air%2F&amp;t=Mostrar%20una%20alerta%20antes%20del%20cierre%20de%20una%20aplicaci%C3%B3n%20AIR" title="Facebook"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fwww.codigoactionscript.org%2Fmostrar-una-alerta-antes-del-cierre-de-una-aplicacion-air%2F&amp;title=Mostrar%20una%20alerta%20antes%20del%20cierre%20de%20una%20aplicaci%C3%B3n%20AIR&amp;source=CODIGO.actionscript+Blog+de+programaci%C3%B3n+en+ActionScript.+Tips%2C+tutoriales%2C+ejemplos+de+Adobe+Flash%2C+Flex+y+AIR&amp;summary=En%20este%20ejemplo%20mostrar%C3%A9%20como%20crear%20una%20ventana%20de%20alerta%20cuando%20le%20demos%20al%20bot%C3%B3n%20de%20cerrar%20en%20una%20aplicaci%C3%B3n%20AIR%2C%20teniendo%20que%20validar%20el%20cierre%20evitando%20que%20se%20cierre%20directamente.%20De%20esta%20manera%20podemos%20controlar%20que%20el%20usuario%20cierre%20la%20aplic" title="LinkedIn"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/linkedin.png" title="LinkedIn" alt="LinkedIn" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fwww.codigoactionscript.org%2Fmostrar-una-alerta-antes-del-cierre-de-una-aplicacion-air%2F&amp;title=Mostrar%20una%20alerta%20antes%20del%20cierre%20de%20una%20aplicaci%C3%B3n%20AIR&amp;annotation=En%20este%20ejemplo%20mostrar%C3%A9%20como%20crear%20una%20ventana%20de%20alerta%20cuando%20le%20demos%20al%20bot%C3%B3n%20de%20cerrar%20en%20una%20aplicaci%C3%B3n%20AIR%2C%20teniendo%20que%20validar%20el%20cierre%20evitando%20que%20se%20cierre%20directamente.%20De%20esta%20manera%20podemos%20controlar%20que%20el%20usuario%20cierre%20la%20aplic" title="Google Bookmarks"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fwww.codigoactionscript.org%2Fmostrar-una-alerta-antes-del-cierre-de-una-aplicacion-air%2F&amp;title=Mostrar%20una%20alerta%20antes%20del%20cierre%20de%20una%20aplicaci%C3%B3n%20AIR&amp;notes=En%20este%20ejemplo%20mostrar%C3%A9%20como%20crear%20una%20ventana%20de%20alerta%20cuando%20le%20demos%20al%20bot%C3%B3n%20de%20cerrar%20en%20una%20aplicaci%C3%B3n%20AIR%2C%20teniendo%20que%20validar%20el%20cierre%20evitando%20que%20se%20cierre%20directamente.%20De%20esta%20manera%20podemos%20controlar%20que%20el%20usuario%20cierre%20la%20aplic" title="del.icio.us"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://technorati.com/faves?add=http%3A%2F%2Fwww.codigoactionscript.org%2Fmostrar-una-alerta-antes-del-cierre-de-una-aplicacion-air%2F" title="Technorati"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/technorati.png" title="Technorati" alt="Technorati" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="mailto:?subject=Mostrar%20una%20alerta%20antes%20del%20cierre%20de%20una%20aplicaci%C3%B3n%20AIR&amp;body=http%3A%2F%2Fwww.codigoactionscript.org%2Fmostrar-una-alerta-antes-del-cierre-de-una-aplicacion-air%2F" title="email"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/email_link.png" title="email" alt="email" class="sociable-hovers" /></a></li>
	<li class="sociablelast"><a rel="nofollow"  target="_blank" href="http://www.printfriendly.com/print?url=http%3A%2F%2Fwww.codigoactionscript.org%2Fmostrar-una-alerta-antes-del-cierre-de-una-aplicacion-air%2F&amp;partner=sociable" title="Print"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/printfriendly.png" title="Print" alt="Print" class="sociable-hovers" /></a></li>
</ul>
</div>


<p>Related posts:<ol><li><a href='http://www.codigoactionscript.org/como-personalizar-el-icono-del-panel-de-alerta-de-flex/' rel='bookmark' title='Permanent Link: Cómo personalizar el icono del panel de Alerta de Flex'>Cómo personalizar el icono del panel de Alerta de Flex</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.codigoactionscript.org/mostrar-una-alerta-antes-del-cierre-de-una-aplicacion-air/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Impedir la visualización de archivos SWF individualmente</title>
		<link>http://www.codigoactionscript.org/impedir-la-visualizacion-de-archivos-swf-individualmente/</link>
		<comments>http://www.codigoactionscript.org/impedir-la-visualizacion-de-archivos-swf-individualmente/#comments</comments>
		<pubDate>Mon, 05 Mar 2007 17:33:10 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Básico]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Seguridad]]></category>
		<category><![CDATA[Trucos]]></category>

		<guid isPermaLink="false">http://www.codigo.as/blog/?p=59</guid>
		<description><![CDATA[<p>Este es un truco MUY sencillo para impedir que un usuario pueda visualizar nuestros archivos SWF de forma individual. Por ejemplo: Tenemos un CD-ROM con una pelicula principal formada a partir de varios archivos SWF externos situados dentro de una carpeta, y nuestra intención es impedir que alguien pueda abrir esta carpeta y visualizar estos archivos externos uno a uno (ya que estos SWF son pequeños trozos de un conjunto y su visualización individual no sería correcta)</p>
<p>El truco consiste en crear un MovieClip que ocupe toda la extensión de la [...]


Related posts:<ol><li><a href='http://www.codigoactionscript.org/proteger-los-archivos-swf/' rel='bookmark' title='Permanent Link: Proteger los archivos externos'>Proteger los archivos externos</a></li>
<li><a href='http://www.codigoactionscript.org/listar-archivos-de-un-directorio-web-con-php-y-xml/' rel='bookmark' title='Permanent Link: Listar archivos de un directorio web con PHP y XML'>Listar archivos de un directorio web con PHP y XML</a></li>
<li><a href='http://www.codigoactionscript.org/abrir-pelicula-en-un-frame-concreto/' rel='bookmark' title='Permanent Link: Abrir pelicula en un frame concreto'>Abrir pelicula en un frame concreto</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Este es un truco MUY sencillo para impedir que un usuario pueda visualizar nuestros archivos SWF de forma individual. <strong>Por ejemplo</strong>: Tenemos un CD-ROM con una pelicula principal formada a partir de varios archivos SWF externos situados dentro de una carpeta, y nuestra intención es impedir que alguien pueda abrir esta carpeta y visualizar estos archivos externos uno a uno (ya que estos SWF son pequeños trozos de un conjunto y su visualización individual no sería correcta)</p>
<p>El truco consiste en crear un MovieClip que ocupe toda la extensión de la pelicula (por ejemplo, un rectángulo de color negro) que esté situado en primer plano, y por lo tanto oculte el contenido real del SWF.</p>
<p>Este MovieClip tambien podría contener un texto de aviso: "<em>Este archivo SWF es un contenido externo de la aplicación 'aplicacion.exe' y no debe visualizarse individualmente. Por favor navege por la pelicula principal para visualizarlo.</em>".</p>
<p>De esta manera si el usuario abre el SWF visualizará este mensaje de aviso. En cambio desde nuestra pelicula principal haremos que al cargar el archivo externo, a través de código, este MovieClip sea invisible con lo que se visualizará el contenido sin problema.</p>
<p>El código para cargar el archivo externo y ocultar el MovieClip de aviso sería este:</p>
<div id=codigo>
<div id="codigo">
<div class="syntax_hilite">
<div id="actionscript-30">
<div class="actionscript"><span style="color: #000000; font-weight: bold;">var</span> contenedor:<span style="color: #0066CC;">MovieClip</span> = <span style="color: #0066CC;">this</span>.<span style="color: #0066CC;">createEmptyMovieClip</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">"contenedor"</span>, <span style="color: #0066CC;">this</span>.<span style="color: #0066CC;">getNextHighestDepth</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;<br />
<span style="color: #000000; font-weight: bold;">var</span> precarga:<span style="color: #0066CC;">MovieClipLoader</span> = <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #0066CC;">MovieClipLoader</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;<br />
<span style="color: #000000; font-weight: bold;">var</span> cargador:<span style="color: #0066CC;">Object</span> = <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #0066CC;">Object</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;<br />
cargador.<span style="color: #0066CC;">onLoadInit</span> = <span style="color: #000000; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span>mc:<span style="color: #0066CC;">MovieClip</span><span style="color: #66cc66;">&#41;</span><br />
<span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp;mc.<span style="color: #006600;">ocultador_mc</span>.<span style="color: #0066CC;">_visible</span> = <span style="color: #000000; font-weight: bold;">false</span>;<br />
<span style="color: #66cc66;">&#125;</span>;<br />
precarga.<span style="color: #0066CC;">addListener</span><span style="color: #66cc66;">&#40;</span>cargador<span style="color: #66cc66;">&#41;</span>;<br />
<span style="color: #808080; font-style: italic;">//-----------------------------</span><br />
precarga.<span style="color: #0066CC;">loadClip</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">"archivo2.swf"</span>, contenedor<span style="color: #66cc66;">&#41;</span>;</div>
</div>
</div>
</div>
<p></div>
<p>(el MovieClip de aviso del archivo externo tiene que llevar el nombre de instancia <strong>ocultador_mc</strong>.)</p>
<p>Lógicamente este <strong>no</strong> es un truco de seguridad para proteger el contenido de nuestros archivos SWF. Cualquiera puede decompilar el archivo y saltarse esta protección. Este truco únicamente pretende avisar al usuario de que no debe visualizar el archivo externo individualmente sino que lo ha de visualizar navegando desde la pelicula principal.</p>

<div class="sociable">
<div class="sociable_tagline">
<strong>Comparte:</strong>
</div>
<ul>
	<li class="sociablefirst"><a rel="nofollow"  target="_blank" href="http://meneame.net/submit.php?url=http%3A%2F%2Fwww.codigoactionscript.org%2Fimpedir-la-visualizacion-de-archivos-swf-individualmente%2F" title="Meneame"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/meneame.png" title="Meneame" alt="Meneame" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://twitter.com/home?status=Impedir%20la%20visualizaci%C3%B3n%20de%20archivos%20SWF%20individualmente%20-%20http%3A%2F%2Fwww.codigoactionscript.org%2Fimpedir-la-visualizacion-de-archivos-swf-individualmente%2F" title="Twitter"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.codigoactionscript.org%2Fimpedir-la-visualizacion-de-archivos-swf-individualmente%2F&amp;t=Impedir%20la%20visualizaci%C3%B3n%20de%20archivos%20SWF%20individualmente" title="Facebook"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fwww.codigoactionscript.org%2Fimpedir-la-visualizacion-de-archivos-swf-individualmente%2F&amp;title=Impedir%20la%20visualizaci%C3%B3n%20de%20archivos%20SWF%20individualmente&amp;source=CODIGO.actionscript+Blog+de+programaci%C3%B3n+en+ActionScript.+Tips%2C+tutoriales%2C+ejemplos+de+Adobe+Flash%2C+Flex+y+AIR&amp;summary=Este%20es%20un%20truco%20MUY%20sencillo%20para%20impedir%20que%20un%20usuario%20pueda%20visualizar%20nuestros%20archivos%20SWF%20de%20forma%20individual.%20Por%20ejemplo%3A%20Tenemos%20un%20CD-ROM%20con%20una%20pelicula%20principal%20formada%20a%20partir%20de%20varios%20archivos%20SWF%20externos%20situados%20dentro%20de%20una%20ca" title="LinkedIn"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/linkedin.png" title="LinkedIn" alt="LinkedIn" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fwww.codigoactionscript.org%2Fimpedir-la-visualizacion-de-archivos-swf-individualmente%2F&amp;title=Impedir%20la%20visualizaci%C3%B3n%20de%20archivos%20SWF%20individualmente&amp;annotation=Este%20es%20un%20truco%20MUY%20sencillo%20para%20impedir%20que%20un%20usuario%20pueda%20visualizar%20nuestros%20archivos%20SWF%20de%20forma%20individual.%20Por%20ejemplo%3A%20Tenemos%20un%20CD-ROM%20con%20una%20pelicula%20principal%20formada%20a%20partir%20de%20varios%20archivos%20SWF%20externos%20situados%20dentro%20de%20una%20ca" title="Google Bookmarks"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fwww.codigoactionscript.org%2Fimpedir-la-visualizacion-de-archivos-swf-individualmente%2F&amp;title=Impedir%20la%20visualizaci%C3%B3n%20de%20archivos%20SWF%20individualmente&amp;notes=Este%20es%20un%20truco%20MUY%20sencillo%20para%20impedir%20que%20un%20usuario%20pueda%20visualizar%20nuestros%20archivos%20SWF%20de%20forma%20individual.%20Por%20ejemplo%3A%20Tenemos%20un%20CD-ROM%20con%20una%20pelicula%20principal%20formada%20a%20partir%20de%20varios%20archivos%20SWF%20externos%20situados%20dentro%20de%20una%20ca" title="del.icio.us"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://technorati.com/faves?add=http%3A%2F%2Fwww.codigoactionscript.org%2Fimpedir-la-visualizacion-de-archivos-swf-individualmente%2F" title="Technorati"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/technorati.png" title="Technorati" alt="Technorati" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="mailto:?subject=Impedir%20la%20visualizaci%C3%B3n%20de%20archivos%20SWF%20individualmente&amp;body=http%3A%2F%2Fwww.codigoactionscript.org%2Fimpedir-la-visualizacion-de-archivos-swf-individualmente%2F" title="email"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/email_link.png" title="email" alt="email" class="sociable-hovers" /></a></li>
	<li class="sociablelast"><a rel="nofollow"  target="_blank" href="http://www.printfriendly.com/print?url=http%3A%2F%2Fwww.codigoactionscript.org%2Fimpedir-la-visualizacion-de-archivos-swf-individualmente%2F&amp;partner=sociable" title="Print"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/printfriendly.png" title="Print" alt="Print" class="sociable-hovers" /></a></li>
</ul>
</div>


<p>Related posts:<ol><li><a href='http://www.codigoactionscript.org/proteger-los-archivos-swf/' rel='bookmark' title='Permanent Link: Proteger los archivos externos'>Proteger los archivos externos</a></li>
<li><a href='http://www.codigoactionscript.org/listar-archivos-de-un-directorio-web-con-php-y-xml/' rel='bookmark' title='Permanent Link: Listar archivos de un directorio web con PHP y XML'>Listar archivos de un directorio web con PHP y XML</a></li>
<li><a href='http://www.codigoactionscript.org/abrir-pelicula-en-un-frame-concreto/' rel='bookmark' title='Permanent Link: Abrir pelicula en un frame concreto'>Abrir pelicula en un frame concreto</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.codigoactionscript.org/impedir-la-visualizacion-de-archivos-swf-individualmente/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Proteger los archivos externos</title>
		<link>http://www.codigoactionscript.org/proteger-los-archivos-swf/</link>
		<comments>http://www.codigoactionscript.org/proteger-los-archivos-swf/#comments</comments>
		<pubDate>Sun, 05 Mar 2006 19:24:39 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Seguridad]]></category>
		<category><![CDATA[Trucos]]></category>

		<guid isPermaLink="false">http://www.codigoactionscript.org/?p=17</guid>
		<description><![CDATA[<p>Un problema muy común para los desarrolladores flash es el hecho de evitar que los lamers se descargen sus archivos swf y los decompilen para copiar el codigo, las animaciones, los mp3, o cualquier cosa que puedan aprovecharâ€¦</p>
<p>Un truco muy fácil es cambiar la extensión a los archivos externos.</p>
<p>Flash para bien o para mal ignora las extensiones de los archivos, ya que supone que le estamos indicando un tipo de archivo correcto (sea un swf, un flv, un mp3â€¦)</p>
<p>Por lo que si tenemos un swf externo en el que tenemos [...]


Related posts:<ol><li><a href='http://www.codigoactionscript.org/impedir-la-visualizacion-de-archivos-swf-individualmente/' rel='bookmark' title='Permanent Link: Impedir la visualización de archivos SWF individualmente'>Impedir la visualización de archivos SWF individualmente</a></li>
<li><a href='http://www.codigoactionscript.org/listar-archivos-de-un-directorio-web-con-php-y-xml/' rel='bookmark' title='Permanent Link: Listar archivos de un directorio web con PHP y XML'>Listar archivos de un directorio web con PHP y XML</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Un problema muy común para los desarrolladores flash es el hecho de evitar que los <a href="http://es.wikipedia.org/wiki/Lammer">lamers</a> se descargen sus archivos swf y los decompilen para copiar el codigo, las animaciones, los mp3, o cualquier cosa que puedan aprovecharâ€¦</p>
<p>Un truco muy fácil es cambiar la extensión a los archivos externos.</p>
<p>Flash para bien o para mal ignora las extensiones de los archivos, ya que supone que le estamos indicando un tipo de archivo correcto (sea un swf, un flv, un mp3â€¦)</p>
<p>Por lo que si tenemos un swf externo en el que tenemos algún tipo de código que queremos evitar que nos copien, cargado de esta manera:</p>
<div id=codigo>
<div id="codigo">
<div class="syntax_hilite">
<div id="actionscript-35">
<div class="actionscript"><span style="color: #0066CC;">loadMovie</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">"peli.swf"</span>, <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span>;</div>
</div>
</div>
</div>
<p></div>
<p>Renombreamos el swf, le ponemos una extensión diferente, y lo cargamos de la misma manera. </p>
<div id=codigo>
<div id="codigo">
<div class="syntax_hilite">
<div id="actionscript-36">
<div class="actionscript"><span style="color: #0066CC;">loadMovie</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">"tabla_1_1.gif"</span>, <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span>;</div>
</div>
</div>
</div>
<p></div>
<p>Flash cargará correctamente el swf.</p>
<p>De esta manera cuando el lamer busque en la carpeta del caché del navegador buscando <strong>archivos swf </strong>o <strong>mp3</strong>â€¦ no los encontrará, ya que solo encontrará <strong>archivos gif</strong> que se confundiran con el resto de ficheros de caché.</p>
<p>Podemos colocar gran parte del código en la pelicula principal y cargar mediante este sistema unas cuantas funciones o variables que sean imprescindibles para el correcto funcionamiento de la pelicula. Esto seguro que desespera a más de uno antes de descubrir porque no le funciona la pelicula.</p>
<p>Evidentemente este <strong>no es un metodo infalible</strong>â€¦. ya que si el lamer descubre el truco con cambiar la extensión al fichero ya estáâ€¦ pero hace que tengan que dedicarle más tiempo y que más de uno se olvide del tema.</p>

<div class="sociable">
<div class="sociable_tagline">
<strong>Comparte:</strong>
</div>
<ul>
	<li class="sociablefirst"><a rel="nofollow"  target="_blank" href="http://meneame.net/submit.php?url=http%3A%2F%2Fwww.codigoactionscript.org%2Fproteger-los-archivos-swf%2F" title="Meneame"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/meneame.png" title="Meneame" alt="Meneame" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://twitter.com/home?status=Proteger%20los%20archivos%20externos%20-%20http%3A%2F%2Fwww.codigoactionscript.org%2Fproteger-los-archivos-swf%2F" title="Twitter"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.codigoactionscript.org%2Fproteger-los-archivos-swf%2F&amp;t=Proteger%20los%20archivos%20externos" title="Facebook"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fwww.codigoactionscript.org%2Fproteger-los-archivos-swf%2F&amp;title=Proteger%20los%20archivos%20externos&amp;source=CODIGO.actionscript+Blog+de+programaci%C3%B3n+en+ActionScript.+Tips%2C+tutoriales%2C+ejemplos+de+Adobe+Flash%2C+Flex+y+AIR&amp;summary=Un%20problema%20muy%20com%C3%BAn%20para%20los%20desarrolladores%20flash%20es%20el%20hecho%20de%20evitar%20que%20los%20lamers%20se%20descargen%20sus%20archivos%20swf%20y%20los%20decompilen%20para%20copiar%20el%20codigo%2C%20las%20animaciones%2C%20los%20mp3%2C%20o%20cualquier%20cosa%20que%20puedan%20aprovechar%C3%A2%E2%82%AC%C2%A6%0D%0A%0D%0AUn%20truco%20muy%20f" title="LinkedIn"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/linkedin.png" title="LinkedIn" alt="LinkedIn" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fwww.codigoactionscript.org%2Fproteger-los-archivos-swf%2F&amp;title=Proteger%20los%20archivos%20externos&amp;annotation=Un%20problema%20muy%20com%C3%BAn%20para%20los%20desarrolladores%20flash%20es%20el%20hecho%20de%20evitar%20que%20los%20lamers%20se%20descargen%20sus%20archivos%20swf%20y%20los%20decompilen%20para%20copiar%20el%20codigo%2C%20las%20animaciones%2C%20los%20mp3%2C%20o%20cualquier%20cosa%20que%20puedan%20aprovechar%C3%A2%E2%82%AC%C2%A6%0D%0A%0D%0AUn%20truco%20muy%20f" title="Google Bookmarks"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fwww.codigoactionscript.org%2Fproteger-los-archivos-swf%2F&amp;title=Proteger%20los%20archivos%20externos&amp;notes=Un%20problema%20muy%20com%C3%BAn%20para%20los%20desarrolladores%20flash%20es%20el%20hecho%20de%20evitar%20que%20los%20lamers%20se%20descargen%20sus%20archivos%20swf%20y%20los%20decompilen%20para%20copiar%20el%20codigo%2C%20las%20animaciones%2C%20los%20mp3%2C%20o%20cualquier%20cosa%20que%20puedan%20aprovechar%C3%A2%E2%82%AC%C2%A6%0D%0A%0D%0AUn%20truco%20muy%20f" title="del.icio.us"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://technorati.com/faves?add=http%3A%2F%2Fwww.codigoactionscript.org%2Fproteger-los-archivos-swf%2F" title="Technorati"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/technorati.png" title="Technorati" alt="Technorati" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="mailto:?subject=Proteger%20los%20archivos%20externos&amp;body=http%3A%2F%2Fwww.codigoactionscript.org%2Fproteger-los-archivos-swf%2F" title="email"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/email_link.png" title="email" alt="email" class="sociable-hovers" /></a></li>
	<li class="sociablelast"><a rel="nofollow"  target="_blank" href="http://www.printfriendly.com/print?url=http%3A%2F%2Fwww.codigoactionscript.org%2Fproteger-los-archivos-swf%2F&amp;partner=sociable" title="Print"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/printfriendly.png" title="Print" alt="Print" class="sociable-hovers" /></a></li>
</ul>
</div>


<p>Related posts:<ol><li><a href='http://www.codigoactionscript.org/impedir-la-visualizacion-de-archivos-swf-individualmente/' rel='bookmark' title='Permanent Link: Impedir la visualización de archivos SWF individualmente'>Impedir la visualización de archivos SWF individualmente</a></li>
<li><a href='http://www.codigoactionscript.org/listar-archivos-de-un-directorio-web-con-php-y-xml/' rel='bookmark' title='Permanent Link: Listar archivos de un directorio web con PHP y XML'>Listar archivos de un directorio web con PHP y XML</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.codigoactionscript.org/proteger-los-archivos-swf/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
	</channel>
</rss>
