Comunicação entre janelas em domínios diferentes utilizando postmessage



Documentos relacionados
WEBDESIGN. Professor: Paulo Trentin Escola CDI de Videira

XHTML 1.0 DTDs e Validação

Tutorial: Webmail. Dicas de Uso e Funcionalidades 02/2015. Versão 01

Manual para acesso ao Web Site Documentos e Faturas

GERÊNCIA DE DADOS SEMIESTRUTURADOS -XML. Prof. Angelo Augusto Frozza, M.Sc.

Aplicativos para Internet Aula 01

Sistemas Distribuídos

10/07/2013. Camadas. Principais Aplicações da Internet. Camada de Aplicação. World Wide Web. World Wide Web NOÇÕES DE REDE: CAMADA DE APLICAÇÃO

JavaScript. Carlos Santos LabMM 3 - NTC - DeCA - UA Aula 03,

Desenvolvimento Web Introdução a XHTML. Prof. Bruno Gomes

Manual das funcionalidades Webmail AASP

Webdesign A tag HEAD e as Meta tags

Manual de Operações Básicas. Thiago Passamani

Sistemas Distribuídos Capítulos 3 e 4 - Aula 4

PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS -HTML 5: ARMAZENAMENTO DE DADOS (CLIENTE) Prof. Angelo Augusto Frozza, M.Sc.

ECD1200 Equipamento de Consulta de Dados KIT DE DESENVOLVIMENTO

Programação para Internet

s editores de s Como configurar contas de nos principais Como configurar contas de s nos principais editores de s

Técnicas e processos de produção. Profº Ritielle Souza

Camada de Transporte TCP/IP e Aplicação

Lotus Notes 8.5 para o Office 365 para empresas

Manual de Utilização do Zimbra

Desenvolvedor Web Docente André Luiz Silva de Moraes

Introdução à Tecnologia Web HTML HyperText Markup Language XHTML extensible HyperText Markup Language Declaração DOCTYPE e Tag Raiz html

Plano de Aula - Outlook cód Horas/Aula

Introdução ao HTML 5 e Implementação de Documentos

Web Design. Prof. Felippe

Conceitos Básicos

Manual de Utilização COPAMAIL. Zimbra Versão 8.0.2

Processo de Envio de

INFORMES MANUAL DO APLICATIVO

Desenvolvimento de Sites. Subtítulo

Outlook Apresentação

ÍNDICE. 1. Introdução O que é o Sistema Mo Porã Como acessar o Site Mo Porã Cadastro do Sistema Mo Porã...

PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS -HTML 5: ARMAZENAMENTO DE DADOS (CLIENTE) Prof. Angelo Augusto Frozza, M.Sc.

INFormática. Paulo Coelho 2001/2002 Instituto Superior Politécnico de VISEU Escola Superior de Tecnologia

Mais sobre uso de formulários Site sem Ajax

outlook.office365.com

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

Ajax não é dependente dos servidores Web, e como tal poderá ser usado com PHP, JSP, ASP e ASP.NET.

UNIVERSIDADE. Sistemas Distribuídos

Desenvolvimento de Sites com PHP e Mysql Docente André Luiz Silva de Moraes

MANUAL DE BOAS PRÁTICAS

Programação para Web Artefato 01. AT5 Conceitos da Internet

Departamento de Tecnologia da Informação DTI Coordenadoria de Relacionamento com o Cliente CRC. Treinamento Básico do Correio Eletrônico

LINGUAGEM DE PROGRAMAÇÃO WEB

DOCUMENTAÇÃO DO FRAMEWORK - versão 2.0

REDES DE COMPUTADORES E TELECOMUNICAÇÕES MÓDULO 13

FERRAMENTAS DE Usada para visualizar s (correio eletrônico).

SCE-557. Técnicas de Programação para WEB. Rodrigo Fernandes de Mello

