Ambientes de execução de aplicações

Ricardo Vitorino edited this page Jan 30, 2014 · 3 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.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Press h to open a hovercard with more details.