Accesibilidad
Recursos de desarrolladores

Contenido

Cambios en la seguridad de Flash Player 8

Aspectos básicos de la seguridad local

En Flash Player 7 y versiones anteriores, los archivos SWF locales (aquellos que se cargan desde el sistema de archivos de un usuario empleando una ruta local) podían realizar libremente la mayoría de operaciones que habitualmente están controladas por las reglas de seguridad de Flash Player. Por ejemplo, mientras que un archivo SWF cargado a través de HTTP sólo tiene permiso (de manera predeterminada) para cargar texto empleando XML.load() de su propio dominio de origen, un archivo SWF local en Flash Player 7 tenía permiso para cargar texto de cualquier URL HTTP o de cualquier ruta del sistema de archivos local empleando XML.load().

La lectura de un archivo de texto de una ruta local puede concebirse como un privilegio de lectura local. Piense también en que, en Flash Player 7, todos los archivos SWF tenían un privilegio adicional conocido como envío de red que permite el envío de cualquier dato a cualquier ubicación de Internet empleando, por ejemplo, una operación POST de HTTP a través de LoadVars.send(). Si combinamos la lectura local con el envío de red en un SWF local que un usuario final ha descargado de una fuente que no es de confianza, tenemos un SWF local con capacidad para realizar pasos inadecuados como la lectura de archivos de texto del equipo del usuario y el envío de su contenido a una ubicación de Internet, todo ello sin que el usuario tenga conocimiento de lo que ocurre.

En Flash Player 8, podemos resumir de forma sencilla las reglas para los SWF locales de la siguiente forma: De manera predeterminada, los archivos SWF locales conservan el privilegio de lectura local, pero pierden el privilegio de envío de red; no les está permitido comunicar con Internet (ni con un servidor HTTP) en forma alguna. Mediante el cambio de un parámetro de configuración de un archivo SWF, un autor de Flash puede optar por que un SWF tenga privilegio de envío de red, a cambio de que deje de tener el privilegio de lectura local. Finalmente, tanto los autores como los usuarios pueden configurar Flash Player para elevar un archivo SWF a la condición de archivo de confianza, estatus que le confiere ambos privilegios (dicho de otro modo, el archivo SWF pasa a tener los mismos privilegios que tenía en Flash Player 7).

Qué se ve afectado

El contenido de Flash puede verse afectado dependiendo de dos factores: de si es contenido local y del tipo de Flash Player en que se ejecute.

Los archivos SWF afectados son los que se cargan de rutas locales. Entre ellos se encuentran los siguientes ejemplos de formatos de URL:

  • c:\temp\my.swf
  • file:///c|/temp/my.swf
  • /temp/my.swf
  • file:///temp/my.swf
  • \\server\share\my.swf
  • file:////server/share/my.swf
  • URL relativas cargadas por archivos SWF que ya son locales

Existen diversos tipos de Flash Player y cada uno de ellos se ve afectado en diferentes circunstancias:

  • Los reproductores de navegador Web (reproductores de control ActiveX y complemento) aplican las reglas de seguridad locales cuando se usan en un navegador Web.
  • Los reproductores de navegador Web no siempre aplican las reglas de seguridad locales cuando se utilizan en una aplicación que no sea un navegador. Si mantiene una aplicación que incorpora uno de estos reproductores, consulte la sección "Incorporación de Flash Player y seguridad local".
  • Los reproductores independientes aplican las reglas de seguridad locales.
  • Los proyectores de Flash, que pueden crearse a partir de la aplicación de edición de Macromedia Flash y a partir de reproductores independientes, no aplican las reglas de seguridad locales. Ello se debe a que son aplicaciones ejecutables que los usuarios, por lo general, deben conocer y tratar con precaución.
  • Los reproductores de edición en Flash no aplican las reglas de seguridad locales porque sólo se emplean para probar contenidos en la etapa de desarrollo y no para reproducir contenidos de la Web.

Tipos de entornos limitados

