BR112014005052B1 - Sistema e método para manipulação de conteúdo para aplicações - Google Patents

Sistema e método para manipulação de conteúdo para aplicações Download PDF

Info

Publication number
BR112014005052B1
BR112014005052B1 BR112014005052-0A BR112014005052A BR112014005052B1 BR 112014005052 B1 BR112014005052 B1 BR 112014005052B1 BR 112014005052 A BR112014005052 A BR 112014005052A BR 112014005052 B1 BR112014005052 B1 BR 112014005052B1
Authority
BR
Brazil
Prior art keywords
content
application
compartment
computing device
code element
Prior art date
Application number
BR112014005052-0A
Other languages
English (en)
Other versions
BR112014005052A8 (pt
BR112014005052A2 (pt
Inventor
David L. Jr. Risney
Scott B. Graham
Mathias Jourdain
Sermet Iskin
David Andrew Ross
Original Assignee
Microsoft Technology Licensing, Llc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Technology Licensing, Llc filed Critical Microsoft Technology Licensing, Llc
Publication of BR112014005052A2 publication Critical patent/BR112014005052A2/pt
Publication of BR112014005052A8 publication Critical patent/BR112014005052A8/pt
Publication of BR112014005052B1 publication Critical patent/BR112014005052B1/pt

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/629Protecting access to data via a platform, e.g. using keys or access control rules to features or functions of an application
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1408Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic by monitoring network traffic
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1408Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic by monitoring network traffic
    • H04L63/1416Event detection, e.g. attack signature detection
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1433Vulnerability analysis
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1441Countermeasures against malicious traffic
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1441Countermeasures against malicious traffic
    • H04L63/145Countermeasures against malicious traffic the attack involving the propagation of malware through the network, e.g. viruses, trojans or worms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1441Countermeasures against malicious traffic
    • H04L63/1483Countermeasures against malicious traffic service impersonation, e.g. phishing, pharming or web spoofing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2141Access rights, e.g. capability lists, access control lists, access tables, access matrices

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Computing Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Virology (AREA)
  • Bioethics (AREA)
  • Information Transfer Between Computers (AREA)
  • Storage Device Security (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

dispositivo de armazenamento legível por computador e método para manipulação de conteúdo para aplicações. a presente invenção refere-se a técnicas para manipulação de conteúdo para aplicações (108, 618). em uma ou mais implementações, um primeiro conjunto de políticas de manipulação de conteúdo é imposto para uma primeira porção de uma aplicação (108, 618) que é permitida invocar os elementos de código do dispositivo de computação (102) e um segundo conjunto de políticas de manipulação de conteúdo é imposto para uma segunda porção da aplicação (108, 618) que não é permitida invocar os elementos de código. ainda, uma determinação é feita se aplicar o primeiro conjunto de políticas de manipulação de conteúdo ou o segundo conjunto de políticas de manipulação de conteúdo no conteúdo com base em qual porção da aplicação (108, 618) está solicitando o conteúdo.

Description

ANTECEDENTES
[001] O usuário de computador atual tem acesso a uma amplavariedade de conteúdo, tal como conteúdo de vídeo, conteúdo de áudio, conteúdo de texto, e assim por diante. Nem todo o conteúdo, no entanto, é seguro para ser consumido em um dispositivo de computação. Por exemplo, algum conteúdo pode incluir um código executável malicioso (por exemplo, malware) que, quando executado, pode obter um acesso não autorizado a porções específicas de um dispositivo de computação e/ou informações privadas sobre um usuário.
[002] Apesar de técnicas existirem para impedir que um códigoexecutável malicioso obtenha tal acesso não autorizado, estas técnicas tipicamente não levam em conta os desejos do desenvolvedor de conteúdo atual. Por exemplo, um desenvolvedor de conteúdo pode desenvolver uma aplicação que possa acessar um conteúdo remoto (por exemplo, conteúdo da web) através de um dispositivo de computação. As técnicas correntes tipicamente não consideram como tal conteúdo remoto será processado através do dispositivo de computação em determinar se ao conteúdo remoto será permitido acesso ao dispositivo de computação. Ainda, as técnicas correntes tipicamente não permitem que o desenvolvedor de conteúdo especifique que instâncias específicas de conteúdo remoto devem ser permitidas acessar um dispositivo de computação.
SUMÁRIO
[003] Técnicas para manipulação de conteúdo para aplicaçõesestão descritas. Em uma ou mais implementações, um primeiro conjunto de políticas de manipulação de conteúdo é imposto para uma primeira porção de uma aplicação que é permitida invocar os elementos de código do dispositivo de computação e um segundo conjunto de políticas de manipulação de conteúdo é imposto para uma segunda porção da aplicação que não é permitida invocar os elementos de código. Uma determinação é feita se aplicar o primeiro conjunto de políticas de manipulação de conteúdo ou o segundo conjunto de políticas de manipulação de conteúdo no conteúdo com base em qual porção da aplicação está solicitando o conteúdo.
[004] Em uma ou mais implementações, é detectado que umaaplicação que executa em um dispositivo de computação inclui uma solicitação para passar um conteúdo para um elemento de código do dispositivo de computação. Responsivo à detecção, uma determinação é feita se permitir a solicitação com base em se a solicitação é de uma porção da aplicação que é permitida invocar o elemento de código.
[005] Em uma ou mais implementações, uma determinação éfeita em um dispositivo de computação que uma solicitação de uma aplicação para passar o conteúdo para um elemento de código é de uma porção da aplicação que é permitida invocar o elemento de código. É apurado se o conteúdo pode ser passado para o elemento de código com base em pelo menos um de uma fonte do conteúdo ou um tipo de conteúdo para o conteúdo.
[006] Este Sumário está provido para introduzir uma seleção deconceitos em uma forma simplificada que são adicionalmente abaixo descritos na Descrição Detalhada. Este Sumário não pretende identificar características chave ou características essenciais do assunto reivindicado, nem pretende ser utilizado como um auxílio na determinação do escopo do assunto reivindicado.
BREVE DESCRIÇÃO DOS DESENHOS
[007] A descrição detalhada está descrita com referência àsfiguras acompanhantes. Nas figuras, o(s) dígito(s) mais à esquerda de um número de referência identifica(m) a FIG. na qual o número de referência primeiro aparece. A utilização dos mesmos números de referência em diferentes instâncias na descrição e figuras pode indicar itens similares ou idênticos.
[008] FIG. 1 é uma ilustração de um ambiente em umaimplementação exemplar que é operável para empregar técnicas para manipulação de conteúdo para aplicações.
[009] FIG. 2 é um fluxograma que apresenta um procedimentoem uma implementação exemplar na qual as políticas de manipulação de conteúdo são impostas.
[0010] FIG. 3 é um fluxograma que apresenta um procedimentoem uma implementação exemplar na qual uma determinação é feita se permitir que uma solicitação passe um conteúdo para um elemento de código.
[0011] FIG. 4 é um fluxograma que apresenta um procedimentoem uma implementação exemplar na qual uma determinação é feita se um conteúdo pode ser passado para um elemento de código.
[0012] FIG. 5 ilustra um sistema exemplar que inclui o dispositivode computação como descrito com referência às FIGURAS 1 e 6.
[0013] FIG. 6 ilustra vários componentes de um dispositivoexemplar que pode ser implementado como qualquer tipo de dispositivo portátil e/ou de computador como descrito com referência às FIGURAS 1 e 5 para implementar as modalidades das técnicas aqui descritas.
DESCRIÇÃO DETALHADA VISÃO GERAL
[0014] Os dispositivos de computação podem ter acesso a umaampla variedade de conteúdo de uma ampla variedade de fontes. Algumas fontes, no entanto, podem ser desconhecidas e assim o conteúdo de tais fontes pode não ser confiável. Ainda, alguns tipos de conteúdo estão inerentemente associados com um risco de segurança e assim um cuidado deve ser tomado antes de permitir tal conteúdo acessar certas porções de um dispositivo de computação.
[0015] Em certos cenários, um usuário (por exemplo, umdesenvolvedor de aplicação) pode desejar acessar um conteúdo de uma fonte desconhecida. Por exemplo, o usuário pode escrever uma aplicação que, quando executada em um dispositivo de computação, tenta acessar um conteúdo de um recurso que é remoto do e/ou desconhecido para o dispositivo de computação. Tal conteúdo pode incluir um conteúdo de texto, imagens, vídeo, áudio, e assim por diante. As técnicas aqui discutidas permitem que tal conteúdo seja utilizado por uma aplicação enquanto impedindo que um conteúdo inseguro ganhe acesso autorizado a porções confidenciais e/ou funcionalidades de um dispositivo de computação.
[0016] Consequentemente, técnicas para manipulação deconteúdo para aplicações estão descritas. Em uma ou mais implementações, técnicas podem ser empregadas para reduzir a probabilidade de que um código malicioso (por exemplo, malware) possa acessar porções confidenciais de um dispositivo de computação. Isto pode ser executado em uma variedade de modos, tal como separando as funcionalidades de uma aplicação dentro de um compartimento local e um compartimento remoto. Em implementações, as funcionalidades associadas com o compartimento local permitem que uma aplicação acesse porções confidenciais de um dispositivo de computação, tal como interfaces de programação de aplicação (APIs) de nível de sistema. Assim, as restrições de conteúdo podem ser impostas sobre o compartimento local para impedir que o conteúdo inseguro ganha acesso a porções confidenciais de um dispositivo de computação. Ainda, as funcionalidades associadas com o compartimento remoto podem ser impedidas de acessar porções confidenciais de um dispositivo de computação, e assim podem ser permitidas acessar um conteúdo não confiável e/ou inseguro.
[0017] Na discussão seguinte, um ambiente exemplar éprimeiramente descrito que é operável para empregar as técnicas para manipulação de conteúdo para aplicações aqui descritas. A seguir, políticas de manipulação de conteúdo exemplares para impedir que um conteúdo inseguro acesse as porções confidenciais de um dispositivo de computação estão descritas. Procedimentos exemplares que envolvem as técnicas para manipulação de conteúdo para aplicações estão então descritos as quais podem ser empregadas no ambiente exemplar assim como em outros ambientes. Consequentemente, o ambiente exemplar não está limitado a executar os procedimentos exemplares. Do mesmo modo, os procedimentos exemplares não estão limitados à implementação no ambiente exemplar.
AMBIENTE EXEMPLAR
[0018] A FIG. 1 é uma ilustração de um ambiente 100 em umaimplementação exemplar que é operável para empregar as técnicas para manipulação de conteúdo para aplicações. O ambiente 100 inclui um dispositivo de computação 102 que tem um ou mais processadores 104, meios de armazenamento legíveis por computador 106, e uma ou mais aplicações 108 que residem nos meios de armazenamento legíveis por computador 106 e as quais são executáveis pelo processador 104. O dispositivo de computação 102 pode estar incorporado como qualquer dispositivo de computação adequado tal como, como exemplo e não limitação, um computador desktop, um computador portátil, um computador manual tal como um assistente digital pessoal (PDA), um telefone móvel, um computador tablet, e similares. Um de uma variedade de diferentes exemplos de um dispositivo de computação 102 está abaixo mostrado e descrito nas FIGURAS 5 e 6.
[0019] O dispositivo de computação 102 da FIG. 1 está tambémilustrado como incluindo um navegador 110, por exemplo, um navegador da web o qual é representativo de funcionalidade que está configurada para navegar através de uma rede 112. Apesar da rede 112 ser ilustrada como a Internet, a rede pode assumir uma ampla variedade de configurações. Por exemplo, a rede 112 pode incluir uma rede de área ampla (WAN), uma rede de área local (LAN), uma rede sem fio, uma rede telefônica pública, uma intranet, e assim por diante. Ainda, apesar de uma única rede 112 ser mostrada, a rede 112 pode estar configurada para incluir múltiplas redes.
[0020] O navegador 110, por exemplo, pode estar configuradopara navegar através da rede 112 para interagir com o conteúdo disponível de um ou mais recursos da web 114 assim como comunicar dados para os um ou mais recursos da web 114, por exemplo, executar downloads e uploads. Os recursos da web 114 podem incluir qualquer recurso de computação adequado que está configurado para prover um conteúdo que é acessível através da rede 112. Exemplos de tal conteúdo incluem páginas da web conteúdo de texto, vídeo, áudio, e assim por diante.
[0021] Uma ou mais das aplicações 108 podem também estarconfiguradas para acessar a rede 112, por exemplo, diretamente estas mesmas e/ou através do navegador 110. Por exemplo, uma ou mais das aplicações 108 podem estar configuradas para acessar um ou mais dos recursos da web 114 para recuperar e/ou carregar conteúdo. Assim, as aplicações 108 podem também estar configuradas para uma variedade de funcionalidades que podem envolver um acesso de rede 112 direto ou indireto. Por exemplo, as aplicações 108 podem incluir ajustes de configuração e outros dados que podem ser alavancados localmente pela aplicação 108 assim como sincronizados com aplicações que são executadas em outro dispositivo de computação. Deste modo, estes ajustes podem ser compartilhados pelos dispositivos. Uma variedade de outras instâncias é também contemplada. Assim o dispositivo de computação 102 pode interagir com o conteúdo em uma variedade de modos de uma variedade de diferentes fontes.
[0022] Ainda, ilustrado como parte do dispositivo de computação102 está um sistema de operação 116 que é representativo da funcionalidade para gerenciar recursos do dispositivo de computação 102 e prover acesso a funcionalidades do dispositivo de computação 102. O dispositivo de computação 102 está também mostrado como incluindo um módulo gerenciador de aplicação 118 que é representativo de funcionalidade do dispositivo de computação 102 para monitorar e distinguir as atividades das aplicações 108. Em uma ou mais implementações, o módulo gerenciador de aplicação 118 está configurado para permitir ou não permitir operações específicas das aplicações 108 com base em se as operações utilizam um conteúdo confiável ou não confiável.
[0023] Ilustrado como parte das aplicações 108 está o conteúdoconfiável 120, o qual é representativo de dados que são conhecidos para o dispositivo de computação 102 como um conteúdo que pode ser confiável e/ou como um conteúdo recebido de uma fonte confiável. Além disso, os recursos da web 114 estão ilustrados como incluindo um conteúdo não confiável 112, o qual é representativo de um conteúdo que não pode ser confiável com base em uma fonte do conteúdo e/ou características do conteúdo. Em uma ou mais implementações, o módulo gerenciador de aplicação 118 pode estar configurado para determinar se o conteúdo pode ser confiável com base em uma fonte do conteúdo. Por exemplo, se o conteúdo for recebido de uma fonte que é interna ao dispositivo de computação 102 (por exemplo, do conteúdo confiável 120), o módulo gerenciador de aplicação 118 pode discernir que o conteúdo pode ser confiável. Ainda, se o conteúdo for recebido de uma fonte que é externa e/ou desconhecida do dispositivo de computação 102 (por exemplo, do conteúdo não confiável 122), o módulo gerenciador de aplicação 118 pode discernir que o conteúdo é não confiável.
[0024] Ainda ilustrado como parte das aplicações 108 está umcompartimento local 124 e um compartimento remoto 126. Em implementações, o compartimento local 124 é representativo de porções das aplicações 108 que são permitidas acessar certas funcionalidades confidenciais do dispositivo de computação 102. Por exemplo, o compartimento local 124 inclui um código de aplicação que, quando executado, pode ser permitido invocar ou acessar as funcionalidades e/ou porções do dispositivo de computação 102 que estão geralmente protegidas de serem acessadas por entidades que são externas ao dispositivo de computação 102. O compartimento remoto 126 é representativo de porções das aplicações 108 que não são permitidas acessar certas funcionalidades confidenciais do dispositivo de computação 102. Por exemplo, o código de aplicação incluído no compartimento remoto 126, quando executado, pode ser impedido de acessar as funcionalidades confidenciais do dispositivo de computação 102.
[0025] Ainda ilustrado como parte do módulo gerenciador deaplicação 118 estão elementos de código permitidos 128 e elementos de código filtrados 130. Os elementos de código permitidos 128 e os elementos de código filtrados 130 são representativos de identificadores para as funcionalidades do dispositivo de computação 102 que podem ser acessadas pelas aplicações 108 para executar uma ou mais tarefas através do dispositivo de computação 102. Exemplos de um elemento de código incluem uma função, uma sub- rotina, um método, um parâmetro, uma propriedade, uma interface (por exemplo, uma interface de programação de aplicação (API)), e assim por diante. Em uma ou mais implementações, um elemento de código específico identificado pelos elementos de código permitidos 128 e/ou os elementos de código filtrados 130 pode prover acesso a porções confidenciais do dispositivo de computação 102, tal como funcionalidades providas pelo sistema de operação 116, arquivos de conteúdo de usuário, informações de usuário privadas, e assim por diante. Os exemplos listados como parte dos elementos de código permitidos 128 e dos elementos de código filtrados 130 estão apresentados para propósitos de exemplos somente, e deve ser apreciado que qualquer funcionalidade e/ou porção do dispositivo de computação 102 pode ser incluída como parte dos elementos de código permitidos 128 e/ou dos elementos de código filtrados 130.
[0026] Dividir os elementos de código que estão disponíveis nodispositivo de computação 102 nos elementos de código permitidos 128 e nos elementos de código filtrados 130 auxilia a impedir que as aplicações 108 inadvertidamente exponham porções confidenciais do dispositivo de computação 102 a um conteúdo inseguro. Por exemplo, os elementos de código permitidos 128 incluem elementos de código que podem ser invocados pelo compartimento local 124 geralmente sem restrição para executar várias operações através do dispositivo de computação 102. O acesso para os elementos de código filtrados 130 pode estar sujeito a uma inspeção de conteúdo para evitar permitir que o conteúdo inseguro acesse os elementos de código filtrados 130. Por exemplo, quando as aplicações 108 invocam um dos elementos de código filtrados 130 para processar o conteúdo, o conteúdo é inspecionado para assegurar que o conteúdo seja seguro antes de permitir que o conteúdo seja passado para um dos elementos de código filtrados 130.
[0027] O módulo gerenciador de aplicação 118 pode incluircritérios para determinar se um elemento de código deve ser incluído como parte dos elementos de código filtrados 130. Por exemplo, o módulo gerenciador de aplicação 118 pode especificar se um elemento de código específico pode permitir o conteúdo acessar e/ou manipular uma funcionalidade de modelo de objeto de documento (DOM) do dispositivo de computação 102 (por exemplo, uma funcionalidade de DOM de linguagem de markup de hipertexto (HTML) associada com o navegador 110), o elemento de código específico deve ser incluído como parte dos elementos de código filtrados 130.
[0028] Em implementações, o compartimento remoto 126 não épermitido acessar os elementos de código permitidos 128 ou os elementos de código filtrados 130. Isto pode impedir que o conteúdo inseguro que é acessado do compartimento remoto 126 acesse porções confidenciais do dispositivo de computação 102 ou através dos elementos de código permitidos 128 ou através dos elementos de código filtrados 130.
[0029] O dispositivo de computação 102 no exemplo ilustrado estátambém mostrado como incluindo um módulo de inspeção de conteúdo 132. O módulo de inspeção de conteúdo 132 é representativo de funcionalidade do dispositivo de computação 102 para inspecionar o conteúdo que é solicitado e/ou recuperado pelo dispositivo de computação 102, por exemplo, através das aplicações 108 e/ou do navegador 110. Em uma ou mais implementações, o módulo de inspeção de conteúdo 132 está configurado para inspecionar o conteúdo para determinar se o conteúdo é seguro antes de permitir que o conteúdo seja passado para um dos elementos de código filtrados 130.
[0030] O módulo de inspeção de conteúdo 132 inclui políticas deinspeção de conteúdo 134 que podem ser utilizadas pelo módulo de inspeção de conteúdo 132 para determinar se o conteúdo (por exemplo, o conteúdo confiável 120 e/ou o conteúdo não confiável 122) é seguro ou inseguro. Por exemplo, as políticas de inspeção de conteúdo 134 podem especificar que se o conteúdo atender um ou mais critérios, o conteúdo é considerado ser inseguro. Em implementações, as políticas de inspeção de conteúdo 134 podem especificar que se o conteúdo não confiável incluir um código executável (por exemplo, um script) que pode ser executado pelo e/ou sobre o dispositivo de computação 102, o conteúdo não confiável é inseguro. Tal código executável, quando executado, pode permitir um acesso não autorizado a porções do dispositivo de computação 102, tal como funcionalidades do sistema de operação 116, informações privadas associadas com um usuário do dispositivo de computação 102, e assim por diante.
[0031] Apesar das implementações serem aqui discutidas comrelação a um conteúdo inseguro que inclui um código executável, deve ser apreciado que as políticas de inspeção de conteúdo 134 podem incluir uma variedade de diferentes critérios e filtros que podem ser utilizados para determinar se o conteúdo é seguro ou inseguro. Por exemplo, outros critérios que as políticas de inspeção de conteúdo 134 podem utilizar para determinar se o conteúdo é inseguro incluem indicações de sites da web específicos, tipos de conteúdo, tipos de arquivo, domínios da web, e assim por diante, que são considerados inseguros.
[0032] Se o módulo de inspeção de conteúdo 132 determinar queo conteúdo é inseguro, o conteúdo inseguro é impedido de ser passado para um elemento de código específico dos elementos de código filtrados 130. Ao contrário, se o conteúdo for determinado ser seguro, o conteúdo pode ser passador para o elemento de código específico.
[0033] Geralmente, qualquer uma das funções aqui descritaspodem ser implementadas utilizando software, firmware, hardware (por exemplo, um circuito lógico fixo), ou uma combinação destasimplementações. Os termos "módulo", "funcionalidade", "lógica"como aqui utilizados geralmenterepresentam um software, firmware, hardware, ou uma sua combinação. No caso de uma implementação de software, o módulo, funcionalidade, ou lógica representa um código de programa que executa tarefas especificadas quando executadas em um processador (por exemplo, CPU ou CPUs). O código de programa pode estar armazenado em um ou mais dispositivos de memória legíveis por computador. As características das técnicas abaixo descritas são independentes de plataforma, significando que as técnicas podem ser implementadas em uma variedade de plataformas de computação comerciais que têm uma variedade de processadores.
[0034] Por exemplo, o dispositivo de computação 102 pode também incluir uma entidade (por exemplo, um software) que faz com que o hardware do dispositivo de computação 102 execute operações, por exemplo, processadores, blocos funcionais, e assim por diante. Por exemplo, o dispositivo de computação 102 pode incluir um meio legível por computador pode estar configurado para manter instruções que fazem com que o dispositivo de computação, e mais especificamente o hardware do dispositivo de computação 102 execute as operações. Assim, as instruções funcionam para configurar o hardware para executar as operações e deste modo resultam na transformação do hardware para executar as funções. As instruções podem ser providas pelo meio legível por computador para o dispositivo de computação 102 através de uma variedade dediferentes configurações.
[0035] Uma tal configuração de um meio legível por computador éum meio que contém um sinal e assim está configurado para transmitir as instruções (por exemplo, como uma onda portadora) para o hardware do dispositivo de computação, tal como através de uma rede. O meio legível por computador pode também estar configurado como um meio de armazenamento legível por computador e assim não é um meio que contém um sinal. Exemplos de um meio de armazenamento legível por computador incluem uma memória de acesso randômico (RAM), uma memória somente de leitura (ROM), um disco óptico, uma memória instantânea, uma memória de disco rígido, e outros dispositivos de memória que podem utilizar técnicas magnéticas, ópticas, e outras para armazenar instruções e outros dados.
[0036] Tendo descrito um ambiente exemplar no qual as técnicasaqui descritas podem operar, considere agora uma discussão de algumas políticas de manipulação de conteúdo exemplares para o compartimento local 124 e o compartimento remoto 126 de acordo com uma ou mais modalidades.
POLÍTICAS DE COMPARTIMENTO LOCAL
[0037] Como acima mencionado, o compartimento local 124 érepresentativo de porções das aplicações 108 que são permitidas acessar certas funcionalidades confidenciais do dispositivo de computação 102. Por exemplo, o compartimento local 124 inclui um código executável das aplicações 108 que, quando executado, pode chamar os elementos de código identificados nos elementos de código permitidos 128 e nos elementos de código filtrados 130, por exemplo, para serem utilizados para processar o conteúdo. As propriedades do compartimento local 124 estão daqui em diante discutidas de acordo com uma ou mais modalidades.
IDENTIFICAÇÃO DE COMPARTIMENTO LOCAL
[0038] Em implementações, o conteúdo incluído como parte docompartimento local 124 é declarado utilizando um esquema de identificador de recurso uniforme (URI) que é específico para o compartimento local 124. Por exemplo, o conteúdo incluído como parte do compartimento local 124 pode ser identificado utilizando um URI tal como "local-compartment://content". Quando o conteúdo é determinado como sendo referenciado utilizando esta URI (por exemplo, pelo módulo gerenciador de aplicação 118 e/ou o módulo de inspeção de conteúdo 132), a fonte do conteúdo será conhecida ser o compartimento local 124 e propriedades específicas do compartimento local 124 serão aplicadas ao conteúdo. Ausente o esquema de URI específico para o compartimento local 124, o conteúdo será tratado como não confiável e/ou como sendo associado com compartimento remoto 126.
CÓDIGO EXECUTÁVEL REMOTO
[0039] O compartimento local 124 é impedido de incluir referênciasao código executável (por exemplo, script) que é recuperado de uma fonte que é externa ao conteúdo confiável 120 e/ou o dispositivo de computação 102. Por exemplo, as políticas de conteúdo associadas com o compartimento local 124 podem especificar que o código incluído no compartimento local 124 não pode referenciar um conteúdo executável que é externo ao conteúdo confiável 120. Um exemplo de tal referência não permitida é um localizador de recurso uniforme (URL) que referencia um conteúdo de script. O compartimento local 124 pode, no entanto, referenciar um conteúdo executável que está incluído como parte do conteúdo confiável 120.
ACESSANDO ELEMENTOS DE CÓDIGO PERMITIDOS
[0040] O compartimento local 124 é permitido invocar elementosde código dos elementos de código permitidos 128.
ACESSANDO ELEMENTOS DE CÓDIGO FILTRADOS
[0041] O conteúdo que é solicitado pelo compartimento local 124 aser passado para um elemento de código dos elementos de código filtrados 130 é filtrado para verificar que o conteúdo seja seguro antes de ser passado para o elemento de código. Por exemplo, quando uma chamada para um dos elementos de código filtrados 130 inclui uma referência a uma instância de conteúdo (por exemplo, do conteúdo não confiável 122), o conteúdo é filtrado pelo módulo de inspeção de conteúdo 132. Se o módulo de inspeção de conteúdo 132 determinar que o conteúdo é seguro, o conteúdo é permitido ser passado para o elemento de código. Ao contrário, se o conteúdo for determinado ser inseguro, o conteúdo é impedido de ser passado para o elemento de código.
FONTES DE CONTEÚDO
[0042] Em implementações, o compartimento local 124 é impedidode acessar certos tipos de conteúdo de fontes que são externas ao conteúdo confiável 120. Por exemplo, o compartimento local 124 pode ser permitido acessar um conteúdo de mídia (por exemplo, conteúdo de vídeo, imagens, conteúdo de áudio, e assim por diante) de uma fonte que é externa ao conteúdo confiável 120. O compartimento local 124 pode ser impedido, no entanto de acessar outros tipos de conteúdo de uma fonte externa ao conteúdo confiável 120, tal como um conteúdo de HTML, um conteúdo de script, um conteúdo de folhas de estilo em cascata (CSS), e assim por diante. Isto pode impedir uma aplicação de incluir uma referência a um conteúdo malicioso (por exemplo, código executável) de uma fonte não confiável.
CÓDIGO NATIVO DE TERCEIROS
[0043] Em implementações, um código nativo de terceirosassociado com uma das aplicações 108 pode ser armazenado no compartimento local 124. O código nativo de terceiros pode referir a um código executável que é utilizado por uma das aplicações 108, mas que não é escrito por um desenvolvedor da aplicação. Em tais implementações, no entanto, o código nativo de terceiros é identificado pela aplicação, por exemplo, declarado como parte de um manifesto para a aplicação. Se o código nativo de terceiros não for declarado pela aplicação, o código nativo de terceiros pode ser impedido de ser executado do compartimento local 124.
SOLICITAÇÕES DE DOMÍNIO CRUZADO
[0044] Em implementações, as aplicações 108 são permitidasinvocar um protocolo de transferência de hipertexto (http) de linguagem markup extensível (XML) de domínio cruzado docompartimento local 124. Por exemplo, as aplicações 108 podemincluir uma URL que aponta para o conteúdo de mídia (por exemplo, de um website) associado com um domínio que é externo ao dispositivo de computação 102.
CODIFICAÇÃO DE CARACTERES
[0045] Para proteger as porções confidenciais do dispositivo decomputação 102, restrições de codificação de caracteres podem ser impostas sobre o compartimento local 124. Em implementações, codificação de caractere refere-se a modos nos quais os caracteres (por exemplo, símbolos) incluídos nos dados de conteúdo são representados em um dispositivo de computação. Exemplos de codificação de caracteres inclui os Formatos de Transformação de Conjunto de Caractere Universais (UTF). Certos tipos de codificação de caracteres podem ser manipulados (por exemplo, por malware e/ou terceiros) para causar um desempenho indesejável de um dispositivo de computação e/ou permitir um acesso não autorizado a porções confidenciais de um dispositivo de computação. Assim, o compartimento local 124 pode ser restrito a utilizar uma codificação de caracteres permitida específica, tal como UTF-8.
[0046] Se uma porção de conteúdo específica não tem um formatode codificação de caracteres declarado, uma tentativa pode ser feita de analisar o conteúdo como a codificação de caracteres permitida. Se o conteúdo puder ser analisado utilizando a codificação de caracteres permitida, o conteúdo pode ser utilizado pelo compartimento local 124, por exemplo, para emitir um conteúdo. Se o conteúdo não puder ser analisado utilizando a codificação de caracteres permitida, um erro pode ocorrer que impede que o conteúdo seja analisado. Ainda, se uma porção de conteúdo específica tiver uma codificação de caracteres declarada que é diferente da codificação de caracteres permitida, o conteúdo pode ser impedido de ser analisado e/ou um erro de análise pode ocorrer.
POLÍTICAS DE COMPARTIMENTO REMOTO
[0047] Como acima mencionado, o compartimento remoto 126 érepresentativo de porções das aplicações 108 que não são permitidas acessar certas funcionalidades confidenciais do dispositivo de computação 102. Por exemplo, o compartimento remoto 126 inclui um código executável das aplicações 108 que, quando executado, não é permitido chamar os elementos de código identificados nos elementos de código permitidos 128 e nos elementos de código filtrados 130. Com referência ao conteúdo da web, tal conteúdo pode ser executado no compartimento remoto com base nas mesmas permissões de recursos associadas com um navegador da web, por exemplo, o navegador 110. Propriedades adicionais do compartimento remoto 126 estão daqui em diante discutidas de acordo com uma ou mais modalidades.
IDENTIFICAÇÃO DE COMPARTIMENTO REMOTO
[0048] Em implementações, o conteúdo incluído como parte docompartimento remoto 126 é declarado utilizando um esquema de identificador de recurso uniforme (URI) que é específico para o compartimento remoto 126. Por exemplo, o conteúdo incluído como parte do compartimento remoto 126 pode ser identificado utilizando um URI tal como "remote-compartment://content". Quando o conteúdo é determinado como sendo referenciado utilizando este URI (por exemplo, pelo módulo gerenciador de aplicação 118 e/ou o módulo de inspeção de conteúdo 132), a fonte do conteúdo será conhecida ser o compartimento remoto 126 e políticas específicas para o compartimento remoto 126 serão aplicadas ao conteúdo. Ainda, um conteúdo que é referenciado utilizando outros esquemas de URI, tal como "http://" e/ou "https://", será tratado como sendo associado com o compartimento remoto 126 e/ou uma fonte não confiável.
CÓDIGO EXECUTÁVEL REMOTO
[0049] Em implementações, o compartimento remoto 126 épermitido incluir referências a um código executável (por exemplo, script) de fontes confiáveis e fontes não confiáveis, por exemplo, o conteúdo confiável 120 e/ou o conteúdo não confiável 122. Como o compartimento remoto 126 não tem acesso a porções confidenciais do dispositivo de computação 102, permitir o compartimento remoto 126 referir ao código executável não confiável não arrisca expor as porções confidenciais do dispositivo de computação 102 ao código executável não confiável.
CONTEÚDO DE MÍDIA
[0050] O compartimento remoto 126 é permitido incluir referênciasa um conteúdo de mídia de fontes confiáveis e fontes não confiáveis, por exemplo, o conteúdo confiável 120 e/ou o conteúdo não confiável 122. Como o compartimento remoto 126 não tem acesso a porções confidenciais do dispositivo de computação 102, permitir o compartimento remoto 126 referir ao conteúdo de mídia não confiável não arrisca expor as porções confidenciais do dispositivo de computação 102 ao conteúdo inseguro que pode estar incluído no conteúdo de mídia não confiável.
CÓDIGO NATIVO DE TERCEIROS
[0051] Em implementações, o compartimento remoto 126 não é permitido invocar e/ou referenciar um código nativo de terceiros. Isto pode impedir que tal código obtenha acesso não autorizado a porções confidenciais de um dispositivo de computação.
SOLICITAÇÕES DE DOMÍNIO CRUZADO
[0052] Em implementações, o compartimento remoto 126 não épermitido incluir solicitações de XML-http de domínio cruzado. Isto pode impedir que um conteúdo inseguro seja acessado através de um website ou outro recurso de rede que é acessado do compartimento remoto 126.
COMUNICAÇÃO ENTRE COMPARTIMENTOS
[0053] Em implementações, a comunicação entre o compartimentoremoto 126 e o compartimento local 124 é controlada para impedir que um conteúdo inseguro seja passado entre os compartimentos. Por exemplo, uma comunicação entre os compartimentos pode ser permitida utilizando uma única técnica de comunicação.
[0054] Um exemplo de tal técnica é adicionar um gerador deeventos ao conteúdo em um primeiro compartimento, por exemplo, utilizando o método de postMessage(). Um ouvidor de eventos correspondente pode então ser adicionado ao outro compartimento, por exemplo, utilizando o método de addEventListener(). Quando um evento é gerado pelo primeiro compartimento, o evento é detectado pelo ouvidor de eventos no outro compartimento para facilitar a comunicação de mensagens entre os compartimentos.
[0055] Em alguns cenários, o compartimento local 124 podereceber um conteúdo através do método de postMessage() e determinar que o conteúdo é recebido de uma fonte não confiável. Em tais cenários, as técnicas de filtragem de conteúdo aqui discutidas podem ser utilizadas para determinar se o conteúdo é seguro ou inseguro. Ainda, o conteúdo pode ser rejeitado ou desinfetado se for determinado que o conteúdo é inseguro.
[0056] Tendo descrito políticas de manipulação de conteúdoexemplares, considere agora uma discussão de alguns procedimentos exemplares de acordo com uma ou mais modalidades.
PROCEDIMENTOS EXEMPLARES
[0057] A discussão seguinte descreve técnicas de manipulação deconteúdo que podem ser implementadas utilizando os sistemas, dispositivos, e políticas de manipulação de conteúdo aqui descritos. Aspectos de cada um dos procedimentos podem ser implementados em hardware, firmware, ou software, ou uma sua combinação. Os procedimentos estão mostrados como um conjunto de blocos que especificam as operações executadas por um ou mais dispositivos e não estão necessariamente limitados às ordens mostradas para executar as operações pelos respectivos blocos. Ainda, uma operação mostrada com relação a um procedimento específico pode ser combinada e/ou intercambiada com uma operação de um diferente procedimento de acordo com uma ou mais implementações. Em porções da discussão seguinte, referência será feita ao ambiente 100 da FIG. 1.
[0058] A FIG. 2 apresenta um procedimento 200 em umaimplementação exemplar na qual as políticas de manipulação de conteúdo são impostas. Um primeiro conjunto de políticas de manipulação de conteúdo é imposto para uma porção de uma aplicação que é permitida invocar elementos de código do dispositivo de computação e um segundo conjunto de políticas de manipulação de conteúdo é imposto para uma porção da aplicação que não é permitida invocar os elementos de código (bloco 202). Exemplos de políticas de manipulação de conteúdo estão acima e abaixo discutidos. Uma determinação é feita se aplicar o primeiro conjunto de políticas de manipulação de conteúdo ou o segundo conjunto de políticas de manipulação de conteúdo a um conteúdo com base em qual porção da aplicação está referenciando o conteúdo (bloco 204). Por exemplo, se o conteúdo não confiável for solicitado pelo compartimento local 124, o primeiro conjunto de políticas de manipulação de conteúdo é aplicado. Se o conteúdo não confiável for solicitado pelo compartimento remoto 126, no entanto, o segundo conjunto de políticas de manipulação de conteúdo é aplicado. Em implementações, uma determinação quanto a qual compartimento está solicitando o conteúdo pode ser feita com base em um URI que referencia o conteúdo.
[0059] A FIG. 3 apresenta um procedimento 300 em umaimplementação exemplar na qual uma determinação é feita se permitir que uma solicitação passe o conteúdo para um elemento de código. É detectado que uma aplicação que executa em um dispositivo de computação inclui uma solicitação para passar o conteúdo para um elemento de código do dispositivo de computação (bloco 302). Por exemplo, uma das aplicações 108 pode solicitar que uma instância de conteúdo seja passada para um dos elementos de código permitidos 128 ou dos elementos de código filtrados 130.
[0060] Uma determinação é feita se permitir a solicitação combase em se a solicitação é de uma porção da aplicação que é permitida invocar o elemento de código (bloco 304). Com referência aos compartimentos acima discutidos, o gerenciador de aplicação 118 pode determinar se a solicitação é do compartimento local 124 ou do compartimento remoto 126. Se a solicitação for de uma porção da aplicação que não é permitida invocar o elemento de código ("Não Permitida"), o conteúdo é impedido de ser passado para o elemento de código (bloco 306). Como acima discutido, o compartimento remoto 126 não é permitido invocar os elementos de código do dispositivo de computação 102. Assim, se for determinado que a solicitação é do compartimento remoto 126, a solicitação pode ser negada.
[0061] Se a solicitação for de uma porção da aplicação que é permitida invocar o elemento de código ("Permitida"), é apurado se o conteúdo pode ser passado para o elemento de código com base em uma fonte do conteúdo e um tipo de conteúdo para o conteúdo (bloco 308). Como acima discutido, em certos cenários o compartimento local 124 é permitido invocar os elementos de código do dispositivo de computação 102. Assim, se for determinado que a solicitação é do compartimento local 124, o conteúdo pode ser submetido a um escrutínio adicional para determinar se o conteúdo pode ser passado para o elemento de código. Modos exemplares de determinar se o conteúdo pode ser passado para o elemento de código estão abaixo discutidos em mais detalhes.
[0062] A FIG. 4 apresenta um procedimento 400 em umaimplementação exemplar na qual uma determinação é feita se o conteúdo pode ser passado para um elemento de código. Em implementações, o procedimento 400 representa uma técnica detalhada para implementar o bloco 308 do procedimento 300, acima discutido. É apurado se uma fonte de conteúdo que é solicitado ser passado para um elemento de código é uma fonte confiável ou uma fonte não confiável (bloco 402). Se a fonte do conteúdo for uma fonte não confiável ("Não Confiável"), uma determinação é feita se um tipo de conteúdo para o conteúdo é permitido de uma fonte não confiável (bloco 404). Com referência ao ambiente 100 da FIG. 1, a fonte do conteúdo pode ser o conteúdo não confiável 122. Como acima discutido, certos tipos de conteúdo (por exemplo, código executável) não são permitidos ser recuperados de uma fonte não confiável e passadas para um elemento de código. Se o tipo de conteúdo não for permitido de uma fonte não confiável ("Não"), o conteúdo é impedido de ser passado para o elemento de código (bloco 406). Alternativamente, se o tipo de conteúdo for permitido de uma fonte não confiável ("Sim"), o procedimento 400 prossegue para o bloco 408, abaixo discutido. Certos de tipo de conteúdo (por exemplo, conteúdo de mídia, conteúdo de formatação, e assim por diante) são permitidos serem recuperados de uma fonte não confiável e passados para um elemento de código, sujeitos em algumas implementações a uma inspeção adicional para determinar se o conteúdo é seguro.
[0063] Retornando para o bloco 402, se a fonte do conteúdo foruma fonte confiável ("Confiável") ou se for determinado no bloco 404 que o tipo de conteúdo é permitido de uma fonte não confiável ("Sim"), uma determinação é feita se o elemento de código é um elemento de código permitido ou um elemento de código filtrado (bloco 408). Se o elemento de código for um elemento de código permitido ("Permitido"), o conteúdo é permitido ser passado para o elemento de código (bloco 410). Em implementações, a distinção entre os elementos de código permitidos e os elementos de código filtrados pode ser explicitamente definida, por exemplo, pré-especificando um conjunto de elementos de código permitidos e um conjunto de elementos de código filtrados. Alternativamente, um conjunto de elementos de código filtrados pode ser pré-especificado e um elemento de código específico pode ser determinado por implicação para ser um elemento de código permitido com base no elemento de código não sendo identificado no conjunto de elementos de código filtrados. O conteúdo é processado utilizando o elemento de código (bloco 412). Por exemplo, o conteúdo pode ser processado para apresentação, por exemplo, como parte de uma página da web, um documento, e assim por diante.
[0064] Retornando ao bloco 408, se o elemento de código for umelemento de código filtrado ("Filtrado"), o conteúdo é inspecionado para apurar se o conteúdo é seguro para ser passado para o elemento de código (bloco 414). Por exemplo, o módulo de inspeção de conteúdo 132 pode aplicar uma ou mais das políticas de inspeção de conteúdo 134 ao conteúdo para determinar se o conteúdo é seguro ou inseguro. Como acima discutido, o conteúdo que inclui o código executável pode ser determinado ser inseguro para ser passado para um elemento de código filtrado. Além disso, o conteúdo seguro pode incluir um conteúdo estático tal como imagens, texto, áudio, vídeo, dados de apresentação, HTML estático, e assim por diante.
[0065] Em implementações alternativas, uma chamada para oelemento de código pode optar de um esquema de inspeção de conteúdo. Por exemplo, um dispositivo de computação pode determinar que uma chamada para o elemento de código inclui uma indicação que o conteúdo associado com a chamada pode ser dispensado de um esquema de inspeção conteúdo. Assim, o elemento de código pode ser executado utilizando o conteúdo sem primeiro inspecionar o conteúdo para determinar se o conteúdo é inseguro. Isto pode permitir um desenvolvedor de aplicação desviar dos mecanismos de inspeção de conteúdo em situações onde o conteúdo pode ser rejeitado se inspecionado.
[0066] Retornando ao bloco 414, se o conteúdo for determinadoser inseguro para ser passado para o elemento de código ("Inseguro"), o conteúdo é impedido de ser passado para o elemento de código (bloco 406). Se o conteúdo for determinado ser seguro para ser passado para o elemento de código ("Seguro"), o conteúdo é permitido ser passado para o elemento de código (bloco 410). Como acima discutido, o conteúdo é processado utilizando o elemento de código (bloco 412).
[0067] Em implementações alternativas, uma aplicação podeindicar que um conteúdo inseguro pode ser desinfetado removendo os aspectos inseguros do conteúdo antes de permitir que o conteúdo seja passado para um elemento de código específico. Por exemplo, a aplicação 108 pode especificar no seu código (por exemplo, através de uma chamada de função) que o conteúdo inseguro deve ser passado para o módulo de inspeção de conteúdo 132, o qual pode então remover as características não seguras (por exemplo, código executável) do conteúdo. O conteúdo desinfetado pode então ser passado para o elemento de código para processamento adicional.
SISTEMA E DISPOSITIVO EXEMPLARES
[0068] A FIG. 5 ilustra um sistema exemplar 500 que inclui odispositivo de computação 102 como descrito com referência à FIG. 1. O sistema exemplar 500 permite que ambientes ubíquos para uma experiência de usuário ininterrupta quando executando aplicações em um computador pessoal (PC), um dispositivo de televisão, e/ou um dispositivo móvel. Os serviços e aplicações executamsubstancialmente similares em todos os três ambientes para uma experiência de usuário comum quando transicionando de um dispositivo para o próximo enquanto utilizando uma aplicação, jogando um videogame, assistindo um vídeo, e assim por diante.
[0069] No sistema exemplar 500, múltiplos dispositivos estãointerconectados através de um dispositivo de computação central. O dispositivo de computaçãocentral pode ser local aos múltiplos dispositivos ou pode estar localizado remotamente dos múltiplos dispositivos. Em uma modalidade, o dispositivo de computação central pode ser uma nuvem de um ou mais computadores servidores que estão conectados aos múltiplos dispositivos através de uma rede, da Internet, ou outra conexão de comunicação de dados. Em uma ou mais modalidades, esta arquitetura de interconexão permite que uma funcionalidade seja fornecida através de múltiplos dispositivos para prover uma experiência comum e ininterrupta para um usuário dos múltiplos dispositivos. Cada um dos múltiplos dispositivos pode ter diferentes requisitos e capacidades físicas, e o dispositivo de computação central utiliza uma plataforma para permitir o fornecimento de uma experiência para o dispositivo que é tanto modelado para o dispositivo quanto, no entanto, comum para todos os dispositivos. Em uma modalidade, uma classe de dispositivos-alvo é criada e experiências são modeladas para a classe genérica de dispositivos. Uma classe de dispositivos pode ser definida por características físicas, tipos de utilização, ou outras características comuns dos dispositivos.
[0070] Em várias implementações, o dispositivo de computação102 pode assumir uma variedade de diferentes configurações, tal como para usos de computador 502, móvel 504, e televisão 506. Cada uma destas configurações inclui dispositivos que podem ter geralmente diferentes construções e capacidades, e assim o dispositivo de computação 102 pode ser configurado de acordo com uma ou mais das diferentes classes de dispositivo. Por exemplo, o dispositivo de computação 102 pode ser implementado como a classe de computador 502 de um dispositivo que inclui um computador pessoal, computador desktop, um computador de múltiplas teles, computador laptop, netbook, assim por diante.
[0071] O dispositivo de computação 102 pode também serimplementado como a classe de dispositivo móvel 504 que inclui dispositivos móveis, tal como um telefone móvel, um reprodutor de música móvel, dispositivo de jogos portátil, um computador tablet, um computador de múltiplas teles, e assim por diante. O dispositivo de computação 102 pode também ser implementado como a classe de dispositivo de televisão 506 que inclui dispositivos que têm ou são conectados a telas geralmente maiores em ambientes de visualização casual. Estes dispositivos incluem televisões, conversores, consoles de jogos, e assim por diante. As técnicas aqui descritas podem ser suportadas por estas várias configurações do dispositivo de computação 102 e não estão limitadas aos exemplos específicos das técnicas aqui descritos.
[0072] A nuvem 508 inclui e/ou é representativa de umaplataforma 510 para serviços de conteúdo 512. A plataforma 510 abstrai a funcionalidade subjacente de recursos de hardware (por exemplo, servidores) e software da nuvem 508. Os serviços de conteúdo 512 podem incluir aplicações e/ou dados que podem ser utilizados enquanto o processamento de computador é executado em servidores que estão remotos do dispositivo de computação 102. Serviços de conteúdo 512 podem ser providos com um serviço pela Internet e/ou através de uma rede de assinante, tal como uma rede de celular ou Wi-Fi.
[0073] A plataforma 510 pode abstrair recursos e funções paraconectar o dispositivo de computação 102 com outros dispositivos de computação. A plataforma 510 pode também servir para abstrair a escalagem de recursos para prover uma nível de escala correspondente para a demanda encontrada para os serviços de conteúdo 512 que são implementados através da plataforma 510. Consequentemente, em uma modalidade de dispositivo interconectado, a implementação de funcionalidade da funcionalidade aqui descrita pode ser distribuída através de todo o sistema 500. Por exemplo, a funcionalidade pode ser implementada em parte no dispositivo de computação 102 assim como através da plataforma 510 que abstrai a funcionalidade da nuvem 508, como mostrado através da inclusão das aplicações 108, o módulo gerenciador de aplicação 118, e o módulo de inspeção de conteúdo 132.
[0074] A FIG. 6 ilustra vários componentes de um dispositivoexemplar 600 que pode ser implementado como qualquer tipo de dispositivo de computação como descrito com referência às FIGURAS 1 e 5 para implementar modalidades das técnicas aqui descritas. O dispositivo 600 inclui dispositivos de comunicação 602 que permitem uma comunicação com fio e/ou sem fio dos dados de dispositivo 604 (por exemplo, dados recebidos, dados que estão sendo recebidos, dados programados para transmissão pacotes de dados dos dados, etc.). Os dados de dispositivo 604 ou outro conteúdo de dispositivo podem incluir ajustes de configuração do dispositivo, conteúdo de mídia armazenado no dispositivo, e/ou informações associadas com um usuário do dispositivo. O conteúdo de mídia armazenado no dispositivo 600 pode incluir qualquer tipo de dados de áudio, vídeo, e/ou imagem. O dispositivo 600 inclui uma ou mais entradas de dados 606 através das quais qualquer tipo de dados, conteúdo de mídia, e/ou entradas podem ser recebidos, tal como entradas selecionáveis pelo usuário, mensagens, música, conteúdo de mídia de televisão, conteúdo de vídeo gravado e qualquer outro tipo de dados de áudio, vídeo, e/ou imagem recebidos de qualquer conteúdo e/ou fonte de dados.
[0075] O dispositivo 600 também inclui interfaces de comunicação608 que podem ser implementadas como qualquer uma ou mais de uma interface serial e/ou paralela, interface sem fio, qualquer tipo de interface de rede, um modem, e como qualquer outro tipo de interface de comunicação. As interfaces de comunicação 608 proveem ligações de conexão e/ou comunicação entre o dispositivo 600 e uma rede de comunicação pelas quais outros dispositivos eletrônicos, de computação, e comunicação comunicam dados com o dispositivo 600.
[0076] O dispositivo 600 inclui um ou mais processadores 610 (porexemplo, qualquer um de microprocessadores, controladores, e similares) os quais processam várias instruções executáveis por computador para controlar a operação do dispositivo 600 e implementar modalidades das técnicas aqui descritas. Alternativamente, ou além disso, o dispositivo 600 pode ser implementado com qualquer um ou uma combinação de hardware, firmware, ou circuito de lógica fixo que é implementado em conexão com os circuitos de processamento e controle os quais estão geralmente identificados em 612. Apesar de não mostrado, o dispositivo 600 pode incluir um barramento de sistema ou sistema de transferência de dados que acopla os vários componentes dentro do dispositivo. Um barramento de sistema pode incluir qualquer uma ou combinação de diferentes estruturas de barramento, tal como um barramento de memória ou controlador de memória, um barramento periférico, um barramento serial universal, e/ou um processador ou barramento local que utiliza qualquer uma de uma variedade de arquiteturas de barramento.
[0077] O dispositivo 600 também inclui um meio legível porcomputador 614, tal como um ou mais componentes de memória, exemplos dos quais incluem uma memória de acesso randômico (RAM), memória não volátil (por exemplo, qualquer uma ou mais de uma memória somente de leitura (ROM), memória instantânea, EPROM, EEPROM, etc.), e um dispositivo de armazenamento de disco. Um dispositivo de armazenamento de disco pode ser implementado como qualquer tipo de dispositivo de armazenamento magnético ou óptico, tal como uma unidade de disco rígido, um disco compacto regravável e/ou reescrevível (CD), qualquer tipo de um disco versátil digital (DVD), e similares. O dispositivo 600 pode também inclui um dispositivo de mídia de armazenamento de massa 616.
[0078] O meio legível por computador 614 provê mecanismos dearmazenamento de dados para armazenar os dados de dispositivo 604, assim como várias aplicações de dispositivo 618 e quaisquer outros tipos de informações e/ou dados relativos aos aspectos operacionais do dispositivo 600. Por exemplo, um sistema de operação 620 pode ser mantido como uma aplicação de computador com o meio legível por computador 614 e executado nos processadores 610. As aplicações de dispositivo 618 podem incluir um gerenciador de dispositivo (por exemplo, uma aplicação de controle, aplicação de software, módulo de processamento e controle de sinal, código que é nativo a um dispositivo específico, uma camada de abstração de hardware para um dispositivo específico, etc.). As aplicações de dispositivo 618 também incluem quaisquer componentes ou módulos de sistema para implementar as modalidades das técnicas aqui descritas.
[0079] Neste exemplo, as aplicações de dispositivo 618 incluemuma aplicação de interface 622 e um módulo de entrada/saída 624 que estão mostrados como módulos de software e/ou aplicações de computador. O módulo de entrada/saída 624 é representativo do software que é utilizado para prover uma interface com um dispositivo configurado para capturar entradas, tal como uma tela de toque, track pad, câmera, microfone, e assim por diante. Alternativamente, ou além disso, a aplicação de interface 622 e o módulo de entrada/saída 624 podem ser implementados como hardware, software, firmware, ou qualquer sua combinação. Além disso, o módulo de entrada/saída 624 pode estar configurado para suportar múltiplos dispositivos de entrada, tal como dispositivos separados para capturar entradas visuais e de áudio, respectivamente.
[0080] O dispositivo 600 também inclui um sistema de entrada -saída de áudio e/ou vídeo 626 que provê dados de áudio para um sistema de áudio 628 e/ou provê dados de vídeo para um sistema de display 630. O sistema de áudio 628 e/ou o sistema de display 630 podem incluir quaisquer dispositivos que processem, exibam, e/ou de outro modo renderizem dados de áudio, vídeo, e imagem. Os sinais de vídeo e os sinais de áudio podem ser comunicados do dispositivo 600 para um dispositivo de áudio e/ou um dispositivo de display através de uma conexão de RF (frequência de rádio), conexão de S-vídeo, conexão de vídeo composto, conexão de vídeo componente, DVI (interface de vídeo digital), conexão de áudio analógico, ou outra conexão de comunicação similar. Em uma modalidade, o sistema de áudio 628 e/ou o sistema de display 630 são implementados como componentes externos ao dispositivo 600. Alternativamente, o sistema de áudio 628 e/ou o sistema de display 630 são implementados como componentes integrados do dispositivo 600 exemplar.
CONCLUSÃO
[0081] Apesar da invenção ter sido descrita em uma linguagemespecífica para características estruturais e/ou atos metodológicos, deve ser compreendido que a invenção definida nas reivindicações anexas não está necessariamente limitada às características específicas ou atos descritos. Ao invés, as características específicas e atos estão descritos como formas exemplares de implementar a invenção reivindicada.

Claims (20)

1. Sistema caracterizado pelo fato de que compreende: um ou mais processadores; eum ou mais dispositivos de armazenamento legíveis por computador tendo um método para:receber uma indicação de que uma parte de uma aplicação está solicitando a transmissão de conteúdo para um elemento de código de um dispositivo de computação, a aplicação incluindo um primeiro compartimento e um segundo compartimento que incluem diferentes partes respectivas do código da aplicação que permitem que diferentes funcionalidades sejam invocadas por Os respectivos compartimentos da aplicação;executar o módulo de inspeção de conteúdo para verificar, com base no mínimo em um identificador para a parte da aplicação, se a parte da aplicação faz parte do primeiro compartimento da aplicação que tem permissão para acessar uma funcionalidade sensível do dispositivo de computação, ou parte do segundo compartimento da aplicação que não possui permissão para acessar a funcionalidade sensível, o primeiro compartimento com um primeiro conjunto de políticas de manipulação de conteúdo e o segundo compartimento com um segundo conjunto de políticas de manipulação de conteúdo, em que o identificador compreende um identificador de recurso uniforme (URI) fornecendo uma designação do primeiro compartimento relacionado a um compartimento armazenado localmente ou do segundo compartimento ser um compartimento armazenado remotamente, de maneira a especificar se a aplicação tem permissão para acessar a funcionalidade sensível do dispositivo de computação; eexecutar o módulo gerenciador de aplicações para aplicar uma das primeiras políticas de tratamento de conteúdo ou o segundo conjunto de políticas de tratamento à solicitação para: (1) determinar se a aplicação indica que o conteúdo não confiável deve ser limpo antes de ser passado para o o elemento de código e (2) passa o conteúdo para o elemento de código com base em se a parte da aplicação que está solicitando a transmissão faz parte do primeiro compartimento ou do segundo compartimento da aplicação, em que a parte da aplicação está sendo permitido ou proibido transmitir o conteúdo ao elemento de código sujeito a um dos primeiros conjuntos de políticas de manipulação de conteúdo ou o segundo conjunto de políticas de manipulação de conteúdo.
2. Sistema, de acordo com a reivindicação 1, caracterizado pelo fato de que os elementos de código compreendem uma de mais de uma função, uma sub-rotina, um método, um parâmetro, uma propriedade ou uma interface.
3. Sistema, de acordo com a reivindicação 1, caracterizado pelo fato de que o primeiro conjunto de políticas de manipulação de conteúdo especifica que o conteúdo com uma fonte remota do dispositivo de computação é um conteúdo não confiável.
4. Sistema, de acordo com a reivindicação 1, caracterizado pelo fato de que o primeiro conjunto de políticas de manipulação de conteúdo especifica que o conteúdo não confiável não possui permissão para incluir código executável.
5. Sistema, de acordo com a reivindicação 1, caracterizado pelo fato de que o primeiro conjunto de políticas de manipulação de conteúdo especifica que, em função da verificação de que o conteúdo inclui conteúdo não confiável e que a parte da aplicação faz parte do primeiro compartimento, o conteúdo não confiável deve ser inspecionado para determinar se o conteúdo não confiável é seguro antes que seja permitido que o conteúdo não confiável seja passado para o elemento de código.
6. Sistema, de acordo com a reivindicação 5, caracterizado pelo fato de que o método é ainda executável por um ou mais processadores para determinar se a aplicação está optando por não fazer a inspeção do conteúdo pelo conteúdo não confiável.
7. Sistema, de acordo com a reivindicação 1, caracterizado pelo fato de que o primeiro conjunto de políticas de manipulação de conteúdo especifica que o conteúdo recuperado localmente do dispositivo de computação deve ser codificado usando um formato de codificação de caracteres específico ou o conteúdo será impedido de ser analisado.
8. Método, caracterizado pelo fato de que compreende as etapas de:detectar que uma parte de uma aplicação em execução em um dispositivo de computação está solicitando a transmissão de conteúdo para um elemento de código do dispositivo de computação, em que o dispositivo de computação compreende um módulo gerenciador de aplicações e um módulo de inspeção de conteúdo;determinar, pelos módulos de inspeção de conteúdo do dispositivo de computação, e com base pelo menos em um identificador para a parte da aplicação, se a parte da aplicação faz parte de um primeiro compartimento da aplicação que tem permissão para acessar uma funcionalidade sensível de o dispositivo de computação ou parte de um segundo compartimento da aplicação que não possui permissão para acessar a funcionalidade sensível, o primeiro compartimento e o segundo compartimento, incluindo diferentes partes respectivas do código da aplicação que permitem que diferentes funcionalidades sejam invocadas pelos respectivos compartimentos da aplicação, em que o identificador compreende um identificador de recurso uniforme (URI) que referencia o primeiro compartimento relacionado a um compartimento armazenado localmente ou o segundo compartimento relacionado a um compartimento armazenado remotamente, de uma maneira que especifica se a aplicação tem permissão para acessar a funcionalidade sensível do dispositivo de computação; eresponsivo à verificação, determinar, pelo módulo gerenciador de aplicações do dispositivo de computação, se a aplicação indica que o conteúdo não confiável deve ser higienizado antes de ser passado para o elemento de código e se deve permitir ou não a solicitação com base na parte da aplicação faz parte do primeiro compartimento ou do segundo compartimento.
9. Método, de acordo com a reivindicação 8, caracterizado pelo fato de que o elemento de código é incluído como parte de um grupo pré-especificado de elementos de código com base no elemento de código que permite acesso à funcionalidade específica do dispositivo de computação.
10. Método, de acordo com a reivindicação 8, caracterizado pelo fato de que o elemento de código compreende pelo menos uma de uma função, uma sub-rotina, um método, um parâmetro, uma propriedade ou uma interface de programação de aplicações (API).
11. Método, de acordo com a reivindicação 8, caracterizado pelo fato de que ainda compreende, em resposta à determinação de que a parte da aplicação faz parte do primeiro compartimento, determinar se é permitido que o conteúdo seja passado para o elemento de código com base em uma fonte do conteúdo e um tipo de conteúdo para o conteúdo.
12. Método, de acordo com a reivindicação 11, caracterizado pelo fato de que ainda compreende determinar que o conteúdo não tem permissão para ser transmitido ao elemento de código com base na determinação de que a fonte do conteúdo é remota do dispositivo de computação e o tipo de conteúdo indica que o conteúdo inclui código executável.
13. Método, de acordo com a reivindicação 8, caracterizado pelo fato de que ainda compreender, em resposta a uma determinação que a parte da aplicação faz parte do primeiro compartimento e que o conteúdo é de uma fonte não confiável, inspecionando o conteúdo para determinar se o conteúdo é seguro ou não seguro para ser passado para o elemento de código.
14. Método, de acordo com a reivindicação 8, caracterizado pelo fato de que ainda compreende impedir que o conteúdo seja passado ao elemento de código em resposta a uma determinação de que a parte da aplicação faz parte do segundocompartimento.
15. Método, de acordo com a reivindicação 8,caracterizado pelo fato de que ainda compreende permitir que o conteúdo seja passado para o elemento de código em resposta à verificação, com base em um indicador de recurso uniforme (URI) que faz referência ao conteúdo, de que a fonte do conteúdo é local para o dispositivo de computação.
16. Método, caracterizado pelo fato de que compreende as etapas de:determinar que uma parte de uma aplicação está solicitando que o conteúdo seja passado para um elemento de código de um dispositivo de computação, em que o dispositivo de computação compreende um módulo gerenciador de aplicações e um módulo de inspeção de conteúdo;determinar, nos módulos de inspeção de conteúdo do dispositivo de computação, e com base em pelo menos um identificador para a parte da aplicação, se a parte da aplicação é uma primeira parte da aplicação que pode invocar o elemento de código ou uma segunda parte da aplicação que não possui permissão para chamar o elemento de código, a primeira parte e a segunda parte da aplicação identificando diferentes conjuntos respectivos de elementos de código que permitem que diferentes funcionalidades respectivas sejam invocadas pelas respectivas partes da aplicação, em que o identificador compreende um identificador de recurso uniforme (URI) que faça referência ao primeiro compartimento relacionado a um compartimento armazenado localmente ou ao segundo compartimento relacionado a um compartimento armazenado remotamente, de maneira a especificar se a aplicação tem permissão para acessar a funcionalidade sensível do dispositivo de computação;determinar, pelo módulo gerenciador de aplicações do dispositivo de computação, que a parte da aplicação é a primeira parte da aplicação que pode invocar o elemento de código; edeterminar, pelo dispositivo de computação, se a aplicação indica que o conteúdo não confiáveldeve ser higienizado antes de ser passado para o elemento de código e se é permitido que o conteúdo seja passado para o elemento de código com base em pelo menos uma fonte de conteúdo ou um tipo de conteúdo para o conteúdo.
17. Método, de acordo com a reivindicação 16, caracterizado pelo fato de que ainda compreende ainda permitir que o conteúdo seja passado para o elemento de código em resposta à verificação, com base em um identificador de recurso uniforme (URI) que faz referência ao conteúdo, de que a fonte do conteúdo é local para o dispositivo de computação.
18. Método, de acordo com a reivindicação 16, caracterizado pelo fato de que ainda compreende impedir que o conteúdo seja passado para o elemento de código com base em verificar que a fonte do conteúdo é remota do dispositivo de computação e que o tipo de conteúdo indica que o conteúdo inclui código executável.
19. Método, de acordo com a reivindicação 16, caracterizado pelo fato de que ainda compreender determinar que a fonte do conteúdo é remota do dispositivo de computação e inspecionar o conteúdo para determinar se o conteúdo é seguro ou não para ser passado ao elemento de código.
20. Método, de acordo com a reivindicação 16, caracterizado pelo fato de que o conjunto de elementos de código associado à primeira parte da aplicação inclui elementos de código permitidos pré-especificados e a verificação pelo dispositivo de computação se o conteúdo pode ser passado ao elemento de código baseia-se ainda nos elementos de código permitido pré-especificados incluídos na primeira parte da aplicação.
BR112014005052-0A 2011-09-07 2012-09-04 Sistema e método para manipulação de conteúdo para aplicações BR112014005052B1 (pt)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/227,201 US10445528B2 (en) 2011-09-07 2011-09-07 Content handling for applications
US13/227,201 2011-09-07
PCT/US2012/053620 WO2013036470A1 (en) 2011-09-07 2012-09-04 Content handling for applications

Publications (3)

Publication Number Publication Date
BR112014005052A2 BR112014005052A2 (pt) 2017-03-21
BR112014005052A8 BR112014005052A8 (pt) 2018-02-06
BR112014005052B1 true BR112014005052B1 (pt) 2021-09-08

Family

ID=47754187

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112014005052-0A BR112014005052B1 (pt) 2011-09-07 2012-09-04 Sistema e método para manipulação de conteúdo para aplicações

Country Status (11)

Country Link
US (1) US10445528B2 (pt)
EP (1) EP2754082B1 (pt)
JP (1) JP2014525638A (pt)
KR (1) KR101977428B1 (pt)
CN (1) CN103765431B (pt)
AU (1) AU2012304788B2 (pt)
BR (1) BR112014005052B1 (pt)
CA (1) CA2846877C (pt)
MX (1) MX351857B (pt)
RU (1) RU2626658C2 (pt)
WO (1) WO2013036470A1 (pt)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103117992A (zh) * 2012-09-10 2013-05-22 微软公司 应用的内容处理
US10009379B2 (en) * 2014-12-23 2018-06-26 Peter W. J. Jones Systems and methods for sterilizing email attachments and other communications delivered by email
US9785721B2 (en) * 2014-12-30 2017-10-10 Yahoo Holdings, Inc. System and method for programmatically creating resource locators
CN108351787B (zh) * 2015-08-20 2021-10-15 谷歌有限责任公司 与移动应用相关联的内容项目的基于装置的过滤
US12019733B2 (en) * 2022-03-11 2024-06-25 Intel Corporation Compartment isolation for load store forwarding

Family Cites Families (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6505300B2 (en) * 1998-06-12 2003-01-07 Microsoft Corporation Method and system for secure running of untrusted content
US7051366B1 (en) * 2000-06-21 2006-05-23 Microsoft Corporation Evidence-based security policy manager
US6981281B1 (en) * 2000-06-21 2005-12-27 Microsoft Corporation Filtering a permission set using permission requests associated with a code assembly
US7047562B2 (en) * 2001-06-21 2006-05-16 Lockheed Martin Corporation Conditioning of the execution of an executable program upon satisfaction of criteria
BR0211884A (pt) 2001-08-13 2004-09-21 Qualcomm Inc Uso de permissões para alocar recursos de dispositivo para um aplicativo
US7216160B2 (en) * 2001-10-31 2007-05-08 Sun Microsystems, Inc. Server-based application monitoring through collection of application component and environmental statistics
US7242773B2 (en) * 2002-09-09 2007-07-10 Sony Corporation Multiple partial encryption using retuning
US7308648B1 (en) * 2002-11-27 2007-12-11 Microsoft Corporation Method, system, and computer-readable medium for filtering harmful HTML in an electronic document
JP3823925B2 (ja) 2003-02-05 2006-09-20 ソニー株式会社 情報処理装置、ライセンス情報記録媒体、および情報処理方法、並びにコンピュータ・プログラム
US20040260754A1 (en) * 2003-06-20 2004-12-23 Erik Olson Systems and methods for mitigating cross-site scripting
WO2005043360A1 (en) * 2003-10-21 2005-05-12 Green Border Technologies Systems and methods for secure client applications
US7774620B1 (en) * 2004-05-27 2010-08-10 Microsoft Corporation Executing applications at appropriate trust levels
US8037527B2 (en) * 2004-11-08 2011-10-11 Bt Web Solutions, Llc Method and apparatus for look-ahead security scanning
US20060236100A1 (en) * 2005-04-19 2006-10-19 Guruprasad Baskaran System and method for enhanced layer of security to protect a file system from malicious programs
US7624111B2 (en) 2005-06-27 2009-11-24 Microsoft Corporation Active content trust model
US20070107057A1 (en) * 2005-11-10 2007-05-10 Docomo Communications Laboratories Usa, Inc. Method and apparatus for detecting and preventing unsafe behavior of javascript programs
US8045958B2 (en) * 2005-11-21 2011-10-25 Research In Motion Limited System and method for application program operation on a wireless device
US20070156871A1 (en) * 2005-12-30 2007-07-05 Michael Braun Secure dynamic HTML pages
US9356935B2 (en) 2006-09-12 2016-05-31 Adobe Systems Incorporated Selective access to portions of digital content
US7895296B1 (en) 2006-12-29 2011-02-22 Google, Inc. Local storage for web based native applications
US8584232B2 (en) * 2007-04-23 2013-11-12 Sap Ag Enhanced cross-site attack prevention
JP4395178B2 (ja) * 2007-05-29 2010-01-06 インターナショナル・ビジネス・マシーンズ・コーポレーション コンテンツ処理システム、方法及びプログラム
US10019570B2 (en) 2007-06-14 2018-07-10 Microsoft Technology Licensing, Llc Protection and communication abstractions for web browsers
US8181246B2 (en) * 2007-06-20 2012-05-15 Imperva, Inc. System and method for preventing web frauds committed using client-scripting attacks
US20090064337A1 (en) * 2007-09-05 2009-03-05 Shih-Wei Chien Method and apparatus for preventing web page attacks
US9906549B2 (en) * 2007-09-06 2018-02-27 Microsoft Technology Licensing, Llc Proxy engine for custom handling of web content
US20090119769A1 (en) * 2007-11-05 2009-05-07 Microsoft Corporation Cross-site scripting filter
US8650648B2 (en) * 2008-03-26 2014-02-11 Sophos Limited Method and system for detecting restricted content associated with retrieved content
US8220050B2 (en) * 2008-03-31 2012-07-10 Sophos Plc Method and system for detecting restricted content associated with retrieved content
US8806618B2 (en) * 2008-03-31 2014-08-12 Microsoft Corporation Security by construction for distributed applications
US9058483B2 (en) 2008-05-08 2015-06-16 Google Inc. Method for validating an untrusted native code module
US8387152B2 (en) 2008-06-27 2013-02-26 Microsoft Corporation Attested content protection
US20100058467A1 (en) 2008-08-28 2010-03-04 International Business Machines Corporation Efficiency of active content filtering using cached ruleset metadata
JP2010092376A (ja) 2008-10-10 2010-04-22 Softbank Mobile Corp 情報処理装置、情報処理方法及び情報処理プログラム
CN101788982B (zh) * 2009-01-22 2013-03-06 国际商业机器公司 在未修改浏览器上保护Web应用的跨域交互的方法和系统
EP2222081A1 (en) 2009-02-19 2010-08-25 Thomson Licensing Methods and devices for digital content protection
US8413139B2 (en) 2009-03-11 2013-04-02 Microsoft Corporation Programming model for application and data access and synchronization within virtual environments
KR101651283B1 (ko) 2009-11-13 2016-08-26 삼성전자 주식회사 컨텐츠제공시스템 및 그 컨텐츠제공방법, 디스플레이장치 및 그 제어방법
US8719939B2 (en) 2009-12-31 2014-05-06 Mcafee, Inc. Malware detection via reputation system

Also Published As

Publication number Publication date
EP2754082B1 (en) 2020-09-23
CN103765431A (zh) 2014-04-30
EP2754082A4 (en) 2015-05-27
RU2626658C2 (ru) 2017-07-31
EP2754082A1 (en) 2014-07-16
RU2014108837A (ru) 2015-09-20
BR112014005052A8 (pt) 2018-02-06
AU2012304788A1 (en) 2014-03-20
CA2846877A1 (en) 2013-03-14
MX351857B (es) 2017-10-31
US20130061282A1 (en) 2013-03-07
CN103765431B (zh) 2016-11-16
WO2013036470A1 (en) 2013-03-14
AU2012304788B2 (en) 2016-12-08
JP2014525638A (ja) 2014-09-29
KR101977428B1 (ko) 2019-08-28
US10445528B2 (en) 2019-10-15
KR20140068940A (ko) 2014-06-09
BR112014005052A2 (pt) 2017-03-21
MX2014002785A (es) 2014-06-05
CA2846877C (en) 2020-08-04

Similar Documents

Publication Publication Date Title
US9390241B2 (en) Method for executing an application in a restricted operating environment
Georgiev et al. Breaking and fixing origin-based access control in hybrid web/mobile application frameworks
JP4769304B2 (ja) オペレーティングシステム非依存型データ管理
JP5296106B2 (ja) セキュアなブラウザベースのアプリケーション
Tuncay et al. Draco: A system for uniform and fine-grained access control for web code on android
US8646044B2 (en) Mandatory integrity control
BR112014005052B1 (pt) Sistema e método para manipulação de conteúdo para aplicações
US20120151552A1 (en) Domain-based isolation and access control on dynamic objects
EP3314499B1 (en) Temporary process deprivileging
Yang et al. Toward principled browser security
Petracca et al. On risk in access control enforcement
US8732830B2 (en) Scripting engine externalized function execution control
JP2014525638A5 (pt)
Wang et al. Towards a better super-app architecture from a browser security perspective
CN115344834A (zh) 应用安全运行方法、装置、电子设备和计算机可读介质
Chang et al. Towards a multilayered permission‐based access control for extending Android security
JP2006216038A (ja) セキュリティクリティカルデータコンテナ
US9223976B2 (en) Content inspection
KR100985073B1 (ko) 네트워크 공유폴더 접근 제어 장치 및 방법
US8640244B2 (en) Declared origin policy
US20150302196A1 (en) Local System Health Assessment
Xue et al. A privacy protection model for transparent computing system
Ismail et al. An Investigation into Access Control in Various Types of Operating Systems
Schöni et al. Automatically Retrofitting Cordova Applications for Stricter Content Security Policies
da Silva XS-Leaks protections deployment and Development of a Configurable Fetchmetadata Middleware

Legal Events

Date Code Title Description
B25A Requested transfer of rights approved

Owner name: MICROSOFT TECHNOLOGY LICENSING, LLC (US)

B15K Others concerning applications: alteration of classification

Ipc: G06F 21/62 (2013.01), G06F 21/53 (2013.01), G06F 2

B06F Objections, documents and/or translations needed after an examination request according [chapter 6.6 patent gazette]
B06U Preliminary requirement: requests with searches performed by other patent offices: procedure suspended [chapter 6.21 patent gazette]
B09A Decision: intention to grant [chapter 9.1 patent gazette]
B16A Patent or certificate of addition of invention granted [chapter 16.1 patent gazette]

Free format text: PRAZO DE VALIDADE: 20 (VINTE) ANOS CONTADOS A PARTIR DE 04/09/2012, OBSERVADAS AS CONDICOES LEGAIS.