1. INTERNET OU NET. Hardware. Computador. Linha telefónica normal, linha RDIS, ligação por cabo ou ADSL. Modem

Configuração manual.ost Microsoft Office 365

Disciplina de Redes de Computadores Aula Prática IV Professor Dr Windson Viana de Carvalho Protocolos de Números de Matrícula :

Desenvolvimento Web Protocolos da Internet

Manual de Registo de Certificados no. Microsoft Windows

Coleção - Análises de marketing em clientes de

Como Configurar Catálogos de Correio Eletrônico com o MDaemon 6.0

Manual de Utilização do PLONE (Gerenciador de página pessoal)

Aula 1 Desenvolvimento Web. Curso: Técnico em Informática / 2º módulo Disciplina: Desenvolvimento Web Professora: Luciana Balieiro Cosme

ESTRATÉGIAS /ACTIVIDADES. Fazer uma abordagem teórica e simples

Manual de Administração

Como acessar o novo webmail da Educação? Manual do Usuário. 15/9/2009 Gerencia de Suporte, Redes e Novas Tecnologias Claudia M.S.

Contatos: enviar s, localizar e gerenciar seus contatos

Analisador de Sites Automático. Palestrante: Heitor de Souza Ganzeli

MANUAL DO ANIMAIL Terti Software

6127. Redes comunicação de dados. 2014/2015. Acesso à Internet.

Construção Páginas de Internet

Flex. MANUAL DE USO DA FERRAMENTA FLEX O Flex como gerenciador de conteúdo

Manual de instalação, configuração e utilização do Enviador XML

Manual de Gerenciamento de Conteúdo

Pré-requisito Ter realizado os cursos de Lógica de Programação e HTML5 e CSS3, ou ter conhecimento equivalentes.

Programando em PHP. Conceitos Básicos

Redes de Computadores II

Manual Vivo Sync. Manual do Usuário. Versão Copyright Vivo

INTERNET. TCP/IP protocolo de comunicação sobre o qual se baseia a Internet. (conjunto de regras para a comunicação entre computadores)

Desenvolvimento WEB II. Professora: Kelly de Paula Cunha

Programação WEB.

Internet. Gabriela Trevisan Bacharel em Sistemas de Infomação

Primeiro contato com JavaScript

Desenvolvimento de Aplicações Web. Prof. José Eduardo A. de O. Teixeira / j.edu@vqv.com.br

ENSINO BÁSICO CURSO DE EDUCAÇÃO E FORMAÇÃO Praticas Administrativas

15/8/2007 Gerencia de Tecnologia da Informação Claudia M.S. Tomaz

Aplicações de Escritório Electrónico

Apostila Oultlook 2007 Prof. Fabrício Melo

Cursos de Magento Gugliotti Consulting

Roteiro 2: Conceitos de Tags HTML

MANUAL DE UTILIZAÇÃO DO EQUIPA TIC

Organizar a estrutura do site

Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas Prof. Felippe Scheidt IFPR Campus Foz do Iguaçu 2014/2

Fone: (19) Site: HTM3.0. Tutorial HTML. versão 4.01

Microsoft Office FrontPage 2003

Cartilha. Correio eletrônico

MANUAL JOOMLA 2.5 PORTAL INTERNET. Ministério do Esporte

Planificação Anual da disciplina de TIC 9ºANO

Transcrição:

Comunicação entre janelas em domínios diferentes utilizando postmessage CaioSBA, 2013

CaioSBA Bacharel em Ciência da Computação pela UFBA Mestrando em Ciência da Computação pela UFBA Desenvolvedor de Software

Uma boa referência JavaScript, the good parts e as partes ruins?

Um pouco sobre JavaScript... Lançada inicialmente no Netscape com o nome LiveScript Tipagem fraca e dinâmica Assíncrona Prototipada Event-Based Baseada no ECMAScript Microsoft lança o JScript

