KR20140068940A - 애플리케이션용 콘텐츠 핸들링 기법 - Google Patents

애플리케이션용 콘텐츠 핸들링 기법 Download PDF

Info

Publication number
KR20140068940A
KR20140068940A KR20147006153A KR20147006153A KR20140068940A KR 20140068940 A KR20140068940 A KR 20140068940A KR 20147006153 A KR20147006153 A KR 20147006153A KR 20147006153 A KR20147006153 A KR 20147006153A KR 20140068940 A KR20140068940 A KR 20140068940A
Authority
KR
South Korea
Prior art keywords
content
computing device
code
application
code element
Prior art date
Application number
KR20147006153A
Other languages
English (en)
Other versions
KR101977428B1 (ko
Inventor
데이비드 엘 쥬니어 리스니
스코트 비 그레이엄
마티아스 주다인
세르메 이스킨
데이비드 앤드류 로스
Original Assignee
마이크로소프트 코포레이션
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 마이크로소프트 코포레이션 filed Critical 마이크로소프트 코포레이션
Publication of KR20140068940A publication Critical patent/KR20140068940A/ko
Application granted granted Critical
Publication of KR101977428B1 publication Critical patent/KR101977428B1/ko

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
    • 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/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
    • 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
    • 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
    • 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
    • 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)
  • Storage Device Security (AREA)
  • Information Transfer Between Computers (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Abstract

애플리케이션용 콘텐츠 핸들링에 대한 기술에 대해 설명한다. 하나 이상의 구현예에서, 컴퓨팅 디바이스의 코드 요소들을 실행시키도록 허용되는 애플리케이션의 제 1 부분에 대해 제 1 콘텐츠 핸들링 정책 세트가 시행되고, 상기 코드 요소들을 실행시키도록 허용되지 않는 애플리케이션의 제 2 부분에 대해 제 2 콘텐츠 핸들링 정책 세트가 시행된다. 또한, 애플리케이션의 어떤 부분이 콘텐츠를 요청하고 있는지에 기초하여, 제 1 콘텐츠 핸들링 정책 세트 또는 제 2 콘텐츠 핸들링 정책 세트를 콘텐츠에 적용할지를 결정한다.

Description

애플리케이션용 콘텐츠 핸들링 기법{CONTENT HANDLING FOR APPLICATIONS}
오늘날의 컴퓨터 사용자는 비디오 콘텐츠, 오디오 콘텐츠, 텍스트 콘텐츠 등과 같은 매우 다양한 콘텐츠에 액세스한다. 그러나, 모든 콘텐츠가 컴퓨팅 디바이스 상에서 소비되기에 안전한 것은 아니다. 예컨대, 일부 콘텐츠는, 실행시에 컴퓨팅 디바이스의 특정 부분 및/또는 사용자에 대한 사적인 정보로의 비승인 액세스(unauthorized access)를 얻을 수 있는 악의적인 실행 코드(예를 들어, 멀웨어(malware))를 포함할 수 있다.
이러한 비승인 액세스를 악의적인 실행 코드가 얻지 못하게 하기 위한 기술들이 존재하지만, 이들 기술들은 통상적으로 오늘날의 콘텐츠 개발자의 요구사항들을 고려하고 있지 않다. 예컨대, 콘텐츠 개발자는 컴퓨팅 디바이스를 통해 원격 콘텐츠(예를 들어, 웹 콘텐츠)를 액세스할 수 있는 애플리케이션을 개발할 수 있다. 현재의 기술들은, 통상, 원격 콘텐츠가 컴퓨팅 디바이스로의 액세스를 허용받게 될지를 결정함에 있어서 상기 원격 콘텐츠가 컴퓨팅 디바이스를 통해서 어떻게 프로세싱될 것인지에 대해 고려하고 있지 않다. 또한, 현재의 기술들은, 통상, 원격 콘텐츠의 특정 인스턴스들이 컴퓨팅 디바이스로의 액세스를 허용받게 됨을 콘텐츠 개발자가 명시할 수 없게 하고 있다.
애플리케이션용 콘텐츠 핸들링을 위한 기술이 요구된다. 하나 이상의 구현예에서, 제 1 콘텐츠 핸들링 정책 세트는 컴퓨팅 디바이스의 코드 요소(code elements)를 실행시키도록 허가되는 애플리케이션의 제 1 부분을 위해 시행되고, 제 2 콘텐츠 핸들링 정책 세트는 코드 요소를 실행시키도록 허가되지 않는 애플리케이션의 제 2 부분을 위해 시행된다. 제 1 콘텐츠 핸들링 정책 세트 또는 제 2 콘텐츠 핸들링 정책 세트를 콘텐츠에 적용할지에 관한 결정은 애플리케이션의 어떤 부분이 콘텐츠를 요청하고 있는지에 기초하여 이루어진다.
하나 이상의 구현예에서, 컴퓨팅 디바이스 상에서 실행중인 애플리케이션이 컴퓨팅 디바이스의 코드 요소에 콘텐츠를 전달하라는 요청을 포함하고 있음이 검출된다. 검출에 응답하여, 요청이 코드 요소를 실행시키도록 허가되는 애플리케이션의 부분으로부터의 것인지에 기초하여 요청을 허용할지가 결정된다.
하나 이상의 구현예에서, 코드 요소에 콘텐츠를 전달하라는 애플리케이션으로부터의 요청이 코드 요소를 실행시키도록 허가되는 애플리케이션의 부분으로부터의 것이라고 컴퓨팅 디바이스에서 결정된다. 상기 콘텐츠의 소스 또는 상기 콘텐츠의 콘텐츠 타입 중 적어도 하나에 기초하여 상기 콘텐츠가 코드 요소에 전달될 수 있는지가 확정된다.
이러한 개시는 이하 상세한 설명에서 추가로 설명되는 개념들의 선택을 단순화된 형태로 도입하기 위해 제공된 것이다. 이러한 개시는 청구대상의 주요 특징 또는 필수 특징을 확인하기 위한 것이 아니며, 또한 청구대상의 범위의 결정을 돕기 위해 사용된 것도 아니다.
상세한 설명은 첨부 도면을 참조하여 설명된다. 도면에서, 참조번호의 가장 왼쪽 번호는 참조번호가 최초로 나타나는 도면을 식별한다. 명세서 및 도면에서의 상이한 예에서 동일한 참조번호의 사용은 유사 또는 동일한 항목을 지칭할 수 있다.
도 1은 애플리케이션용 콘텐츠 핸들링을 위한 기술을 채택하도록 동작가능한 예시적인 구현예에서의 환경을 도시하고 있다.
도 2는 콘텐츠 핸들링 정책들이 시행되는 예시적인 구현예에서의 절차를 도시하는 흐름도이다.
도 3은 코드 요소에 콘텐츠를 전달하라는 요청을 허용할지에 관한 결정이 이루어지는 예시적인 구현예에서의 절차를 도시하는 흐름도이다.
도 4는 콘텐츠가 코드 요소에 전달될 수 있는지에 관한 결정이 이루어지는 예시적인 구현예에서의 절차를 도시하는 흐름도이다.
도 5는 도 1 및 도 6참조하여 설명되는 바와 같은 컴퓨팅 디바이스를 포함하는 예시적인 시스템을 도시한다.
도 6은 본 명세서에서 설명되는 기술들의 실시예를 구현하기 위해 도 1 및 도 5를 참조하여 설명되는 바와 같은 임의의 타입의 휴대용 및/또는 컴퓨터 디바이스로서 구현될 수 있는 예시적인 디바이스의 다양한 구성요소를 도시한다.
컴퓨팅 디바이스는 매우 다양한 소스로부터의 매우 다양한 콘텐츠로의 액세스를 가질 수 있다. 그러나, 일부 소스들은 미지(unknown)일 수 있기 때문에, 그러한 소스들로부터의 콘텐츠는 신뢰될 수 없다. 또한, 일부 타입의 콘텐츠는 본질적으로 보안 위험과 연관되어 있어서 그러한 콘텐츠가 컴퓨팅 디바이스의 일정 부분에 액세스하는 것을 허용하기 전에 주의를 기울여야 한다.
소정의 시나리오에서, 사용자(예를 들어, 애플리케이션 개발자)는 미지의 소스로부터의 콘텐츠를 액세스하길 원할 수 있다. 예컨대, 사용자는, 컴퓨팅 디바이스 상에서의 실행시에, 컴퓨팅 디바이스로부터 원격이고 및/또는 컴퓨팅 디바이스에 대해 미지인 리소스로부터의 콘텐츠를 액세스하려고 시도하는 애플리케이션을 라이팅할 수 있다. 이러한 콘텐츠는 텍스트 콘텐츠, 픽처, 비디오, 오디오 등을 포함할 수 있다. 여기서 논의되는 기술들은 안전하지 못한 콘텐츠가 컴퓨팅 디바이스의 민감한 부분들 및/또는 기능들로의 비승인 액세스를 얻지 못하게 하면서 그러한 콘텐츠가 애플리케이션에 의해 사용되도록 할 수 있다.
따라서, 애플리케이션용 콘텐츠 핸들링을 위한 기술들이 설명된다. 하나 이상의 구현예에서, 기술들은 악의적인 코드(예를 들어, 멀웨어)가 컴퓨팅 디바이스의 민감한 부분들에 액세스할 수 있는 가능성을 줄이기 위해 채택될 수 있다. 이는, 애플리케이션의 기능들을 로컬 구획(local compartment) 및 원격 구획(remote compartment)으로 구분하는 것과 같은 다양한 방식으로 수행될 수 있다. 구현예에서, 로컬 구획과 연관된 기능들은 애플리케이션이 시스템 레벨의 애플리케이션 프로그래밍 인터페이스(API)와 같은 컴퓨팅 디바이스의 민감한 부분들에 액세스할 수 있도록 한다. 따라서, 안전하지 못한 콘텐츠가 컴퓨팅 디바이스의 민감한 부분들로의 액세스를 얻지 못하게 하기 위해 콘텐츠 제약이 로컬 구획에서 시행될 수 있다. 또한, 원격 구획과 연관된 기능들은 컴퓨팅 디바이스의 민감한 부분들에 액세스할 수 없게 되기 때문에, 비신뢰적이며(untrusted) 및/또는 안전하지 못한 콘텐츠를 액세스하도록 허가될 수 있다.
이하의 논의에서, 예시적인 환경은 먼저 본 명세서에서 설명되는 애플리케이션용 콘텐츠 핸들링을 위한 기술들을 채택하도록 동작가능한 것으로 설명된다. 다음으로, 안전하지 못한 콘텐츠가 컴퓨팅 디바이스의 민감한 부분들에 액세스하지 못하게 하기 위한 예시적인 콘텐츠 핸들링 정책들을 설명한다. 그 후에, 상기 예시적인 환경뿐만 아니라 다른 환경에서도 채택될 수 있는 애플리케이션용 콘텐츠 핸들링을 위한 기술들이 연관된 예시적인 절차들을 설명한다. 따라서, 예시적인 환경은 예시적인 절차들을 수행하는 것에 한정되는 것은 아니다. 마찬가지로, 예시적인 절차들은 예시적인 환경에서의 구현에 한정되는 것은 아니다.
예시적인 환경
도 1은 애플리케이션용 콘텐츠 핸들링을 위한 기술들을 채택하도록 동작가능한 예시적인 구현예에서의 환경(100)을 도시한다. 환경(100)은 하나 이상의 프로세서(104), 하나 이상의 컴퓨터 판독가능 저장 매체(106), 컴퓨터 판독가능 저장 매체(106) 상에 있으며 프로세서(104)에 의해 실행될 수 있는 하나 이상의 애플리케이션들(108)을 갖는 컴퓨팅 디바이스(102)를 포함한다. 컴퓨팅 디바이스(102)는 제한되진 않지만 예로서 데스크탑 컴퓨터, 휴대용 컴퓨터, PDA와 같은 핸드헬드 컴퓨터, 핸드폰, 태블릿 컴퓨터 등의 임의의 적절한 컴퓨팅 디바이스로서 구현될 수 있다. 컴퓨팅 디바이스(102)의 다양한 상이한 예들 중 하나는 이하 도 5 및 도 6에서 도시 및 설명된다.
도 1의 컴퓨팅 디바이스(102)는 또한 네트워크(112)를 통해 탐색하도록 구성되는 기능을 나타내는 브라우저(110), 예를 들어 웹 브라우저를 포함하는 것으로 도시되어 있다. 네트워크(112)가 인터넷으로 도시되어 있지만, 네트워크는 매우 다양한 구성을 가정할 수 있다. 예컨대, 네트워크(112)는 WAN(wide area network), LAN(local area network), 무선 네트워크, PTN(public telephone network), 인트라넷 등을 포함할 수 있다. 또한, 단일 네트워크(112)가 도시되지만, 네트워크(112)는 다수의 네트워크를 포함하도록 구성될 수도 있다.
예컨대, 브라우저(110)는 하나 이상의 웹 리소스(114)에 데이터를 전달할 뿐만 아니라 하나 이상의 웹 리소스(114)로부터 이용가능한 콘텐츠와 상호동작하기 위해, 예를 들어 다운로드 및 업로드를 수행하기 위해 네트워크(112)를 거쳐 탐색하도록 구성될 수 있다. 웹 리소스(114)는 네트워크(112)를 거쳐 액세스 가능한 콘텐츠를 제공하도록 구성되는 임의의 적절한 컴퓨팅 리소스를 포함할 수 있다. 그러한 콘텐츠의 예로는 웹페이지, 텍스트 콘텐츠, 비디오, 오디오 등을 포함한다.
또한, 하나 이상의 애플리케이션들(108)은 예를 들어 그들 자신들에게 직접 및/또는 브라우저(110)를 통해 네트워크(112)에 액세스하도록 구성될 있다. 예컨대, 하나 이상의 애플리케이션들(108)은 콘텐츠를 검색 및/또는 업로드하기 위해 하나 이상의 웹 리소스(114)에 액세스하도록 구성될 수 있다. 따라서, 애플리케이션들(108)은 직접적인 또는 간접적인 네트워크(112) 액세스를 수반할 수 있는 다양한 기능을 위해 구성될 수도 있다. 예를 들어, 애플리케이션들(108)은 그 애플리케이션들(108)에 의해 국부적으로 활용될 수 있을 뿐만 아니라 다른 컴퓨팅 디바이스 상에서 실행되는 애플리케이션들과 동기화될 수 있는 구성 세팅(configuration settings) 및 다른 데이터를 포함할 수 있다. 이에 의해, 이들 세팅은 디바이스들에 의해 공유될 수 있다. 다양한 다른 예들도 고려된다. 따라서, 컴퓨팅 디바이스(102)는 다양한 상이한 소스로부터 다양한 방식으로 콘텐츠와 상호동작할 수 있다.
컴퓨팅 디바이스(102)의 일부로서 추가로 도시된 것은 컴퓨팅 디바이스(102)의 리소스를 관리하고 컴퓨팅 디바이스(102)의 기능으로의 액세스를 제공하는 기능을 나타내는 오퍼레이팅 시스템(116)이다. 컴퓨팅 디바이스(102)는 또한 애플리케이션들(108)의 활동을 모니터 및 구별하는 컴퓨팅 디바이스(102)의 기능을 나타내는 애플리케이션 관리자 모듈(118)을 포함하는 것으로 도시된다. 하나 이상의 구현예에서, 애플리케이션 관리자 모듈(118)은 동작이 신뢰적인 콘텐츠 또는 비신뢰적인 콘텐츠를 활용하는지에 기초하여 애플리케이션들(108)의 특정 동작을 허용하거나 불허하도록 구성된다.
애플리케이션들(108)의 일부로서 도시된 것은 컴퓨팅 디바이스(102)에 대해 알려진 데이터를 신뢰될 수 있는 콘텐츠 및/또는 신뢰될 수 있는 소스로부터 수신된 콘텐츠로서 나타내는 신뢰 콘텐츠(120)이다. 또한, 웹 리소스(114)는 콘텐츠의 소스 및/또는 콘텐츠의 특성에 기초하여 신뢰될 수 없는 콘텐츠를 나타내는 비신뢰 콘텐츠(122)를 포함하는 것으로 도시되어 있다. 하나 이상의 구현예에서, 애플리케이션 관리자 모듈(118)은 콘텐츠의 소스에 기초하여 콘텐츠가 신뢰될 수 있는지를 결정하도록 구성될 수 있다. 예컨대, 콘텐츠가 컴퓨팅 디바이스(102)에 대해 내부에 있는 소스로부터(예를 들어, 신뢰 콘텐츠(120)로부터) 수신되면, 애플리케이션 관리자 모듈(118)은 콘텐츠가 신뢰될 수 있다고 파악할 수 있다. 또한, 콘텐츠가 컴퓨팅 디바이스(102)에 대해 외부에 있거나 및/또는 미지의 소스로부터(예를 들어, 비신뢰 콘텐츠(122)로부터) 수신되면, 애플리케이션 관리자 모듈(118)은 콘텐츠가 비신뢰적이라고 파악할 수 있다.
애플리케이션들(108)의 일부로서 추가로 도시된 것은 로컬 구획(124) 및 원격 구획(126)이다. 구현예에서, 로컬 구획(124)은 컴퓨팅 디바이스(102)의 민감한 일정 기능들에 액세스하도록 허용된 애플리케이션들(108)의 부분을 나타낸다. 예컨대, 로컬 구획(124)은 실행시에 컴퓨팅 디바이스(102)에 대해 외부에 있는 엔티티들에 의해 액세스되는 것으로부터 통상적으로 보호되는 컴퓨팅 디바이스(102)의 기능들 및/또는 부분들을 실행시키거나 및/또는 액세스하도록 허용될 수 있는 애플리케이션 코드를 포함한다. 원격 구획(126)은 컴퓨팅 디바이스(102)의 민감한 일정 기능들에 액세스하도록 허용되지 않는 애플리케이션들(108)의 부분을 나타낸다. 예컨대, 원격 구획(126)에 포함되는 애플리케이션 코드는, 실행시에, 컴퓨팅 디바이스(102)의 민감한 기능들에 액세스하지 못하게 할 수 있다.
애플리케이션 관리자 모듈(118)의 일부로서 추가로 도시된 것은 허용된 코드 요소들(128) 및 필터링된 코드 요소들(130)이다. 허용된 코드 요소들(128) 및 필터링된 코드 요소들(130)는 컴퓨팅 디바이스(102)를 통해 하나 이상의 태스크를 수행하기 위해 애플리케이션들(108)에 의해 액세스될 수 있는 컴퓨팅 디바이스(102)의 기능들에 대한 식별자를 나타낸다. 코드 요소의 예로는 함수, 서브루틴, 방법, 파라미터, 속성, 인터페이스(예를 들어, 애플리케이션 프로그래밍 인터페이스(API)) 등을 포함한다. 하나 이상의 구현예에서, 허용된 코드 요소들(128) 및/또는 필터링된 코드 요소들(130)에 의해 식별되는 특정의 코드 요소는 컴퓨팅 디바이스(102)의 민감한 부분들, 예컨대 오퍼레이팅 시스템(116)에 의해 제공되는 기능들, 사용자 콘텐츠 파일, 사적인 사용자 정보 등으로의 액세스를 제공할 수 있다. 허용된 코드 요소들(128) 및 필터링된 코드 요소들(130)의 일부로서 열거되는 예들은 단지 예시를 위해 제시된 것이며, 임의의 기능 및/또는 컴퓨팅 디바이스(102)의 일부가 허용된 코드 요소들(128) 및/또는 필터링된 코드 요소들(130)의 일부로서 포함될 수 있음을 이해해야 할 것이다.
컴퓨팅 디바이스(102) 상에서 이용가능한 코드 요소들을 허용된 코드 요소들(128) 및 필터링 코드 요소(130)로 나누는 것은 애플리케이션들(108)이 컴퓨팅 디바이스(102)의 민감한 부분들을 안전하지 못한 콘텐츠에 부주의하게 노출시키지 못하게 돕는다. 예컨대, 허용된 코드 요소들(128)은 일반적으로 컴퓨팅 디바이스(102)를 통해 다양한 동작을 수행하는 데 제약 없이 로컬 구획(124)에 의해 실행될 수 있는 코드 요소를 포함한다. 필터링된 코드 요소들(130)로의 액세스는 안전하지 못한 콘텐츠가 필터링된 코드 요소들(130)에 액세스할 수 있게 하는 것을 막기 위해 콘텐츠 검사를 받을 수 있다. 예컨대, 애플리케이션들(108)이 콘텐츠를 프로세싱하기 위해 필터링된 코드 요소들(130) 중 하나를 실행시키는 경우, 필터링된 코드 요소들(130)의 하나에 콘텐츠가 전달될 수 있도록 하기 전에 콘텐츠가 안전함을 보장하기 위해 콘텐츠를 검사한다.
애플리케이션 관리자 모듈(118)은 코드 요소가 필터링된 코드 요소들(130)의 일부로서 포함되는 것인지를 결정하기 위한 기준을 포함할 수 있다. 예컨대, 애플리케이션 관리자 모듈(118)은, 특정 코드 요소가 콘텐츠로 하여금 컴퓨팅 디바이스(102)의 문서 객체 모델(DOM; document object model)(예를 들어, 브라우저(110)와 연관된 HTML(hypertext markup language) DOM 기능)을 조작 및/또는 액세스할 수 있게 하면, 특정 코드 요소가 필터링된 코드 요소들(130)의 일부로서 포함된다고 명시할 수 있다.
구현예에서, 원격 구획(126)은 허용된 코드 요소들(128) 또는 필터링된 코드 요소들(130)에 액세스하도록 허가되지 않는다. 이에 의해, 원격 구획(126)으로부터 액세스되는 안전하지 못한 콘텐츠가, 허용된 코드 요소들(128) 또는 필터링된 코드 요소들(130)를 통해 컴퓨팅 디바이스(102)의 민감한 부분들에 액세스하는 것을 막을 수 있다.
또한, 도시된 예에서의 컴퓨팅 디바이스(102)는 콘텐츠 검사 모듈(132)을 포함하는 것으로 나타내어진다. 콘텐츠 검사 모듈(132)은 컴퓨팅 디바이스(102)에 의해 예를 들어 애플리케이션들(108) 및/또는 브라우저(110)를 통해 요청되고 및/또는 검색되는 콘텐츠를 검사하기 위한 컴퓨팅 디바이스(102)의 기능을 나타낸다. 하나 이상의 구현예에서, 콘텐츠 검사 모듈(132)은, 콘텐츠가 필터링된 코드 요소들(130)의 하나에 전달될 수 있도록 하기 전에 그 콘텐츠가 안전한 것인지를 결정하기 위해 콘텐츠를 검사하도록 구성된다.
콘텐츠 검사 모듈(132)은 콘텐츠(예를 들어, 신뢰 콘텐츠(120) 및/또는 비신뢰 콘텐츠(122))가 안전한지 또는 안전하지 못한지를 결정하기 위해 콘텐츠 검사 모듈(132)에 의해 사용될 수 있는 콘텐츠 검사 정책(134)을 포함한다. 예컨대, 콘텐츠 검사 정책(134)은, 콘텐츠가 하나 이상의 기준을 충족하면 그 콘텐츠는 안전하지 못한 것으로 간주된다고 명시할 수 있다. 구현예에서, 콘텐츠 검사 정책(134)은, 비신뢰 콘텐츠가 컴퓨팅 디바이스(102) 상에서 및/또는 컴퓨팅 디바이스(102)에 의해 실행될 수 있는 실행 코드(예를 들어, 스크립트)를 포함하는 경우 그 비신뢰 콘텐츠가 안전하지 못하다고 명시할 수 있다. 이러한 실행 코드는, 실행시에, 오퍼레이팅 시스템(116)의 기능, 컴퓨팅 디바이스(102)의 사용자와 연관된 사적인 정보 등과 같은 컴퓨팅 디바이스(102)의 부분들로의 비승인된 액세스를 가능하게 할 수 있다.
본 명세서에서는 실행 코드를 포함하는 안전하지 못한 콘텐츠와 관련해서 구현예가 논의되지만, 콘텐츠가 안전한지 또는 안전하지 못한지를 결정하는 데 사용될 수 있는 다양한 상이한 기준 및 필터를 콘텐츠 검사 정책(134)이 포함할 수 있음을 이해해야 할 것이다. 예컨대, 콘텐츠가 안전하지 못한지를 결정하기 위해 콘텐츠 검사 정책(134)이 사용할 수 있는 다른 기준은, 안전하지 못한 것으로 간주되는 지시(indications), 예를 들어 특정한 웹 사이트, 콘텐츠 타입, 파일 타입, 웹 도메인 등을 포함한다.
콘텐츠 검사 모듈(132)이 콘텐츠가 안전하지 못하다고 결정하면, 안전하지 못한 콘텐츠는 필터링된 코드 요소들(130)의 특정 코드 요소에 전달되지 못하게 된다. 반대로, 콘텐츠가 안전한 것으로 결정되면, 콘텐츠는 특정 코드 요소에 전달될 수 있다.
일반적으로, 본 명세서에서 설명되는 기능들 중 어떤 것들은 소프트웨어, 펌웨어, 하드웨어(예를 들어, 고정 로직 회로), 또는 이들 구현예의 조합을 사용하여 구현될 수 있다. 본 명세서에서 사용되는 "모듈", "기능" 및 "로직"의 용어는 일반적으로 소프트웨어, 펌웨어, 하드웨어, 또는 이들의 조합을 나타낸다. 소프트웨어 구현의 경우에, 모듈, 기능, 또는 로직은 프로세서(예를 들어, CPU 또는 CPU들) 상에서의 실행시에 지정된 태스크를 수행하는 프로그램 코드를 나타낸다. 프로그램 코드는 하나 이상의 컴퓨터 판독가능 메모리 디바이스에 저장될 수 있다. 이하에 설명되는 기술들의 특징은 플랫폼 독립적(plarform-independent)이며, 이는 다수의 프로세서를 갖는 다양한 상업적 컴퓨팅 플랫폼 상에서 기술들이 구현될 수 있음을 의미한다.
예컨대, 컴퓨팅 디바이스(102)는 또한 컴퓨팅 디바이스(102)의 하드웨어, 예를 들어 프로세서, 기능 블록 등으로 하여금 동작을 수행하게 하는 엔티티(예를 들어, 소프트웨어)를 포함할 수도 있다. 예컨대, 컴퓨팅 디바이스(102)는, 컴퓨팅 디바이스로 하여금 보다 구체적으로는 컴퓨팅 디바이스(102)의 하드웨어로 하여금 동작을 수행하게 하는 명령을 유지하도록 구성될 수 있는 컴퓨터 판독가능 매체를 포함할 수 있다. 따라서, 동작을 수행하기 위해 하드웨어를 구성하도록 명령이 기능하고, 이에 의해 기능을 수행하기 위해 하드웨어의 변형이 야기된다. 명령은 컴퓨터 판독가능 매체에 의해 다수의 상이한 구성을 통해 컴퓨팅 디바이스(102)에 제공될 수 있다.
컴퓨터 판독가능 매체의 하나의 구성은 신호 베어링 매체(signal bearing medium)이고, 따라서 (예컨대, 반송파와 같이) 명령을 예를 들어 네트워크를 거쳐 컴퓨팅 디바이스의 하드웨어로 전송하도록 구성된다. 또한, 컴퓨터 판독가능 매체는 컴퓨터 판독가능 저장 매체로서 구성될 수 있고, 따라서 신호 베어링 매체가 아니다. 컴퓨터 판독가능 저장 매체의 예로는 RAM, ROM, 광디스크, 플래시 메모리, 하드디스크 메모리, 및 명령 및 다른 데이터를 저장하기 위해 자기, 광학 및 다른 기술들을 사용할 수 있는 다른 메모리 디바이스를 포함한다.
본 명세서에서 설명되는 기술들이 작동할 수 있는 예시적인 환경을 설명하였으며, 이제 하나 이상의 실시예에 따라 로컬 구획(124) 및 원격 구획(126)에 대한 일부 예시적인 콘텐츠 핸들링 정책을 논의할 것이다.
로컬 구획 정책
상기한 바와 같이, 로컬 구획(124)은 컴퓨팅 디바이스(102)의 일정의 민감한 기능들에 액세스하도록 허용되는 애플리케이션들(108)의 부분들을 나타낸다. 예컨대, 로컬 구획(124)은, 실행시에, 예를 들어 콘텐츠를 프로세싱하는데 사용되도록 허용된 코드 요소들(128) 및 필터링된 코드 요소들(130)에서 식별된 코드 요소를 호출할 수 있는 애플리케이션들(108)의 실행 코드를 포함한다. 로컬 구획(124)의 속성은 하나 이상의 실시예에 따라 이후에 논의된다.
로컬 구획 식별
구현예에서, 로컬 구획(124)의 일부로서 포함된 콘텐츠는 로컬 구획(124)에 대해 특유의 URI 스킴을 사용하여 공표된다. 예컨대, 로컬 구획(124)의 일부로서 포함되는 콘텐츠는 "local-compartment://content"와 같은 URI를 사용하여 식별될 수 있다. 콘텐츠가 상기 URI를 사용하여 참조되는 것으로 (예를 들어, 애플리케이션 관리자 모듈(118) 및/또는 콘텐츠 검사 모듈(132)에 의해) 결정되면, 콘텐츠의 소스가 로컬 구획(124)으로 알려질 것이며 로컬 구획(124)에 대해 특유의 속성이 콘텐츠에 적용될 것이다. 로컬 구획(124)에 대해 특유의 URI 스킴이 없으면, 콘텐츠는 원격 구획(126)과 연관된 것으로 및/또는 비신뢰적인 것으로 다루어질 것이다.
원격 실행 코드
로컬 구획(124)은 신뢰 콘텐츠(120) 및/또는 컴퓨팅 디바이스(102)에 대해 외부에 있는 소스로부터 검색되는 실행 코드(예를 들어, 스크립트)에 대한 참조를 포함하는 것을 방지한다. 예컨대, 로컬 구획(124)과 연관된 콘텐츠 정책은, 로컬 구획(124)에 포함된 코드가 신뢰 콘텐츠(120)에 대해 외부에 있는 실행가능 콘텐츠를 참조할 수 없음을 명시할 수 있다. 이러한 허용되지 않는 참조의 일례는 스크립트 콘텐츠를 참조하는 URL(uniform resource locator)이다. 그러나, 로컬 구획(124)은 신뢰 콘텐츠(120)의 일부로서 포함되는 실행가능 콘텐츠를 참조할 수 있다.
허용된 코드 요소의 액세스
로컬 구획(124)은 허용된 코드 요소들(128)의 코드 요소를 실행시키도록 허용된다.
필터링된 코드 요소의 액세스
필터링된 코드 요소들(130)의 코드 요소에 전달되도록 로컬 구획(124)에 의해 요청되는 콘텐츠는 코드 요소로 전달되기 전에 그 콘텐츠가 안전한지를 체크하기 위해 필터링된다. 예컨대, 필터링된 코드 요소들(130) 중 하나에 대한 호출이 (예를 들어, 비신뢰 콘텐츠(122)로부터의) 콘텐츠의 인스턴스에 대한 참조를 포함하는 경우, 그 콘텐츠는 콘텐츠 검사 모듈(132)에 의해 필터링된다. 콘텐츠 검사 모듈(132)이 콘텐츠가 안전하다고 결정하면, 콘텐츠는 코드 요소에 전달되게 된다. 반대로, 콘텐츠가 안전하지 못하다고 결정되면, 콘텐츠는 코드 요소에 전달되지 못하게 된다.
콘텐츠 소스
구현예에서, 로컬 구획(124)은 신뢰 콘텐츠(120)에 대해 외부에 있는 소스로부터의 소정 타입의 콘텐츠에 액세스하지 못하게 된다. 예컨대, 로컬 구획(124)은 신뢰 콘텐츠(120)에 대해 외부에 있는 소스로부터의 미디어 콘텐츠(예를 들어, 비디오 콘텐츠, 이미지, 오디오 콘텐츠, 등)에 액세스하도록 허가될 수 있다. 그러나, 로컬 구획(124)은 신뢰 콘텐츠(120)에 대해 외부에 있는 소스로부터의 다른 타입의 콘텐츠, 예를 들어 HTML 콘텐츠, 스크립트 콘텐츠, CSS(cascading style sheets) 콘텐츠, 등에 액세스하지 못하게 될 수 있다. 이에 의해, 애플리케이션이 비신뢰 소스로부터의 악의적인 콘텐츠(예를 들어, 실행 코드)에 대한 참조를 포함하는 것을 방지할 수 있다.
제3자 자연어 코드( third - party native code )
구현예에서, 애플리케이션들(108) 중 하나와 연관된 제3자 자연어 코드는 로컬 구획(124)에 저장될 수 있다. 제3자 자연어 코드는 애플리케이션들(108) 중 하나에 의해 활용되는 실행 코드를 지칭할 수 있지만, 애플리케이션의 개발자에 의해 기록되진 않는다. 그러나, 이러한 구현예에서, 제3자 자연어 코드는 애플리케이션에 의해 식별되고, 예를 들어 애플리케이션에 대한 매니페스트(manifest)의 일부로서 공표된다. 제3자 자연어 코드가 애플리케이션에 의해 공표되지 않으면, 제3자 자연어 코드는 로컬 구획(124)으로부터 실행되지 못하게 될 수 있다.
크로스 도메인( cross - doamin ) 요청
구현예에서, 애플리케이션들(108)은 로컬 구획(124)으로부터 크로스 도메인의 XML(extensible markup language) http(hypertext transfer protocol) 요청을 실행시키도록 허가된다. 예컨대, 애플리케이션들(108)은 컴퓨팅 디바이스(102)에 대해 외부에 있는 도메인과 연관된 (예를 들어, 웹사이트로부터의) 미디어 콘텐츠를 가리키는 URL을 포함할 수 있다.
문자 부호화
컴퓨팅 디바이스(102)의 민감한 부분들을 보호하기 위해, 문자 부호화 제약이 로컬 구획(124) 상에서 시행될 수 있다. 구현예에서, 문자 부호화는 콘텐츠 데이터에 포함되는 문자들(예를 들어, 기호들)이 컴퓨팅 디바이스 상에서 표현되는 방식을 지칭한다. 문자 부호화의 예로는 UTF(Universal Character Set Transformation Formats)를 포함한다. 소정 타입의 문자 부호화는 컴퓨팅 디바이스의 바람직하지 못한 성능을 야기하도록 및/또는 컴퓨팅 디바이스의 민감한 부분들에 대한 비승인 액세스를 가능하게 하도록 (예를 들어, 멀웨어 및/또는 제3자에 의해) 조작될 수 있다. 따라서, 로컬 구획(124)은 UTF-8과 같은 특정 허용된 문자 부호화를 사용하는 것에 제한될 수 있다.
콘텐츠의 특정 부분이 공표된 문자 부호화 포맷을 갖지 않으면, 허용된 문자 부호화와 같이 콘텐츠를 분석하기 위한 시도가 이루어질 수 있다. 콘텐츠가 허용된 문자 부호화를 사용하여 분석될 수 있으면, 콘텐츠는 예를 들어 콘텐츠를 출력하도록 로컬 구획(124)에 의해 사용될 수 있다. 콘텐츠가 허용된 문자 부호화를 사용하여 분석될 수 없으면, 콘텐츠를 분석할 수 없게 하는 에러가 발생할 수 있다. 또한, 콘텐츠의 특정 부분이 허용된 문자 부호화와는 상이한 공표된 문자 부호화를 가지면, 콘텐츠는 분석되지 못하게 될 수 있으며 및/또는 분석 에러가 발생할 수 있다.
원격 구획 정책
상기한 바와 같이, 원격 구획(126)은 컴퓨팅 디바이스(102)의 소정의 민감한 부분들에 액세스하도록 허가되지 않는 애플리케이션들(108)의 일부를 나타낸다. 예컨대, 원격 구획(126)은, 실행시에, 허용된 코드 요소들(128) 및 필터링된 코드 요소들(130)에서 식별된 코드 요소를 호출하도록 허가되지 않는 애플리케이션들(108)의 실행 코드를 포함한다. 웹 콘텐츠와 관련하여, 이러한 콘텐츠는 웹 브라우저, 예를 들어 브라우저(110)와 연관된 동일한 리소스 허가에 기초하여 원격 구획에서 실행될 수 있다. 원격 구획(126)의 추가적인 속성에 대해서는 하나 이상의 실시예에 따라 이후에 논의된다.
원격 구획 식별
구현예에서, 원격 구획(126)의 일부로서 포함된 콘텐츠는 원격 구획(126)에 대해 특유의 URI 스킴을 사용하여 공표된다. 예컨대, 원격 구획(126)의 일부로서 포함된 콘텐츠는 "remote-compartment://content"와 같은 URI를 사용하여 식별될 수 있다. 콘텐츠가 상기 URI를 사용하여 참조되는 것으로 (예를 들어, 애플리케이션 관리자 모듈(118) 및/또는 콘텐츠 검사 모듈(132)에 의해) 결정되면, 콘텐츠의 소스는 원격 구획(126)으로 알려질 것이며 원격 구획(126)에 대해 특유의 정책은 콘텐츠에 적용될 것이다. 또한, "http://" 및/또는 "https://"와 같은 다른 URI 스킴을 사용하여 참조되는 콘텐츠는 원격 구획(126) 및/또는 비신뢰 소스와 연관되는 것으로 다루어질 것이다.
원격 실행 코드
구현예에서, 원격 구획(126)은 신뢰 소스 및 비신뢰 소스로부터의 실행 코드(예를 들어, 스크립트), 예를 들어 신뢰 콘텐츠(120) 및/또는 비신뢰 콘텐츠(122)에 대한 참조를 포함하도록 허용된다. 원격 구획(126)이 컴퓨팅 디바이스(102)의 민감한 부분들에 대한 액세스를 갖지 않기 때문에, 원격 구획(126)으로 하여금 비신뢰 실행 코드를 지칭하도록 하는 것은 컴퓨팅 디바이스(102)의 민감한 부분들을 비신뢰 실행 코드에 노출시키는 위험에 빠뜨리지 않는다.
미디어 콘텐츠
원격 구획(126)은 신뢰 소스 및 비신뢰 소스로부터의 미디어 콘텐츠, 예를 들어 신뢰 콘텐츠(120) 및/또는 비신뢰 콘텐츠(122)에 대한 참조를 포함하도록 허가된다. 원격 구획(126)이 컴퓨팅 디바이스(102)의 민감한 부분들에 대한 액세스를 갖지 않기 때문에, 원격 구획(126)으로 하여금 비신뢰 미디어 콘텐츠를 지칭하도록 하는 것은, 비신뢰 미디어 콘텐츠에 포함될 수 있는 안전하지 못한 콘텐츠에 컴퓨팅 디바이스(102)의 민감한 부분들을 노출시키는 위험에 빠뜨리지 않는다.
제3자 자연어 코드
구현예에서, 원격 구획(126)은 제3자 자연어 코드를 실행시키도록 및/또는 참조하도록 허가되지 않는다. 이에 의해, 이러한 코드가 컴퓨팅 디바이스의 민감한 부분들에 대한 비승인 액세스를 얻지 못하게 할 수 있다.
크로스 도메인 요청
구현예에서, 원격 구획(126)은 크로스 도메인의 XML-http 요청을 포함하도록 허가되지 않는다. 이에 의해, 안전하지 못한 콘텐츠가 원격 구획(126)으로부터 액세스되는 웹 사이트 또는 다른 네트워크를 거쳐 액세스되지 못하게 할 수 있다.
구획 간의 통신
구현예에서, 원격 구획(126)과 로컬 구획(124) 사이의 통신은 안전하지 못한 콘텐츠가 구획들 사이에서 전달되는 것을 금지하도록 제어된다. 예컨대, 구획들 간의 통신은 단일의 통신 기술을 사용하여 허용될 수 있다.
이러한 기술의 일례는 예를 들어 postMessage() 방법을 사용하여 제 1 구획 내의 콘텐츠에 대해 이벤트 생성기를 추가하는 것이다. 그 후에 해당하는 이벤트 리스너(event listener)는 예를 들어 addEventListener() 방법을 사용하여 다른 구획에 대해 추가될 수 있다. 이벤트가 제 1 구획에 의해 생성되면, 이벤트는 다른 구획에서 이벤트 리스너에 의해 검출되어 구획들 간의 메시지 통신을 가능하게 한다.
일부 시나리오에서, 로컬 구획(124)은 poseMessage() 방법을 통해 콘텐츠를 수신할 수 있고, 그 콘텐츠가 비신뢰 소스로부터 수신되는 것으로 결정할 수 있다. 이러한 시나리오에서, 본 명세서에서 논의되는 콘텐츠 필터링 기술은 콘텐츠가 안전한지 또는 안전하지 못한지를 결정하는 데 사용될 수 있다. 또한, 콘텐츠가 안전하지 못하다고 결정되면, 콘텐츠는 거절되거나 삭제될 수 있다.
예시적인 콘텐츠 핸들링 정책을 설명하였으며, 이제 하나 이상의 실시예에 따른 일부 예시적인 절차들에 대한 논의를 고려한다.
예시적인 절차들
본 명세서에서 설명되는 시스템, 디바이스, 콘텐츠 핸들링 정책을 사용하여 구현될 수 있는 콘텐츠 핸들링 기술에 관해 이하에서 설명한다. 각 절차들의 측면은 하드웨어, 펌웨어, 또는 소프트웨어, 또는 이들의 조합에서 구현될 수 있다. 절차들은 하나 이상의 디바이스에 의해 수행되는 동작들을 명시하는 블록들의 세트로서 도시되며, 각 블록들에 의해 동작을 수행하기 위해 도시된 순서들로 반드시 제한되는 것은 아니다. 또한, 특정 절차와 관련해서 도시된 동작은 하나 이상의 구현예에 따른 상이한 절차의 동작과 조합되고 및/또는 교환될 수 있다. 이하의 논의 부분에서, 도 1의 환경(100)이 참조될 것이다.
도 2는 콘텐츠 핸들링 정책들이 시행되는 예시적인 구현예에서의 절차(200)를 나타낸다. 컴퓨팅 디바이스의 코드 요소를 실행시키도록 허용되는 애플리케이션의 일부를 위해 제 1 콘텐츠 핸들링 정책 세트가 시행되고, 코드 요소를 실행시키도록 허용되지 않는 애플리케이션의 일부를 위해 제 2 콘텐츠 핸들링 정책 세트가 시행된다(블록 202). 콘텐츠 핸들링 정책들의 예에 대해서는 위에서뿐만 아니라 이하에서도 논의된다. 애플리케이션의 어떤 부분이 콘텐츠를 참조하고 있는지에 기초하여 제 1 콘텐츠 핸들링 정책 세트 또는 제 2 콘텐츠 핸들링 정책 세트를 콘텐츠에 적용할지를 결정한다(블록 204). 예컨대, 비신뢰 콘텐츠가 로컬 구획(124)에 의해 요청되면, 제 1 콘텐츠 핸들링 정책 세트가 적용된다. 그러나, 비신뢰 콘텐츠가 원격 구획(126)에 의해 요청되면, 제 2 콘텐츠 핸들링 정책 세트가 적용된다. 구현예에서, 어떤 구획이 콘텐츠를 요청하고 있는지에 대한 결정은 콘텐츠를 참조하는 URI에 기초하여 이루질 수 있다.
도 3은 코드 요소에 콘텐츠를 전달하라는 요청을 허용할지에 대한 결정이 이루어지는 예시적인 구현예에서의 절차(300)를 나타낸다. 컴퓨팅 디바이스 상에서 실행중인 애플리케이션이 컴퓨팅 디바이스의 코드 요소에 콘텐츠를 전달하라는 요청을 포함한다고 검출된다(블록 302). 예컨대, 애플리케이션들(108) 중 하나는 허용된 코드 요소들(128) 또는 필터링된 코드 요소들(130) 중의 하나에 콘텐츠의 인스턴스가 전달되는 것을 요청할 수 있다.
요청이 코드 요소를 실행시키도록 허용되는 애플리케이션의 부분으로부터의 것인지에 기초하여 요청을 허용할지에 대한 결정이 이루어진다(블록 304). 상기한 구획들을 참조하여, 애플리케이션 관리자(118)는 요청이 로컬 구획(124) 또는 원격 구획(126)으로부터의 것인지를 결정할 수 있다. 요청이 코드 요소를 실행시키는 데 허용되지 않는 애플리케이션의 부분으로부터의 것이면("허용되지 않음"), 콘텐츠는 코드 요소로 전달되지 못하게 된다(블록 306). 상기한 바와 같이, 원격 구획(126)은 컴퓨팅 디바이스(102)의 코드 요소를 실행시키도록 허용되지 않는다. 따라서, 요청이 원격 구획(126)으로부터의 것이라고 결정되면, 요청은 거절될 수 있다.
요청이 코드 요소를 실행시키도록 허용되는 애플리케이션의 부분으로부터의 것이면("허용됨"), 콘텐츠의 소스 및 콘텐츠에 대한 콘텐츠 타입에 기초하여 콘텐츠가 코드 요소에 전달될 수 있는지가 확인된다(블록 308). 상기한 바와 같이, 소정의 시나리오에서, 로컬 구획(124)은 컴퓨팅 디바이스(102)의 코드 요소를 실행시키도록 허용된다. 따라서, 요청이 로컬 구획(124)으로부터의 것이라고 결정되면, 콘텐츠가 코드 요소에 전달될 수 있는지를 결정하기 위해 콘텐츠는 추가적인 정밀 조사를 받을 수 있다. 콘텐츠가 코드 요소에 전달될 수 있는지를 결정하는 예시적인 방법에 대해서는 이하에서 보다 상세하게 설명된다.
도 4는 콘텐츠가 코드 요소에 전달될 수 있는지에 대한 결정이 이루어지는 예시적인 구현예에서의 절차(400)를 나타낸다. 구현예에서, 절차(400)는 상기한 절차(300)의 구현 블록(308)에 대한 세부적인 기술을 나타낸다. 코드 요소에 전달되도록 요청되는 콘텐츠의 소스가 신뢰 소스 또는 비신뢰 소스인지가 확인된다(블록 402). 콘텐츠 소스가 비신뢰 소스이면("비신뢰됨"), 콘텐츠에 대한 콘텐츠 타입이 비신뢰 소스에서 허용되는 것인지를 결정한다(블록 404). 도 1의 환경(100)을 참고하여, 콘텐츠의 소스는 비신뢰 콘텐츠(122)일 수 있다. 상기한 바와 같이, 소정 타입의 콘텐츠(예를 들어, 실행 코드)는 비신뢰 소스로부터 검색되고 코드 요소에 전달되도록 허가되지 않는다. 콘텐츠 타입이 비신뢰 소스에서 허용되는 것이 아니면("아니오"), 콘텐츠는 코드 요소에 전달되지 못하게 된다(블록 406). 이와 달리, 콘텐츠 타입이 비신뢰 소스에서 허용되는 것이면("예"), 절차(400)는 이하 논의되는 블록 408로 진행한다. 소정 타입의 콘텐츠(예를 들어, 미디어 콘텐츠, 포맷팅 콘텐츠, 등)는, 일부 구현예에 있어서 콘텐츠가 안전한지를 결정하기 위해 추가적인 검사의 조건 하에서, 비신뢰 소스로부터 검색되어 코드 요소에 전달되도록 허가된다.
블록 402로 되돌아가서, 콘텐츠의 소스가 신뢰 소스이면("신뢰됨") 또는 블록 404에서 콘텐츠 타입이 비신뢰 소스에서 허용되는 것이라고 결정되면("예"), 코드 요소가 허용된 코드 요소 또는 필터링된 코드 요소인지를 결정한다(블록 408). 코드 요소가 허용된 코드 요소이면("허용됨"), 콘텐츠는 코드 요소에 전달되도록 허가된다(블록 410). 구현예에서, 허용된 코드 요소와 필터링된 코드 요소 사이의 구분은 예를 들어 허용된 코드 요소의 세트 및 필터링된 코드 요소의 세트를 사전 지정함으로써 명시적으로 정의될 수 있다. 이와 달리, 필터링된 코드 요소의 세트는 사전 지정될 수 있고, 또한 코드 요소가 필터링된 코드 요소의 세트에서 식별되지 않음에 기초하여 허용된 코드 요소로 되는 암시에 의해 특정한 코드 요소가 결정될 수 있다. 콘텐츠는 코드 요소를 사용하여 프로세싱된다(블록 412). 예컨대, 콘텐츠는 예를 들어 웹 페이지, 문서 등의 일부로서의 제시를 위해 프로세싱될 수 있다.
블록 408로 되돌아가서, 코드 요소가 필터링된 코드 요소이면("필터링됨"), 콘텐츠가 코드 요소에 전달되기에 안전한 것인지를 확인하기 위해 콘텐츠를 검사한다(블록 414). 예컨대, 콘텐츠 검사 모듈(132)은 콘텐츠가 안전한지 또는 안전하지 못한지를 결정하기 위해 콘텐츠에 하나 이상의 콘텐츠 검사 정책(134)을 적용할 수 있다. 상기한 바와 같이, 실행 코드를 포함하는 콘텐츠는 필터링된 코드 요소에 전달되기에 안전하지 못한 것으로 결정될 수 있다. 또한, 안전한 콘텐츠는 이미지, 텍스트, 오디오, 비디오, 프레젠테이션 데이터, 정적 HTML 등과 같은 정적 콘텐츠를 포함할 수 있다.
다른 구현예에서, 코드 요소에 대한 호출은 콘텐츠 검사 스킴에 참여하지 않을 수 있다. 예컨대, 컴퓨팅 디바이스는, 호출과 연관된 콘텐츠가 콘텐츠 검사 스킴을 면제받게 된다는 지시를 코드 요소에 대한 호출이 포함한다고 결정할 수 있다. 따라서, 코드 요소는 콘텐츠가 안전한지 결정하기 위해 콘텐츠를 먼저 검사하지 않고서 콘텐츠를 사용하여 실행될 수 있다. 이에 의해, 검사시에 콘텐츠가 거절될 수 있는 상황에서 애플리케이션 개발자는 콘텐츠 검사 메카니즘을 건너뛸 수 있게 된다.
블록 414로 되돌아가서, 콘텐츠가 코드 요소에 전달되기에 안전하지 못하다고 결정되면("안전하지 못함"), 콘텐츠는 코드 요소에 전달되지 못하게 된다(블록 406). 콘텐츠가 코드 요소에 전달되기에 안전하다고 결정되면("안전함"), 콘텐츠는 코드 요소에 전달될 수 있게 된다(블록 410). 상기한 바와 같이, 콘텐츠는 코드 요소를 사용하여 프로세싱된다(블록 412).
다른 구현예에서, 애플리케이션은 콘텐츠를 특정한 코드 요소에 전달될 수 있게 하기 전에 콘텐츠의 안전하지 못한 측면을 제거함으로써 안전하지 못한 콘텐츠를 무해하게 할 수 있음을 지시할 수 있다. 예컨대, 애플리케이션(108)은, 안전하지 못한 콘텐츠가 콘텐츠 검사 모듈(132)에 전달되고, 그 후에 콘텐츠로부터 안전하지 못한 피처(예를 들어, 실행 코드)를 제거할 수 있음을 (예를 들어, 기능 호출을 통해) 자신의 코드에서 명시할 수 있다. 무해하게 된 콘텐츠는 그 후에 추가적인 프로세싱을 위해 코드 요소에 전달될 수 있다.
예시적인 시스템 및 디바이스
도 5는 도 1을 참조하여 설명된 바와 같은 컴퓨팅 디바이스(102)를 포함하는 예시적인 시스템(500)을 도시한다. 예시적인 시스템(500)은 PC, 텔레비전 디바이스, 및/또는 모바일 디바이스 상에서 애플리케이션의 실행시에 끊김 없는 사용자 경험을 위한 유비쿼터스 환경을 가능하게 한다. 서비스 및 애플리케이션은, 애플리케이션의 사용, 비디오 게임의 플레이, 비디오 시청 등을 행하면서 하나의 디바이스로부터 다음 디바이스로의 전환시에, 공통의 사용자 경험을 위해 3개의 모든 환경에서와 실질적으로 유사하게 실행된다.
예시적인 시스템(500)에서, 다수의 디바이스는 중심의 컴퓨팅 디바이스를 통해서 상호 접속된다. 중심의 컴퓨팅 디바이스는 다수의 디바이스에 대해 국부적일 수 있거나 또는 다수의 디바이스로부터 원격으로 위치될 수 있다. 하나의 실시예에서, 중심의 컴퓨팅 디바이스는 네트워크, 인터넷, 또는 다른 데이터 통신 링크를 통해 다수의 디바이스에 접속되는 하나 이상의 서버 컴퓨터의 클라우드일 수 있다. 하나 이상의 실시예에서, 상기 상호 접속의 구조는 다수의 디바이스의 사용자에게 공통이며 끊김 없는 경험을 제공하기 위해 다수의 디바이스에 걸쳐 기능이 전달될 수 있게 한다. 다수의 디바이스의 각각은 상이한 물리적 요구사항 및 성능을 가질 수 있고, 중심의 컴퓨팅 디바이스는 디바이스에 대해 맞춤화되며 또한 모든 디바이스들에 대해 훨씬 공통적인 디바이스로의 경험의 전달을 가능하게 하는 플랫폼을 사용한다. 일 실시예에서, 타겟 디바이스의 클래스가 생성되고, 디바이스의 일반적인 클래스에 대해 경험이 맞춤화된다. 디바이스의 클래스는 디바이스의 물리적 피저, 사용 타입, 또는 다른 공통의 특성에 의해 정의될 수 있다.
다양한 구현예에서, 컴퓨팅 디바이스(102)는 예를 들어 컴퓨터(502), 모바일(504), 및 텔레비전(506)에 있어서 사용하는 다양한 상이한 구성을 가정할 수 있다. 이들 구성의 각각은 일반적으로 상이한 구조 및 성능을 가질 수 있는 디바이스를 포함하므로, 컴퓨팅 디바이스(102)는 하나 이상의 상이한 디바이스 클래스에 따라 구성될 수 있다. 예컨대, 컴퓨팅 디바이스(102)는 PC, 데스크탑 컴퓨터, 멀티 스크린 컴퓨터, 랩탑 컴퓨터, 넷북 등을 포함하는 디바이스의 컴퓨터(502) 클래스로서 구현될 수 있다.
또한, 컴퓨팅 디바이스(102)는, 휴대폰, 휴대용 음악 플레이어, 휴대용 게임 디바이스, 태블릿 컴퓨터, 멀티 화면 컴퓨터 등과 같은 모바일 디바이스를 포함하는 디바이스의 모바일 클래스(504)로서 구현될 수 있다. 또한, 컴퓨터 디바이스(102)는 임시의 뷰잉 환경에서 일반적으로 보다 큰 화면을 갖거나 또는 이에 접속된 디바이스를 포함하는 디바이스의 텔레비전(506) 클래스로서 구현될 수 있다. 이들 디바이스는 텔레비전, 셋탑 박스, 게임 콘솔, 등을 포함한다. 본 명세서에서 설명되는 기술들은 컴퓨팅 디바이스(102)의 상기 다양한 구성에 의해 지지될 수 있으며, 본 명세서에서 설명되는 특정한 예시적인 기술들에 제한되는 것도 아니다.
클라우드(508)는 콘텐츠 서비스(512)를 위한 플랫폼(510)을 포함하고 및/또는 나타낸다. 플랫폼(510)은 하드웨어(예를 들어, 서버) 및 클라우드(508)의 소프트웨어 리소스의 잠재적인 기능을 요약한다. 콘텐츠 서비스(512)는 컴퓨팅 디바이스(102)로부터 멀리 떨어진 서버들 상에서 컴퓨팅 프로세싱이 실행되는 동안에 활용될 수 있는 애플리케이션 및/또는 데이터를 포함할 수 있다. 콘텐츠 서비스(512)는 인터넷 및/또는 가입자 네트워크, 예를 들어 셀룰러 또는 와이파이 네트워크를 통한 서비스로서 제공될 수 있다.
플랫폼(510)은 컴퓨팅 디바이스(102)를 다른 컴퓨팅 디바이스들과 연결하기 위해 리소스 및 기능을 요약할 수 있다. 또한, 플랫폼(510)은 리소스 스케일링의 요약을 서비스하여, 플랫폼(510)을 거쳐 구현되는 콘텐츠 서비스(512)에 대한 발생 수요에 대응하는 레벨의 스케일을 제공할 수 있다. 따라서, 상호접속된 디바이스의 실시예에서, 본 명세서에서 설명되는 기능에 대한 기능 구현은 시스템(500)의 전체에 걸쳐 배포될 수 있다. 예컨대, 기능은 애플리케이션들(108), 애플리케이션 관리자 모듈(118), 및 콘텐츠 검사 모듈(132)의 포함을 통해 도시된 바와 같이 컴퓨팅 디바이스(102) 상에서뿐만 아니라 클라우드(508)의 기능을 요약하는 플랫폼(510)을 거쳐서도 부분적으로 구현될 수 있다.
도 6은 본 명세서에서 설명되는 기술들의 실시예를 구현하기 위해 도 1 내지 도 5를 참조하여 설명된 바와 같은 임의의 타입의 컴퓨팅 디바이스로서 구현될 수 있는 예시적인 디바이스(600)의 다양한 구성요소를 도시한다. 디바이스(600)는 디바이스 데이터(604)(예를 들어, 수신된 데이터, 수신되고 있는 데이터, 브로드캐스트를 위해 스케쥴링된 데이터, 데이터의 데이터 패킷 등)의 유선 및/또는 무선 통신을 가능하게 하는 통신 디바이스(602)를 포함한다. 디바이스 데이터(604) 또는 다른 디바이스 콘텐츠는 디바이스의 구성 설정, 디바이스에 저장된 미디어 콘텐츠, 및/또는 디바이스의 사용자와 연관된 정보를 포함할 수 있다. 디바이스(600)에 저장된 미디어 콘텐츠는 임의의 타입의 오디오, 비디오, 및/또는 이미지 데이터를 포함할 수 있다. 디바이스(600)는 임의의 타입의 데이터, 미디어 콘텐츠, 및/또는 입력이 수신될 수 있는 하나 이상의 데이터 입력(606), 예를 들어 사용자 선택가능 입력, 메시지, 음악, 텔레비전 미디어 콘텐츠, 기록된 비디오 콘텐츠, 및 임의의 콘텐츠 및/또는 데이터 소스로부터 수신된 임의의 다른 타입의 오디오, 비디오, 및/또는 이미지 데이터를 포함한다.
또한, 디바이스(600)는 직렬 및/또는 병렬 인터페이스, 무선 인터페이스, 임의의 타입의 네트워크 인터페이스, 모뎀 중의 임의의 하나 이상 및 임의의 다른 타입의 통신 인터페이스로서 구현될 수 있는 통신 인터페이스(608)를 포함한다. 통신 인터페이스(608)는 다른 전자, 컴퓨팅, 및 통신 디바이스가 디바이스(600)와 데이터를 통신하는 통신 네트워크와 디바이스(600) 사이의 접속 및/또는 통신 링크를 제공한다.
디바이스(600)는 디바이스(600)의 동작을 제어하고 본 명세서에서 설명되는 기술들의 실시예를 구현하기 위한 다양한 컴퓨터 실행가능 명령어를 프로세싱하는 하나 이상의 프로세서(610)(예를 들어, 마이크로프로세서, 컨트롤러 등의 임의의 것)를 포함한다. 이와 달리 또는 추가적으로, 하드웨어, 펌웨어, 또는 612에서 일반적으로 식별되는 프로세싱 및 제어 회로와 관련되어 구현되는 고정 로직 회로 중 어느 하나 또는 이들의 조합을 이용하여 디바이스(600)가 구현될 수 있다. 도시되지 않았지만, 디바이스(600)는 디바이스 내에서 다양한 구성요소들을 연결하는 시스템 버스 또는 데이터 전송 시스템을 포함할 수 있다. 시스템 버스는 메모리 버스 또는 메모리 컨트롤러와 같은 상이한 버스 구조, 주변 장치 버스, 범용 직렬 버스, 및/또는 다양한 버스 아키텍처 중 임의의 것을 사용하는 프로세서 EH는 로컬 버스 중의 어느 하나 또는 이들의 조합을 포함할 수 있다.
또한, 디바이스(600)는 하나 이상의 메모리 구성요소와 같은 컴퓨터 판독가능 매체(614)를 포함하고, 이에 대한 예로는 RAM, 비휘발성 메모리(예를 들어, ROM, 플래시 메모리, EPROM, EEPROM, 등 중의 임의의 하나 이상), 및 디스크 저장 디바이스를 포함한다. 디스크 저장 디바이스는 하드디스크 드라이브, 기록가능(recordable) 및/또는 리라이팅가능(rewriteable) CD, 임의의 타입의 DVD 등과 같은 임의의 타입의 자기 또는 광학 저장 디바이스로서 구현될 수 있다. 디바이스(600)는 대용량 저장 매체 디바이스(616)를 포함할 수도 있다.
컴퓨터 판독가능 매체(614)는 디바이스 데이터(604)뿐만 아니라 다양한 디바이스 애플리케이션(618) 및 디바이스(600)의 동작 측면에 관련된 임의의 다른 타입의 정보 및/또는 데이터를 저장하기 위한 데이터 저장 메카니즘을 제공한다. 예컨대, 오퍼레이팅 시스템(620)은 컴퓨터 판독가능 매체(614)를 갖고 프로세서(610) 상에서 실행되는 컴퓨터 애플리케이션으로서 유지될 수 있다. 디바이스 애플리케이션(618)은 디바이스 관리자(예를 들어, 제어 애플리케이션, 소프트웨어 애플리케이션, 신호 프로세싱 및 제어 모듈, 특정 디바이스에 대해 고유한 코드, 특정 디바이스를 위한 하드웨어 추상 계층, 등)를 포함할 수 있다. 또한, 디바이스 애플리케이션(618)은 본 명세서에서 설명되는 기술들의 실시예를 구현하기 위한 임의의 시스템 구성요소 또는 모듈을 포함한다.
이러한 예에서, 디바이스 애플리케이션(618)은 소프트웨어 모듈 및/또는 컴퓨터 애플리케이션으로서 도시된 인터페이스 애플리케이션(622) 및 입/출력 모듈(624)을 포함한다. 입/출력 모듈(624)은 예를 들어 터치스크린, 트랙 패드, 카메라, 마이크로폰 등과 같은 입력을 캡처하도록 구성된 디바이스에 인터페이스를 제공하는 데 사용되는 소프트웨어를 나타낸다. 이와 달리 또는 추가적으로, 인터페이스 애플리케이션(622) 및 입/출력 모듈(624)은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합으로서 구현될 수 있다. 또한, 입/출력 모듈(624)은 비쥬얼 입력 및 오디오 입력을 각각 캡처하기 위한 개별 디바이스와 같은 다수의 입력 디바이스를 지지하도록 구성될 수 있다.
또한, 디바이스(600)는 오디오 데이터를 오디오 시스템(628)에 제공하고 비디오 데이터를 디스플레이 시스템(630)에 제공하는 오디오 및/또는 비디오 입출력 시스템(626)을 포함한다. 오디오 시스템(628) 및/또는 디스플레이 시스템(630)은 오디오, 비디오 및 이미지 데이터를 프로세싱, 디스플레이, 및/또는 그렇지 않으면 렌더링하는 임의의 디바이스를 포함할 수 있다. 비디오 신호 및 오디오 신호는 RF(무선 주파수) 링크, S-비디오 링크, 복합 비디오 링크, 컴포넌트 비디오 링크, DVI(digital video interface), 아날로그 오디오 접속, 또는 다른 유사한 통신 링크를 거쳐 디바이스(600)로부터 오디오 디바이스로 및/또는 디스플레이 디바이스로 통신될 수 있다. 실시예에서, 오디오 시스템(628) 및/또는 디스플레이 시스템(630)은 디바이스(600)에 대해 외부의 구성요소로서 구현된다. 이와 달리, 오디오 시스템(628) 및/또는 디스플레이 시스템(630)은 예시적인 디바이스(600)의 집적된 구성요소로서 구현될 수 있다.
결론
본 발명은 구조적 특징 및/또는 방법론적인 동작에 특정되게 설명되었지만, 첨부된 청구범위에서 정의된 발명은 상기 설명된 특정한 특징 또는 동작에 반드시 한정되는 것이 아님을 이해해야 한다. 또한, 특정한 특징 및 동작은 청구되는 발명을 구현하는 예시적인 형태로서 개시된 것이다.

Claims (10)

  1. 명령어들을 저장하는 하나 이상의 컴퓨터 판독가능 저장 매체로서,
    상기 명령어들은, 컴퓨팅 디바이스에 의한 실행에 응답하여, 상기 컴퓨팅 디바이스로 하여금,
    상기 컴퓨팅 디바이스의 코드 요소들(code elements)을 실행시키도록 허용되는 애플리케이션의 제 1 부분에 대해 제 1 콘텐츠 핸들링 정책 세트를 시행하고, 상기 코드 요소들을 실행시키도록 허용되지 않는 애플리케이션의 제 2 부분에 대해 제 2 콘텐츠 핸들링 정책 세트를 시행하게 하며,
    상기 애플리케이션의 어떤 부분이 콘텐츠를 요청하고 있는지에 기초하여, 상기 콘텐츠에 상기 제 1 콘텐츠 핸들링 정책 세트를 적용할지 또는 상기 제 2 콘텐츠 핸들링 정책 세트를 적용할지를 결정하게 하는
    하나 이상의 컴퓨터 판독가능 저장 매체.
  2. 제 1 항에 있어서,
    상기 코드 요소들은 함수, 서브루틴, 방법, 파라미터, 속성, 또는 인터페이스 중의 하나 이상을 포함하는
    하나 이상의 컴퓨터 판독가능 저장 매체.
  3. 제 1 항에 있어서,
    상기 제 1 콘텐츠 핸들링 정책 세트는, 상기 콘텐츠가 비신뢰(untrusted)적이면 상기 콘텐츠는 실행 코드를 포함할 수 없는 것을 명시하는
    하나 이상의 컴퓨터 판독가능 저장 매체.
  4. 제 1 항에 있어서,
    상기 제 1 콘텐츠 핸들링 정책 세트는, 상기 콘텐츠가 비신뢰 콘텐츠를 포함하며 상기 비신뢰 콘텐츠가 상기 코드 요소들 중 하나에 전달되는 것을 상기 애플리케이션의 제 1 부분이 요청하고 있으면, 상기 비신뢰 콘텐츠가 상기 코드 요소들 중 하나에 전달될 수 있기 전에 상기 비신뢰 콘텐츠가 안전한지를 판정하기 위해 상기 비신뢰 콘텐츠는 검사받아야함을 명시하는
    하나 이상의 컴퓨터 판독가능 저장 매체.
  5. 제 1 항에 있어서,
    상기 제 1 콘텐츠 핸들링 정책 세트는, 상기 컴퓨팅 디바이스로부터 국부적으로 검색되는 콘텐츠가 특수 문자 부호화 포맷을 사용하여 부호화되거나 또는 상기 콘텐츠가 분석되지 못하게 됨을 명시하는
    하나 이상의 컴퓨터 판독가능 저장 매체.
  6. 컴퓨팅 디바이스 상에서 실행중인 애플리케이션이 상기 컴퓨팅 디바이스의 코드 요소에 콘텐츠를 전달하라는 요청을 포함하는 것을 검출하는 단계와,
    상기 검출에 응답하여, 상기 컴퓨팅 디바이스에 의해, 상기 요청이 상기 코드 요소를 실행시키도록 허용되는 상기 애플리케이션의 부분으로부터의 것인지에 기초하여 상기 요청을 허용할지를 결정하는 단계를 포함하는
    방법.
  7. 제 6 항에 있어서,
    상기 코드 요소는, 상기 컴퓨팅 디바이스의 특정 기능에 대한 액세스를 가능하게 하는 상기 코드 요소에 기초하여 코드 요소들의 사전 지정된 그룹의 일부로서 포함되는
    방법.
  8. 제 6 항에 있어서,
    상기 요청이 상기 코드 요소를 실행시키도록 허가되는 상기 애플리케이션의 부분으로부터의 것이라는 결정에 응답하여, 상기 콘텐츠의 소스 및 상기 콘텐츠의 콘텐츠 타입에 기초하여 상기 콘텐츠를 상기 코드 요소에 전달할 수 있는지를 확인하는 단계를 더 포함하는
    방법.
  9. 제 8 항에 있어서,
    상기 콘텐츠의 소스가 상기 컴퓨팅 디바이스로부터 떨어져 있으며 상기 콘텐츠가 실행 코드를 포함한다고 상기 콘텐츠 타입이 지시하는 결정에 기초하여 상기 콘텐츠를 상기 코드 요소에 전달할 수 없음을 확인하는 단계를 더 포함하는
    방법.
  10. 제 6 항에 있어서,
    상기 요청이 상기 코드 요소를 실행시키도록 허가되지 않는 상기 애플리케이션의 부분으로부터의 것이라는 결정에 응답하여, 상기 콘텐츠가 상기 코드 요소에 전달되지 못하게 하는 단계를 더 포함하는
    방법.
KR1020147006153A 2011-09-07 2012-09-04 애플리케이션용 콘텐츠 핸들링 기법 KR101977428B1 (ko)

Applications Claiming Priority (3)

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

Publications (2)

Publication Number Publication Date
KR20140068940A true KR20140068940A (ko) 2014-06-09
KR101977428B1 KR101977428B1 (ko) 2019-08-28

Family

ID=47754187

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147006153A KR101977428B1 (ko) 2011-09-07 2012-09-04 애플리케이션용 콘텐츠 핸들링 기법

Country Status (11)

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

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170131679A (ko) * 2015-08-20 2017-11-29 구글 엘엘씨 모바일 애플리케이션과 연관된 콘텐츠 아이템의 디바이스-기반 필터링

Families Citing this family (4)

* 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
US20220197993A1 (en) * 2022-03-11 2022-06-23 Intel Corporation Compartment isolation for load store forwarding

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004501467A (ja) * 2000-06-21 2004-01-15 マイクロソフト コーポレイション コードアセンブリに関連する許可要求を使用して許可セットをフィルタすること
US20070118558A1 (en) * 2005-11-21 2007-05-24 Research In Motion Limited System and method for application program operation on a wireless device
US20080313648A1 (en) * 2007-06-14 2008-12-18 Microsoft Corporation Protection and communication abstractions for web browsers

Family Cites Families (36)

* 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
US7047562B2 (en) * 2001-06-21 2006-05-16 Lockheed Martin Corporation Conditioning of the execution of an executable program upon satisfaction of criteria
JP4351046B2 (ja) 2001-08-13 2009-10-28 クゥアルコム・インコーポレイテッド アプリケーションにデバイスリソースを割り当てるための許可の使用
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
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 インターナショナル・ビジネス・マシーンズ・コーポレーション コンテンツ処理システム、方法及びプログラム
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
US8806618B2 (en) * 2008-03-31 2014-08-12 Microsoft Corporation Security by construction for distributed applications
US8220050B2 (en) * 2008-03-31 2012-07-10 Sophos Plc Method and system for detecting restricted content associated with retrieved content
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

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004501467A (ja) * 2000-06-21 2004-01-15 マイクロソフト コーポレイション コードアセンブリに関連する許可要求を使用して許可セットをフィルタすること
US20060070112A1 (en) * 2000-06-21 2006-03-30 Microsoft Corporation Filtering a permission set using permission requests associated with a code assembly
US20070118558A1 (en) * 2005-11-21 2007-05-24 Research In Motion Limited System and method for application program operation on a wireless device
US20080313648A1 (en) * 2007-06-14 2008-12-18 Microsoft Corporation Protection and communication abstractions for web browsers

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170131679A (ko) * 2015-08-20 2017-11-29 구글 엘엘씨 모바일 애플리케이션과 연관된 콘텐츠 아이템의 디바이스-기반 필터링

Also Published As

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

Similar Documents

Publication Publication Date Title
EP3610403B1 (en) Isolated container event monitoring
US9032318B2 (en) Widget security
US9087190B2 (en) Context-aware permission control of hybrid mobile applications
Beresford et al. Mockdroid: trading privacy for application functionality on smartphones
US20060090192A1 (en) Method and system for ensuring that computer programs are trustworthy
US20130333039A1 (en) Evaluating Whether to Block or Allow Installation of a Software Application
JP6038924B2 (ja) プロセス毎ネットワーキング機能
US20130074160A1 (en) Method of controlling information processing system, computer-readable recording medium storing program for controlling apparatus
KR101977428B1 (ko) 애플리케이션용 콘텐츠 핸들링 기법
US20130061316A1 (en) Capability Access Management for Processes
Amrutkar et al. Short paper: rethinking permissions for mobile web apps: barriers and the road ahead
KR101024444B1 (ko) 단말에서의 웹어플리케이션 플랫폼 및 웹어플리케이션 플랫폼 동작 방법
US9223976B2 (en) Content inspection
CN113612806B (zh) 一种安全网络服务方法、装置、电子设备及介质
JP6257085B2 (ja) 所定のサーバに対してログインを要求するログイン要求装置及び方法、並びにこれらに用いられるプログラム
Eisty et al. Improving the Permission Model to Protect the Smartphone Users' Privacy and Applying it on Android
KR20110022244A (ko) 웹 기반의 어플리케이션 제어 시스템 및 방법

Legal Events

Date Code Title Description
N231 Notification of change of applicant
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right