Skip to content

Ambientes de execução de aplicações

Diogo Lucas edited this page Jun 27, 2014 · 2 revisions

As aplicações podem ser executadas no portal de dois modos distintos:

  • Framed
  • Inline.

Modo de execução Framed

Ao ser executada através do modo Framed, a sua aplicação é disponibilizada mediante um elemento do tipo iframe. Este oferece um nível de isolamento que protege a sua aplicação e a plataforma de potenciais vulnerabilidades existentes em ambas partes. Sem esta protecção:

  • Uma aplicação mal intencionada poderia ter acesso a dados sensíveis do utilizador (como os seus cookies).
  • Vulnerabilidades, como XSS (Cross-site scripting), existentes na aplicação tornariam o próprio portal vulnerável a esse tipo de ataque, e vice-versa.

É de mencionar que este iframe é servido a partir de um domínio distinto ao da plataforma. Assim, garante-se a segurança no que diz respeito à política Same-Origin que previne que scripts interajam com conteúdos de um domínio distinto. No entanto, o que se ganha em segurança é perdido em interacção. Fica pois impossibilitada a partilha de contexto necessária para a comunicação entre aplicações e o acesso às API JavaScript da plataforma. Assim sendo, é necessário utilizar um canal de comunicação seguro que permita:

  • Autenticação de forma a garantir que o emissor e o receptor saibam com quem estão a comunicar.
  • Confidencialidade (apenas o receptor pode ler a mensagem) designado window.postMessage.

Este mecanismo permite a troca de JSON de forma segura entre ambas as partes. Este canal autenticado de comunicação é utilizado pelo cliente do contentor, Application Container Client.

Modo de execução Inline

O modo de execução Inline responde à necessidade de ultrapassar as limitações acima indicadas, fazendo uso de um web service, o qual faz parte do projecto Google Caja. Este permite isolar a execução do código de forma a que a aplicação possa apenas manipular certos objectos, não pondo em causa a segurança do portal, das aplicações ou do utilizador.

Para activar este modo em Packaged Apps deve incluir, no seu ficheiro de configuração o atributo cajoled="true". Segue-se um exemplo:

<?xml version="1.0" encoding="utf-8"?>
<widget xmlns="http://www.w3.org/ns/widgets"
   id="http://widgets.tice.ipn.pt/app-id" cajoled="true">
   <name>Title</name>
   <content src="index.html" />
</widget>
You can’t perform that action at this time.