DOM Document Object Model O DOM é uma multi-plataforma que representa como as marcações em HTML, XHTML e XML são organizadas e lidas pelo navegador API Estrutura em árvore

O objeto window Representa uma janela do navegador A propriedade document aponta para o documento carregado na janela do navegador É o escopo padrão da maioria das aplicações JavaScript que executam no navegador window.document x document x document.defaultview Em navegadores com abas, cada aba possui seu próprio objeto window

Frames Vão contra o conceito de hipertexto Problemas com busca Incompatibilidade com navegadores (principalmente dispositivos móveis) Frameless Depreciado <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/tr/html4/frameset. dtd"> <html> <head><title>my First Frame Page</title> </head> <frameset cols="30%, 70%"> <frame src="nav.html"> <frame src="content.html"> </frameset> </html>

Iframes <style> * { width: 100px; height:40px } Uma página é inserida em outra </style> como um objeto retangular <ol> <li><iframe Aparência pode ser melhorada src="javascript:'content'"></iframe></l se o atributo frameborder for removido i> <li><iframe src="javascript:'content'" Para acessar o conteúdo: style="border:0"></iframe></li> <li><iframe src="javascript:'content'" iframe.contentwindow.document frameborder="0"></iframe></li> Para acessar os iframes: </ol> window.frames[0] window.frames['iframename'] Hierarquia window.frames[0].parent === window window.frames[0].frames[0].frames[0].top === window

O cabeçalho X-Frame-Options Cabeçalho HTTP definido pelo servidor web Controla se a página pode ser carregada dentro de (i)frames Valores: DENY, SAMEORIGIN, ALLOWFROM Apache: Header always append X-Frame-Options SAMEORIGIN Nginx: add_header X-Frame-Options SAMEORIGIN; Ver exemplo 1

Same Origin Security Policy Limita o acesso de uma janela à outra Questão de segurança Uma janela pode trabalhar no contexto de outra apenas se possuem a mesma origem Mesma origem: mesmo protocolo, domínio e porta protocolo://domínio:porta http://site.com http://site.com/ http://site.com/my/page.html Ver exemplos 2, 3 e 4 http://www.site.com http://site.org https://site.com http://site.com:8080

Comunicação Client-Server: AJAX JSONP Client-Client: DOM Post Message

Post Message: A solução para comunicação entre janelas de origens distintas Parte do HTML 5 Suporte em todos os navegadores modernos Permite a comunicação segura entre janelas de diferentes origens postmessage(data, targetdomain) data: qualquer objeto JavaScript (apenas strings possuem suporte completo) targetdomain: Limita os domínios do receptor (pode ser um wildcard '*') Ver exemplo 5

Post Message: A solução para comunicação entre janelas de origens distintas Partes do evento mensagem : data: dado enviado origin: quem enviou o dado source: referência à janela remetente Ver exemplo 6

Post Message: A solução para comunicação entre janelas de origens distintas Segurança: É um modelo two-sided: o remetente identifica o receptor (targetdomain) e o receptor identifica o remetente (event.origin) Se não deseja receber mensagens, basta não registrar o evento Ao receber mensagens, sempre checar a origem do remetente Qualquer janela pode enviar mensagens para qualquer outra Não há como saber quando uma janela enviará um código malicioso Evite XSS verificando o conteúdo das mensagens Defina o destinatário para evitar interceptação

Post Message: Quando utilizar? Extensões para navegadores Widgets Apps

Post Message: Fallback para browsers antigos O remetente altera a localização do destinatário utilizando âncora O destinatário verifica periodicamente se o endereço foi alterado Ver exemplo 7

Post Message: Aplicações Sincronização entre janelas Troca de eventos entre janelas Widgets (Facebook, Twitter, Google +1) Ver exemplo do Drupal Bookmarklet: Conteúdo inicia escondido, ao carregar, o pai é avisado e o exibe A janela avisa ao pai sempre que a altura é alterada Em casos de autenticação do Facebook, o redirecionamento é automático