En Flash Player 8, todos los archivos SWF (y archivos HTML, por lo que se refiere a la creación de scripts SWF-HTML) se sitúan en uno de cuatro entornos limitados posibles:

  • Remoto. Todos los archivos de URL no locales se sitúan en un entorno limitado remoto. Existen muy diversos entornos limitados de este tipo, uno por cada dominio de Internet (o Intranet) del que se hayan cargado archivos. Se trata de los mismos entornos limitados que se introdujeron en Flash Player 6; no han cambiado en Flash Player 8.
  • Local-con-sistema de archivos. Este es el entorno limitado predeterminado para archivos locales en Flash Player 8. Los archivos SWF de este entorno limitado no pueden entrar en contacto con Internet (ni con ningún servidor HTTP) en forma alguna (por ejemplo, no pueden pasar URL HTTP a loadMovie(), getURL() o XML.load(). Dado que dichas operaciones se permitían en Flash Player 7, si un archivo SWF de la versión 7 o anteriores intenta ponerse en contacto con Internet, se dará una situación en la que el contenido que antes funcionaba puede dejar de hacerlo de la forma esperada después de que el usuario final actualice de Flash Player 7 a Flash Player 8. Por consiguiente, cuando un archivo SWF de la versión 7 o anterior intenta entrar en contacto con Internet, Flash Player 8 muestra un cuadro de diálogo de advertencia al usuario en el que se indica que ha fallado un intento de ponerse en contacto con Internet. El cuadro de diálogo de advertencia contiene un botón que permite al usuario acceder al Administrador de configuración, donde puede elevar el contenido afectado a la condición de contenido local-de confianza (véase más abajo).
  • Local-con-red. Los archivos SWF de este entorno limitado pueden comunicar a través de HTTP pero no pueden leer del sistema de archivos local. Pueden pertenecer a este entorno limitado los archivos SWF de cualquier versión empleando un indicador que se establece en el propio archivo SWF (dicho de otro modo, no se necesita la intervención del usuario para que un archivo SWF se integre en este entorno limitado). Este indicador puede establecerse empleando las opciones de publicación de Flash 8 o utilizando Local Content Updater*, una utilidad gratuita de posprocesamiento de SWF que se encuentra disponible en macromedia.com.
  • Local-de confianza. Este entorno limitado no tiene restricciones. Ofrece los mismos privilegios abiertos que se concedía a todos los archivos locales en Flash Player 7. Cualquier archivo local puede integrarse en este entorno limitado si el usuario final lo autoriza. Esta autorización puede darse de dos formas: interactivamente a través del Administrador de configuración o de manera no interactiva a través de un instalador ejecutable que cree archivos de configuración de Flash Player en el equipo del usuario.

Puede resultar útil llegado este punto consultar el apéndice de diagramas que describen la seguridad local (consulte la sección Diagramas de seguridad local*).

Si un archivo SWF local necesita acceder a Internet (o a un servidor HTTP de intranet), existen dos entornos limitados que ofrecen dicho acceso. El entorno limitado local-con-red es el que se configura de forma más sencilla, ya que toda la configuración necesaria viaja con el propio archivo SWF. El entorno limitado local-de confianza es más potente, ya que ofrece mayores privilegios, pero generalmente exige más esfuerzo y requiere información de configuración independiente del propio archivo SWF. Tras explicar los detalles de las reglas de seguridad locales, en este artículo retomamos la pregunta de cuál de las dos alternativas debe elegirse.

Permisos globales

Dado que los archivos locales ya no tienen permisos sin restricción en Flash Player 8, existen situaciones en las que pueden concederse permisos de Flash a archivos locales. Estos se describen en la siguiente sección.

En general, Flash Player cumple el principio de exigir permisos globales para conceder permisos a archivos locales. Por ejemplo, si un archivo SWF remoto desea permitir que un archivo SWF con permiso local-con-red ejecute un script sobre él, deberá llamar a System.security.allowDomain("*"), con lo que permitirá a cualquier otro SWF cargado que ejecute scripts sobre él. Flash Player no ofrece ningún medio para conceder permiso sólo a archivos locales; la parte que concede el permiso debe estar dispuesta a conceder permiso a todos los archivos. Esto se debe a que Flash Player no puede determinar el origen de un archivo local (el archivo puede proceder de cualquier parte). Por consiguiente, no es adecuado permitir que un archivo local realice una acción a no ser que a la parte que concede el permiso no le importe la procedencia del archivo.

Asegúrese de que no llama a System.security.allowDomain("*") a no ser que el archivo SWF desde el que se efectúe la llamada no contenga información sensible. No debe utilizar la llamada a System.security.allowDomain("*") como remedio absoluto para los problemas de seguridad; ¡si lo hace, puede que esté desprotegiendo contenidos que deben estar protegidos! Dedique algún tiempo a sopesar las consecuencias que puede tener conceder permisos globales cada vez que lo haga.