KR102262480B1 - 정보 리소스들 상에서의 해시 기반 동적 제한 - Google Patents

정보 리소스들 상에서의 해시 기반 동적 제한 Download PDF

Info

Publication number
KR102262480B1
KR102262480B1 KR1020197015208A KR20197015208A KR102262480B1 KR 102262480 B1 KR102262480 B1 KR 102262480B1 KR 1020197015208 A KR1020197015208 A KR 1020197015208A KR 20197015208 A KR20197015208 A KR 20197015208A KR 102262480 B1 KR102262480 B1 KR 102262480B1
Authority
KR
South Korea
Prior art keywords
content
information resource
content element
computing device
remote
Prior art date
Application number
KR1020197015208A
Other languages
English (en)
Other versions
KR20190072619A (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 KR20190072619A publication Critical patent/KR20190072619A/ko
Application granted granted Critical
Publication of KR102262480B1 publication Critical patent/KR102262480B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/903Querying
    • G06F16/90335Query processing
    • G06F16/90344Query processing by using string matching techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/128Restricting unauthorised execution of programs involving web programs, i.e. using technology especially used in internet, generally interacting with a web browser, e.g. hypertext markup language [HTML], applets, java
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2255Hash tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/955Retrieval from the web using information identifiers, e.g. uniform resource locators [URL]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/957Browsing optimisation, e.g. caching or content distillation
    • G06F16/9577Optimising the visualization of content, e.g. distillation of HTML documents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/101Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM] by binding digital rights to specific entities
    • G06F21/1015Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM] by binding digital rights to specific entities to users
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • 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/602Providing cryptographic facilities or services
    • 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/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • 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/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6245Protecting personal data, e.g. for financial or medical purposes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/10Network architectures or network communication protocols for network security for controlling access to devices or network resources
    • G06F2221/0713

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Databases & Information Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Data Mining & Analysis (AREA)
  • Health & Medical Sciences (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Computing Systems (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computational Linguistics (AREA)
  • Medical Informatics (AREA)
  • Information Transfer Between Computers (AREA)
  • Storage Device Security (AREA)

Abstract

정보 리소스에 삽입된 콘텐츠를 제한하기 위한 시스템 및 방법이 여기에 제공된다. 컴퓨팅 디바이스는 정보 리소스에 포함된 콘텐츠 요소를 식별할 수 있다. 컴퓨팅 디바이스는 정보 리소스에 포함된 콘텐츠 요소에 대응하는 비트 스트림을 식별할 수 있다. 컴퓨팅 디바이스는 식별된 비트 스트림을 해싱하여 콘텐츠 요소에 대응하는 요소 식별자를 생성할 수 있다. 컴퓨팅 디바이스는 요소 식별자를 이용하여 제한된 콘텐츠 데이터베이스에 액세스할 수 있다. 컴퓨팅 디바이스는 제한된 콘텐츠 데이터베이스 내의 요소 식별자를 찾는 것에 응답하여, 콘텐츠 제한 정책에 따라 정보 리소스 상에 콘텐츠 요소를 제시할 수 있다.

Description

정보 리소스들 상에서의 해시 기반 동적 제한
관련 출원에 대한 상호 참조
본 출원은 "HASH-BASED DYNAMIC RESTRICTION OF CONTENT ON INFORMATION RESOURCES" 라는 명칭으로 2016년 12월 30일자로 미국에 출원된 미국특허출원(출원번호 62/440,792)의 우선권을 주장하며, 상기 미국특허출원은 본 발명에 대한 참조로서 그 전체 내용이 본 명세서에 통합된다.
인터넷과 같은 컴퓨터 네트워크 환경에서, 정보 리소스(예를 들어, 웹 페이지) 및 이러한 정보 리소스에 포함된 콘텐츠 요소는, 클라이언트 디바이스에서 실행되는 어플리케이션(예를 들어, 웹 브라우저)에 의해 파싱 및 렌더링될 수 있다. 정보 리소스 및 정보 리소스 상의 콘텐츠 요소는 컴퓨터 네트워크 환경을 통해 서로 다른 서버들로부터 클라이언트 디바이스로 전송될 수 있다.
개요
적어도 한 양태는 정보 리소스에 삽입된 콘텐츠를 제한하는 방법에 관한 것이다. 하나 이상의 프로세서를 갖는 컴퓨팅 디바이스는 콘텐츠 요소의 프리젠테이션을 수정하기 위한 콘텐츠 제한 정책이 적용될 정보 리소스에 포함된 콘텐츠 요소를 식별할 수 있다. 컴퓨팅 디바이스는 상기 정보 리소스에 포함된 콘텐츠 요소에 대응하는 비트 스트림을 식별할 수 있다. 컴퓨팅 디바이스는 상기 식별된 비트 스트림을 해싱하여 상기 콘텐츠 요소에 대응하는 요소 식별자를 생성할 수 있다. 컴퓨팅 디바이스는 제한된 콘텐츠 데이터베이스에 상기 요소 식별자를 이용하여 액세스할 수 있다. 컴퓨팅 디바이스는 상기 제한된 콘텐츠 데이터베이스 내에서 상기 요소 식별자를 찾아내는 것에 응답하여, 상기 콘텐츠 제한 정책에 따라 상기 정보 리소스 상의 상기 콘텐츠 요소의 프리젠테이션을 수정할 수 있다.
일부 구현예에서, 컴퓨팅 디바이스는 요소 식별자를 이용하여 컴퓨팅 디바이스에 저장된 로컬 제한된 콘텐츠 데이터베이스에 액세스할 수 있다. 일부 구현예에서, 컴퓨팅 디바이스는 로컬 제한된 콘텐츠 데이터베이스에서 요소 식별자를 찾지 못한 것에 응답하여 원격 디바이스와 관련된 원격 제한된 콘텐츠 데이터베이스에서 상기 요소 식별자를 찾으라는 요청을 상기 원격 디바이스로 전송할 수 있다. 요청을 수신하면, 원격 디바이스는 요소 식별자를 이용하여 원격 제한된 콘텐츠 데이터베이스에 액세스할 수 있다. 일부 구현예에서, 컴퓨팅 디바이스는 원격 디바이스와 관련된 원격 제한된 콘텐츠 데이터베이스에 요소 식별자가 있음을 나타내는 응답을 원격 디바이스로부터 수신할 수 있다.
몇몇 구현예에서, 상기 컴퓨팅 디바이스는 요소 식별자를 이용하여 상기 컴퓨팅 디바이스에 저장된 로컬 제한된 콘텐츠 데이터베이스에 액세스할 수 있다. 로컬 제한된 콘텐츠 데이터베이스는 허용될 요소 식별자들의 제 1 리스트 및 제한될 요소 식별자들의 제 2 리스트를 포함할 수 있다. 일부 구현예에서, 컴퓨팅 디바이스는 로컬 제한된 콘텐츠 데이터베이스에서 요소 식별자를 찾지 못한 것에 응답하여, 상기 콘텐츠 요소 및 상기 정보 리소스의 렌더링 속성들에 기초하는 콘텐츠 렌더링 제한 확장에 따라 상기 콘텐츠 요소가 수정되어야 하는지를 결정할 수 있다. 일부 구현예에서, 컴퓨팅 디바이스는, 콘텐츠 제한 정책이 콘텐츠 렌더링 제한 확장에 따라 콘텐츠 요소에 적용될 것이라고 결정함에 응답하여, 로컬 제한된 콘텐츠 데이터베이스에 포함된 제 2 리스트에 요소 식별자를 삽입할 수 있다. 일부 구현예에서, 컴퓨팅 디바이스는 콘텐츠 제한 정책이 콘텐츠 렌더링 제한 확장에 따라 콘텐츠 요소에 적용될 것이라는 결정에 응답하여 원격 제한된 콘텐츠 데이터베이스에 요소 식별자를 전송할 수 있다.
몇몇 구현예에서, 상기 컴퓨팅 디바이스는 요소 식별자를 이용하여 상기 컴퓨팅 디바이스에 저장된 로컬 제한된 콘텐츠 데이터베이스에 액세스할 수 있다. 일부 구현예에서, 컴퓨팅 디바이스는 로컬 제한된 콘텐츠 데이터베이스에서 요소 식별자를 찾지 못한 것에 응답하여 원격 디바이스와 관련된 원격 제한된 콘텐츠 데이터베이스에서 요소 식별자를 찾기위한 요청을 원격 디바이스로 전송할 수 있다. 상기 요청의 수신은 원격 디바이스로 하여금 요소 식별자를 이용하여 원격 제한된 콘텐츠 데이터베이스에 액세스하게 트리거링할 수 있다. 상기 요청의 수신은 원격 디바이스로 하여금 원격 제한된 콘텐츠 데이터베이스 내에서 상기 요소 식별자를 찾지 못함에 응답하여, 상기 콘텐츠 요소 및 상기 정보 리소스의 렌더링 속성들에 기초하는 콘텐츠 렌더링 제한 확장에 따라 상기 콘텐츠 요소가 수정되어야 하는지를 결정하게 트리거링할 수 있다. 상기 요청의 수신은 원격 디바이스로 하여금 상기 콘텐츠 렌더링 제한 확장에 따라 상기 콘텐츠 제한 정책이 상기 콘텐츠 요소에 적용될 것이라는 결정에 응답하여, 상기 요소 식별자를 상기 원격 제한된 콘텐츠 데이터베이스에 삽입하도록 트리거링할 수 있다. 일부 구현예에서, 컴퓨팅 디바이스는 원격 디바이스와 연관된 원격 제한된 콘텐츠 데이터베이스 상에 요소 식별자가 있음을 나타내는 응답을 원격 디바이스로부터 수신할 수 있다.
일부 구현예에서, 컴퓨팅 디바이스는 상기 제한된 콘텐츠 데이터베이스 내에서 상기 요소 식별자를 찾지 못함에 응답하여, 상기 정보 리소스 상의 상기 콘텐츠 요소의 제 1 포함(first inclusion) 동안 상기 콘텐츠 요소의 속성들을 디폴트 값들로 설정할 수 있다. 일부 구현예에서, 컴퓨팅 디바이스는 상기 콘텐츠 요소의 상기 제 1 포함 이후에, 상기 콘텐츠 요소 및 상기 정보 리소스의 렌더링 속성들에 기초하는 콘텐츠 렌더링 제한 확장에 따라 상기 콘텐츠 요소가 수정될 것으로 결정할 수 있다. 일부 구현예에서, 컴퓨팅 디바이스는 상기 콘텐츠 렌더링 제한 확장에 따라 상기 콘텐츠 제한 정책이 상기 콘텐츠 요소에 적용되어야한다고 결정한 것에 응답하여, 상기 요소 식별자를 상기 제한된 콘텐츠 데이터베이스에 삽입할 수 있다. 일부 구현예에서, 컴퓨팅 디바이스는, 상기 콘텐츠 제한 정책에 의해 지정된 바와 같이 상기 제 1 포함 이후의 상기 콘텐츠 요소의 제 2 포함 동안 상기 정보 리소스 또는 제 2 정보 리소스 중 적어도 하나로부터 상기 콘텐츠 요소를 삭제할 수 있다.
일부 구현예에서, 컴퓨팅 디바이스는 상기 콘텐츠 요소에 대한 확인 응답을 원격 서버로 전송하는 것을 허용할 수 있다. 일부 구현예에서, 컴퓨팅 디바이스는 콘텐츠 요소에 대한 확인 응답을 원격 서버로의 전송하는 것에 후속하여 상기 정보 리소스로부터 상기 콘텐츠 요소를 삭제할 수 있다. 일부 구현예에서, 컴퓨팅 디바이스는 상기 콘텐츠 제한 정책에 의해 지정된 바와 같이 상기 정보 리소스 상에서 상기 콘텐츠 요소 위에 위치된 제 2 콘텐츠 요소를 삽입할 수 있다. 일부 구현예에서, 컴퓨팅 디바이스는 상기 콘텐츠 제한 정책에 의해 지정된 바와 같이 상기 정보 리소스로부터 상기 콘텐츠 요소를 제거할 수 있다. 일부 구현예에서, 컴퓨팅 디바이스는 상기 콘텐츠 요소의 가시성(visibility) 속성을 상기 콘텐츠 제한 정책에 의해 지정된 바와 같이 널(null)로 설정할 수 있다. 일부 구현예에서, 컴퓨팅 디바이스는 콘텐츠 요소를 나타내는 이진 시퀀스의 부분으로부터 상기 콘텐츠 요소의 일부분에 대응하는 비트 스트림을 식별할 수 있다.
본 발명의 적어도 일 양상은 정보 리소스에 삽입된 콘텐츠를 제한하기 위한 시스템에 관한 것이다. 시스템은 하나 이상의 프로세서에서 실행되는 리소스 파서를 포함할 수 있다. 리소스 파서는 콘텐츠 요소의 프리젠테이션을 수정하기 위한 콘텐츠 제한 정책이 적용될 정보 리소스에 포함된 콘텐츠 요소를 식별할 수 있다. 리소스 파서는 상기 정보 리소스에 포함된 콘텐츠 요소에 대응하는 비트 스트림을 식별할 수 있다. 시스템은 상기 하나 이상의 프로세서들 상에서 실행되는 요소 해셔(element hasher)를 포함할 수 있다. 요소 해셔는 상기 콘텐츠 요소에 대응하는 요소 식별자를 생성하도록 상기 식별된 비트 스트림을 해싱할 수 있다. 시스템은 상기 하나 이상의 프로세서들 상에서 실행되는 콘텐츠 제한기를 포함할 수 있다. 콘텐츠 제한기는 제한된 콘텐츠 데이터베이스에 상기 요소 식별자를 이용하여 액세스할 수 있다. 콘텐츠 제한기는 상기 제한된 콘텐츠 데이터베이스 내에서 상기 요소 식별자를 찾아내는 것에 응답하여, 상기 콘텐츠 제한 정책에 따라 상기 정보 리소스 상의 상기 콘텐츠 요소의 프리젠테이션을 수정할 수 있다.
일부 구현예에서, 콘텐츠 제한기는 컴퓨팅 디바이스에 저장된 로컬 제한된 콘텐츠 데이터베이스에 요소 식별자를 이용하여 액세스할 수 있다. 일부 구현예에서, 콘텐츠 제한기는 상기 로컬 제한된 콘텐츠 데이터베이스 내에서 상기 요소 식별자를 찾지 못함에 응답하여, 원격 디바이스와 관련된 원격 제한된 콘텐츠 데이터베이스에서 상기 요소 식별자를 찾으라는 요청을 상기 원격 디바이스로 전송할 수 있다. 상기 요청의 수신은 상기 원격 디바이스가 상기 요소 식별자를 이용하여 상기 원격 제한된 콘텐츠 데이터베이스에 액세스하도록 트리거링할 수 있다. 일부 구현예에서, 콘텐츠 제한기는 상기 원격 디바이스와 관련된 원격 제한된 콘텐츠 데이터베이스 상에 상기 요소 식별자가 있음을 나타내는 응답을 상기 원격 디바이스로부터 수신할 수 있다.
일부 구현예에서, 콘텐츠 제한기는 상기 컴퓨팅 디바이스에 저장된 로컬 제한된 콘텐츠 데이터베이스에 상기 요소 식별자를 이용하여 액세스할 수 있다. 일부 구현예에서, 콘텐츠 제한기는 상기 로컬 제한된 콘텐츠 데이터베이스 내에서 상기 요소 식별자를 찾지 못함에 응답하여, 상기 콘텐츠 요소 및 상기 정보 리소스의 렌더링 속성들에 기초하는 콘텐츠 렌더링 제한 확장에 따라 상기 콘텐츠 요소가 수정되어야 하는지를 결정할 수 있다. 일부 구현예에서, 콘텐츠 제한기는 상기 콘텐츠 렌더링 제한 확장에 따라 상기 콘텐츠 요소가 수정될 것이라는 결정에 응답하여, 상기 요소 식별자를 상기 로컬 제한된 콘텐츠 데이터베이스에 삽입할 수 있다. 일부 구현예에서, 콘텐츠 제한기는 상기 콘텐츠 렌더링 제한 확장에 따라 상기 콘텐츠 요소가 수정될 것이라는 결정에 응답하여, 저장하기 위해 상기 요소 식별자를 원격 제한된 콘텐츠 데이터베이스로 전송할 수 있다.
일부 구현예에서, 콘텐츠 제한기는 상기 컴퓨팅 디바이스에 저장된 로컬 제한된 콘텐츠 데이터베이스에 상기 요소 식별자를 이용하여 액세스할 수 있다. 일부 구현예에서, 콘텐츠 제한기는 상기 로컬 제한된 콘텐츠 데이터베이스 내에서 상기 요소 식별자를 찾지 못함에 응답하여, 원격 디바이스와 관련된 원격 제한된 콘텐츠 데이터베이스 상에서 상기 요소 식별자를 찾으라는 요청을 상기 원격 디바이스로 전송할 수 있다. 상기 요청의 수신은 상기 원격 디바이스로 하여금 상기 요소 식별자를 이용하여 상기 원격 제한된 콘텐츠 데이터베이스에 액세스하게 트리거링할 수 있다. 상기 요청의 수신은 상기 원격 디바이스로 하여금 상기 원격 제한된 콘텐츠 데이터베이스 내에서 상기 요소 식별자를 찾지 못함에 응답하여, 상기 콘텐츠 요소 및 상기 정보 리소스의 렌더링 속성들에 기초하는 콘텐츠 렌더링 제한 확장에 따라 상기 콘텐츠 요소가 수정되어야 하는지를 결정하게 트리거링할 수 있다. 상기 요청의 수신은 상기 원격 디바이스로 하여금 상기 콘텐츠 렌더링 제한 확장에 따라 상기 콘텐츠 제한 정책이 상기 콘텐츠 요소에 적용될 것이라는 결정에 응답하여, 상기 요소 식별자를 상기 원격 제한된 콘텐츠 데이터베이스에 삽입하도록 트리거링할 수 있다. 일부 구현예에서, 콘텐츠 제한기는 상기 원격 디바이스와 관련된 원격 제한된 콘텐츠 데이터베이스 상에 상기 요소 식별자가 있음을 나타내는 응답을 상기 원격 디바이스로부터 수신할 수 있다.
일부 구현예에서, 콘텐츠 제한기는 상기 제한된 콘텐츠 데이터베이스 내에서 상기 요소 식별자를 찾지 못함에 응답하여, 상기 정보 리소스 상의 상기 콘텐츠 요소의 제 1 포함(first inclusion) 동안 상기 콘텐츠 요소의 속성들을 디폴트 값들로 설정할 수 있다. 일부 구현예에서, 콘텐츠 제한기는 상기 콘텐츠 요소의 상기 제 1 포함 이후에, 상기 콘텐츠 요소 및 상기 정보 리소스의 렌더링 속성들에 기초하는 콘텐츠 렌더링 제한 확장에 따라 상기 콘텐츠 요소가 수정될 것으로 결정할 수 있다. 일부 구현예에서, 콘텐츠 제한기는 상기 콘텐츠 제한 정책에 의해 지정된 바와 같이 상기 제 1 포함 이후의 상기 콘텐츠 요소의 제 2 포함 동안 상기 정보 리소스 또는 제 2 정보 리소스 중 적어도 하나로부터 상기 콘텐츠 요소를 삭제할 수 있다.
일부 구현예에서, 콘텐츠 제한기는 상기 콘텐츠 요소에 대한 확인 응답을 원격 서버로 전송하는 것을 허용할 수 있다. 일부 구현예에서, 콘텐츠 제한기는 상기 콘텐츠 요소에 대한 확인 응답의 원격 서버로의 전송에 후속하여 상기 정보 리소스로부터 상기 콘텐츠 요소를 삭제할 수 있다. 일부 구현예에서, 콘텐츠 제한기는 상기 콘텐츠 제한 정책에 의해 지정된 바와 같이 상기 정보 리소스 상에서 상기 콘텐츠 요소 위에 위치된 제 2 콘텐츠 요소를 삽입할 수 있다. 일부 구현예에서, 콘텐츠 제한기는 상기 콘텐츠 제한 정책에 의해 지정된 바와 같이 상기 정보 리소스로부터 상기 콘텐츠 요소를 제거할 수 있다. 일부 구현예에서, 콘텐츠 제한기는 상기 콘텐츠 요소의 가시성(visibility) 속성을 상기 콘텐츠 제한 정책에 의해 지정된 바와 같이 널(null)로 설정할 수 있다. 일부 구현예에서, 리소스 파서는 상기 콘텐츠 요소를 나타내는 이진 시퀀스의 부분으로부터 상기 콘텐츠 요소의 일부분에 대응하는 비트 스트림을 식별할 수 있다.
본 발명의 적어도 일 양상은 정보 리소스의 무결성을 간섭하는 스트립트들에 대한 대비책을 채용하는 방법에 관한 것이다. 하나 이상의 프로세서를 갖는 데이터 프로세싱 시스템은 클라이언트 디바이스에 이전에 전송된 정보 리소스 상의 제 1 콘텐츠 요소를 식별할 수 있다. 제 1 콘텐츠 요소는 제 1 비트 스트림을 가질 수 있다. 데이터 프로세싱 시스템은 정보 리소스의 제 1 콘텐츠 요소의 렌더링에 대한 간섭을 결정할 수 있다. 데이터 프로세싱 시스템은 정보 리소스 상의 제 1 콘텐츠 요소의 렌더링에 대한 간섭을 결정함에 응답하여, 제 1 콘텐츠 요소에 기초하여 후속 정보 리소스에 대한 제 2 콘텐츠 요소를 생성할 수 있다. 제 2 콘텐츠 요소는 제 1 비트 스트림과 상이한 제 2 비트 스트림을 가질 수 있다. 데이터 프로세싱 시스템은 제 2 콘텐츠 요소를 포함하는 후속 정보 리소스를 클라이언트 디바이스로 전송할 수 있다. 제 2 콘텐츠 요소의 수신은 클라이언트 디바이스 상에서 실행되는 콘텐츠 제한 스크립트로 하여금 제 1 비트 스트림과 상이한 제 2 비트 스트림에 응답하여 렌더링-기반 제한 정책을 적용하게할 수 있다.
일부 구현예에서, 데이터 프로세싱 시스템은 제 1 콘텐츠 요소의 클라이언트 디바이스로의 전송에 대응하는 제 1 시간을 식별할 수 있다. 일부 구현예에서, 데이터 프로세싱 시스템은 클라이언트 디바이스로부터의 제 1 콘텐츠 요소에 대한 확인 응답의 수신에 대응하는 제 2 시간을 식별할 수 있다. 일부 구현예에서, 데이터 프로세싱 시스템은 제 1 시간과 제 2 시간 사이에 경과된 시간이 소정의 임계값보다 큰지를 결정할 수 있다.
일부 구현예에서, 데이터 프로세싱 시스템은 제 1 콘텐츠 요소의 제 1 전송과 제 1 콘텐츠 요소에 대한 제 1 확인 응답의 제 1 수신 사이의 제 1 경과 시간을 식별할 수 있다. 일부 구현예에서, 데이터 프로세싱 시스템은 제 1 콘텐츠 요소의 제 2 전송과 제 1 콘텐츠 요소에 대한 제 2 확인 응답의 제 2 수신 사이의 제 2 경과 시간을 식별할 수 있다. 제 2 전송은 제 1 전송에 후속될 수 있다. 제 2 수신은 제 1 수신에 후속될 수 있다. 일부 구현예에서, 데이터 프로세싱 시스템은 제 2 경과 시간이 제 1 경과 시간보다 소정의 임계 값만큼 작은 것으로 결정할 수 있다.
일부 구현예에서, 데이터 프로세싱 시스템은, 정보 리소스를 클라이언트 디바이스로 전송한 것에 후속하여, 제 1 콘텐츠 요소로서 정보 리소스에 삽입하기 위해 콘텐츠 요청의 예상 수신 시간을 결정할 수 있다. 일부 구현예에서, 데이터 프로세싱 시스템은 제 1 콘텐츠 요소로서 정보 리소스에 삽입하기 위해 콘텐츠 요청의 실제 수신 시간을 식별할 수 있다. 일부 구현예에서, 데이터 프로세싱 시스템은 콘텐츠 요청의 예상 수신 시간 및 실제 수신 시간이 소정의 임계값 이상으로 차이가 나는지를 결정할 수 있다.
일부 구현예에서, 데이터 프로세싱 시스템은 정보 리소스를 클라이언트 디바이스로 전송한 것에 후속하여, 정보 리소스로의 제 1 콘텐츠 요소에 대한 확인 응답의 예상 수신 시간을 결정할 수 있다. 일부 구현예에서, 데이터 프로세싱 시스템은 정보 리소스로의 제 1 콘텐츠 요소에 대한 확인 응답의 실제 시간을 식별할 수 있다. 일부 구현예에서, 데이터 프로세싱 시스템은 확인 응답의 예상 수신 시간 및 실제 시간이 소정의 임계값 이상으로 차이가 나는지를 결정할 수 있다.
일부 구현예에서, 데이터 프로세싱 시스템은 제 1 콘텐츠 요소로서 정보 리소스 내에 삽입을 위해 클라이언트 디바이스에 의해 콘텐츠 요청이 전송되지 않았음을 결정할 수 있다. 일부 구현예에서, 데이터 프로세싱 시스템은 제 1 콘텐츠 요소의 시각적 특성을 수정하여 제 2 콘텐츠 요소를 생성하여 제 1 비트 스트림으로부터 제 2 비트 스트림으로 변경되게할 수 있다. 일부 구현예에서, 데이터 프로세싱 시스템은 제 1 비트 스트림으로부터 제 2 비트 스트림으로의 변경을 야기하도록 제 2 콘텐츠 요소를 생성하기 위해 제 1 콘텐츠 요소의 파일 경로명을 수정할 수 있다. 일부 구현예에서, 데이터 프로세싱 시스템은 제 1 비트 스트림으로부터 제 2 비트 스트림으로의 변경을 야기하도록 제 2 콘텐츠 요소를 생성하기 위해 제 1 콘텐츠 요소의 확인 응답 코드를 수정할 수 있다. 일부 구현예에서, 데이터 프로세싱 시스템은 부속 코드를 제 1 콘텐츠 요소에 삽입하여 제 2 콘텐츠 요소를 생성할 수 있다. 부속 코드는 제 1 비트 스트림으로부터 제 2 비트 스트림으로 변경을 야기하도록 제 2 비트 스트림을 생성하도록 구성될 수 있다.
본 발명의 적어도 일 양상은 정보 리소스의 무결성을 간섭하는 스트립트들에 대한 대비책을 채용하기 위한 시스템에 관한 것이다. 상기 시스템은 하나 이상의 프로세서를 갖는 데이터 프로세싱 시스템 상에서 실행되는 간섭 검출기를 포함할 수 있다. 간섭 검출기는 클라이언트 디바이스로 이전에 전송된 정보 리소스 상의 제 1 콘텐츠 요소를 식별할 수 있다. 제 1 콘텐츠 요소는 제 1 비트 스트림을 가질 수 있다. 간섭 검출기는 정보 리소스 상의 제 1 콘텐츠 요소의 렌더링에 대한 간섭을 결정할 수 있다. 시스템은 데이터 프로세싱 시스템에서 실행되는 콘텐츠 수정기를 가질 수 있다. 콘텐츠 수정기는 정보 리소스 상의 제 1 콘텐츠 요소의 렌더링에 대한 간섭을 결정하는 것에 응답하여, 제 1 콘텐츠 요소에 기초하여 후속 정보 리소스를 위한 제 2 콘텐츠 요소를 생성할 수 있다. 제 2 콘텐츠 요소는 제 1 비트 스트림과 상이한 제 2 비트 스트림을 가질 수 있다. 콘텐츠 수정기는 제 2 콘텐츠 요소를 포함하는 후속 정보 리소스를 클라이언트 디바이스로 전송할 수 있다. 제 2 콘텐츠 요소의 수신은 클라이언트 디바이스 상에서 실행되는 콘텐츠 제한 스크립트로 하여금 제 1 비트 스트림과 상이한 제 2 비트 스트림에 응답하여 렌더링-기반 제한 정책을 적용하게할 수 있다.
일부 구현예에서, 간섭 검출기는 제 1 콘텐츠 요소의 클라이언트 디바이스로의 전송에 대응하는 제 1 시간을 식별할 수 있다. 일부 구현예에서, 간섭 검출기는 클라이언트 디바이스로부터의 제 1 콘텐츠 요소에 대한 확인 응답의 수신에 대응하는 제 2 시간을 식별할 수 있다. 일부 구현예들에서, 간섭 검출기는 제 1 시간과 제 2 시간 사이에 경과된 시간이 미리 결정된 임계값보다 큰지를 결정할 수 있다.
일부 구현예에서, 간섭 검출기는 제 1 콘텐츠 요소의 제 1 전송과 제 1 콘텐츠 요소에 대한 제 1 확인 응답의 제 1 수신 사이의 제 1 경과 시간을 식별할 수 있다. 일부 구현예에서, 간섭 검출기는 제 1 콘텐츠 요소의 제 2 전송과 제 1 콘텐츠 요소에 대한 제 2 확인 응답의 제 2 수신 사이의 제 2 경과 시간을 식별할 수 있다. 제 2 전송은 제 1 전송에 후속될 수 있다. 제 2 수신은 제 1 수신에 후속될 수 있다. 일부 구현예에서, 간섭 검출기는 제 2 경과 시간이 제 1 경과 시간보다 소정의 임계값 만큼 작은지를 결정할 수 있다.
일부 구현예에서, 간섭 검출기는 클라이언트 디바이스로 정보 리소스를 전송하는 것에 후속하여, 제 1 콘텐츠 요소로서 정보 리소스에 삽입하기 위한 콘텐츠 요청의 예상 수신 시간을 결정할 수 있다. 일부 구현예에서, 간섭 검출기는 제 1 콘텐츠 요소로서 정보 리소스에 삽입하기 위한 콘텐츠 요청의 실제 수신 시간을 식별할 수 있다. 일부 구현예에서, 간섭 검출기는 콘텐츠 요청의 예상 수신 시간 및 실제 수신 시간이 소정의 임계값 이상으로 차이가 나는지를 결정할 수 있다.
일부 구현예에서, 간섭 검출기는 클라이언트 디바이스로 정보 리소스를 전송하는 것에 후속하여, 정보 리소스로의 제 1 콘텐츠 요소에 대한 확인 응답의 예상 수신 시간을 결정할 수 있다. 일부 구현예에서, 간섭 검출기는 정보 리소스로의 제 1 콘텐츠 요소에 대한 확인 응답의 실제 수신 시간을 식별할 수 있다. 일부 구현예에서, 간섭 검출기는 확인 응답의 예상 수신 시간 및 실제 수신 시간이 미리 결정된 임계값보다 차이가 있음을 결정할 수 있다. 일부 구현예에서, 간섭 검출기는 제 1 콘텐츠 요소로서 정보 리소스에 삽입하기 위해 클라이언트 디바이스에 의해서 어떠한 콘텐츠 요청도 전송되지 않았음을 결정할 수 있다.
일부 구현예에서, 콘텐츠 수정기는 제 1 비트 스트림으로부터 제 2 비트 스트림으로의 변화를 야기하는 제 2 콘텐츠 요소를 생성하도록 제 1 콘텐츠 요소의 시각 특성을 수정할 수 있다. 일부 구현예에서, 콘텐츠 수정기는 제 1 콘텐츠 요소의 파일 경로명을 수정하여, 제 1 비트 스트림으로부터 제 2 비트 스트림으로의 변화를 야기하는 제 2 콘텐츠 요소를 생성할 수 있다. 일부 구현예에서, 콘텐츠 수정기는 제 1 콘텐츠 요소의 확인 응답 코드를 수정하여, 제 1 비트 스트림으로부터 제 2 비트 스트림으로 변화를 야기하는 제 2 콘텐츠 요소를 생성할 수 있다. 일부 구현들에서, 콘텐츠 수정기는 부속 코드를 제 1 콘텐츠 요소에 삽입하여 제 2 콘텐츠 요소를 생성할 수 있다. 부속 코드는 제 1 비트 스트림으로부터 제 2 비트 스트림으로의 변화를 야기하는 제 2 비트 스트림을 생성하도록 구성될 수 있다.
이들 및 다른 양상들 및 구현예들이 아래에서 상세히 설명된다. 전술한 정보 및 후술될 상세한 설명은 다양한 양상들 및 구현예들의 예시적인 일례들을 포함하고 있으며, 청구된 양상들 및 구현예들의 본질 및 특성을 이해하기 위한 개요 또는 프레임워크를 제공한다. 도면들은 다양한 양상들 및 구현예들에 대한 예시 및 추가적인 이해를 제공하며, 본 명세서에 통합되어 본 명세서의 일부를 구성한다.
첨부된 도면들은 반드시 축척대로 도시되는 것으로 의도되지 않는다. 다양한 도면에서 동일한 참조 번호 및 명칭은 동일한 요소를 나타낸다. 명확성을 위해 모든 도면의 모든 구성 요소들에 라벨이 붙어있는 것은 아니다.
도 1은 예시적인 실시예에 따른 해시 기반의 동적 콘텐츠의 제한과 이에 대응책을 채용하기 위한 컴퓨터 네트워크 환경의 일 실시예를 도시하는 블록도이다.
도 2는 예시적인 실시예에 따른 정보 리소스에 삽입된 콘텐츠를 제한하기 위한 시스템을 도시한 블록도이다.
도 3은 예시적인 실시예에 따라 콘텐츠를 제한하는 시스템에 의해서 허용 혹은 제한되는 정보 리소스의 콘텐츠 요소들의 플로우 프로세스를 도시한 블록도이다.
도 4는 예시적인 실시예에 따라 정보 리소스에 삽입된 콘텐츠를 제한하는 방법의 흐름도이다.
도 5는 정보 리소스에 삽입된 콘텐츠를 제한하는 예시적인 실시예에 따른 방법을 도시하는 흐름도이다.
도 6은 예시적인 실시예에 따라 정보 리소스의 무결성을 간섭하는 스크립트에 대한 대책을 채용하는 시스템의 블록도이다.
도 7은 예시적인 실시예에 따라 정보 리소스의 무결성을 간섭하는 스크립트에 대한 대책을 채용하는 시스템에 의해서 수정된 정보 리소스의 콘텐츠 요소들의 플로우 프로세스를 도시한 블록도이다.
도 8은 예시적인 실시예에 따라 정보 리소스의 무결성을 간섭하는 스크립트에 대한 대책 방법을 도시한 흐름도이다.
도 9는 예시적인 실시예에 따라 정보 리소스의 무결성을 간섭하는 스크립트에 대한 대책 방법을 도시한 흐름도이다.
도 10은 예시적인 실시예에 따라 본 명세서에 서술 및 예시된 시스템들 및 방법들의 요소들을 구현하기 위해 채용될 수 있는 컴퓨터 시스템을 위한 일반적인 아키텍처를 예시한 블록도이다.
다음의 내용은 해시 기반의 동적 콘텐츠 제한 및 이를 적용하기 위한 방법, 장치, 및 시스템의 다양한 개념들 및 구현예들에 대한 상세한 설명이다. 전술한 개념들이 임의의 특정 구현 방식에 제한되지 않기 때문에, 앞서 소개되고 아래에서 보다 상세히 논의되는 다양한 개념들은 다양한 방식들 중 임의의 방식으로 구현될 수 있다. 이하의 다양한 실시예의 설명을 읽으려는 목적으로, 본 명세서의 섹션 및 각각의 내용에 대한 다음 설명이 도움이 될 수 있다.
섹션 A는 해시 기반 동적 콘텐츠 제한 및 이의 구현을 위한 컴퓨터 네트워크 환경을 설명한다.
섹션 B는 정보 리소스에 삽입된 콘텐츠를 제한하는 시스템과 방법을 설명한다.
섹션 C는 정보 리소스의 무결성을 간섭하는 스크립트에 대한 대책을 적용하는 시스템과 방법을 설명한다.
섹션 D는 여기에 설명된 시스템 및 방법을 실행하는데 유용한 컴퓨팅 시스템 아키텍처를 설명한다.
A. 정보 리소스 상의 콘텐츠에 대한 해쉬 기반의 동적 제한 및 그 대책의 구현을 위한 컴퓨터 네트워크 환경
도 1은 정보 리소스 상의 콘텐츠에 대한 해시 기반의 동적 제한 및 그에 대한 대응책을 위한 일 구현예의 블록도이다. 환경(100)은 적어도 하나의 콘텐츠 제공자 디바이스(115)에 연결된 적어도 하나의 데이터 프로세싱 시스템(110), 적어도 하나의 콘텐츠 발행자 디바이스(120), 적어도 하나의 클라이언트 디바이스(125), 적어도 하나의 프록시 디바이스(145) 및 네트워크를 통한 적어도 하나의 원격 콘텐츠 제한기 디바이스(150)을 포함한다.
간략한 개요에서, 클라이언트 디바이스(125)로부터 콘텐츠에 대한 요청이 있으면, 데이터 프로세싱 시스템(110)은 하나 이상의 콘텐츠 요소를 포함하는 정보 리소스를 네트워크(105)를 통해 클라이언트 디바이스(125)에 제공할 수 있다. 정보 리소스는 콘텐츠 발행자 디바이스(120)로부터 검색될 수 있으며, 하나 이상의 하나 이상의 콘텐츠 요소는 콘텐츠 제공자 디바이스(115)로부터 획득될 수 있다. 정보 리소스 및 정보 리소스 상의 콘텐츠 요소는 클라이언트 디바이스(125) 상에 렌더링하기 위해 어플리케이션(160)에 의해 프로세싱될 수 있다. 일 실시예에서, 원격 콘텐츠 제한기 디바이스(150)는 프리젠테이션 제한기(165)를 이용하여 데이터 프로세싱 시스템(110)에 의해 클라이언트 디바이스로 제공되는 정보 리소스 상의 일부 콘텐츠 요소의 디스플레이 또는 렌더링을 디스에이블하거나 일부 구현예에서는 간섭할 수 있다. 프레젠테이션 제한기(165)는 프록시 디바이스(145) 및 클라이언트 디바이스(125)에 제공되어, 각각의 디바이스에서 프리젠테이션을 제한기(165)를 실행할 수 있다. 정보 리소스 및 정보 리소스 상의 콘텐츠 요소의 무결성을 유지하기 위하여, 데이터 프로세싱 시스템(110)은 콘텐츠 요소의 변형들(variants)을 생성하기 위해 대책 스크립트(countermeasures scripts)를 실행할 수 있다. 콘텐츠 요소의 변형들을 생성함으로써(이는, 프리젠테이션 제한기(165)가 생성된 각각의 변형들을 재프로세싱하게 한다), 대책 스크립트는 프리젠테이션 제한기(165)를 실행하는 컴퓨팅 디바이스의 성능을 저하시킬 수 있는데, 이는 생성된 변형들을 재프로세싱할 때에 프리젠테이션 제한기(165)가 컴퓨티 디바이스의 계산 리소스를 이용하기 때문이다. 네트워크(105), 데이터 프로세싱 시스템(110), 콘텐츠 제공자 디바이스(115), 콘텐츠 발행자 디바이스(120), 클라이언트 디바이스(125), 프록시 디바이스(145), 원격 콘텐츠 제한기 디바이스(150) 및 그 구성요소들의 추가적인 세부 사항이 여기에 제공된다.
더욱 상세하게는, 데이터 프로세싱 시스템(110), 즉 적어도 하나의 프로세서 및 메모리, 즉, 프로세싱 회로를 포함할 수 있다. 메모리는 프로세서에 의해 실행될 때 프로세서로 하여금 여기에서 설명된 하나 이상의 동작을 수행하게 하는 프로세서-실행가능 명령을 저장한다. 프로세서는 마이크로 프로세서, 주문형 집적 회로(ASIC), 필드 프로그래머블 게이트 어레이(FPGA) 기타 등응, 또는 이들의 조합을 포함할 수 있다. 메모리는 전자, 광학, 자기 또는 프로세서에 프로그램 명령을 제공할 수 있는 임의의 다른 저장 디바이스 또는 전송 디바이스를 포함할 수 있지만, 이에 한정되는 것은 아니다. 상기 메모리는 플로피 디스크, CD-ROM, DVD, 자기 디스크, 메모리 칩, ASIC, FPGA, ROM, RAM, EEPROM,(EPROM), 플래시 메모리, 광학 매체, 또는 프로세서가 명령을 판독할 수 있는 임의의 다른 적절한 메모리를 포함할 수 있다. 명령들은 적절한 컴퓨터 프로그래밍 언어의 코드를 포함할 수 있다. 데이터 프로세싱 시스템은 다양한 기능을 수행할 수 있는 하나 이상의 컴퓨팅 디바이스 또는 서버를 포함할 수 있다. 일부 구현예에서, 데이터 프로세싱 시스템은 경매를 호스트하도록 구성된 콘텐츠 배치 시스템을 포함할 수 있다. 일부 구현예에서, 데이터 프로세싱 시스템은 콘텐츠 배치 시스템을 포함하지 않지만, 네트워크(105)를 통해 콘텐츠 배치 시스템과 통신하도록 구성된다.
네트워크(105)는 컴퓨터 네트워크들, 가령 인터넷, 로컬, 광역, 메트로 혹은 다른 영역 네트워크들, 인트라넷, 위성 네트워크, 음성 혹은 데이터 모바일폰 통신 네트워크, 및 이들의 조합을 포함할 수 있다. 시스템(100)의 데이터 프로세싱 시스템(110)은 예를 들어 적어도 하나의 콘텐츠 제공자 디바이스(115), 적어도 하나의 콘텐츠 발행자 디바이스(120), 적어도 하나의 클라이언트 디바이스(125) 또는 적어도 하나의 원격 콘텐츠 제한기 디바이스(150)와 네트워크(105)를 통해 통신할 수 있다. 네트워크(105)는 클라이언트 디바이스(125), 데이터 프로세싱 시스템(110) 및 하나 이상의 콘텐츠 소스들, 가령 웹 서버들 사이에서 정보를 전달하는 임의의 컴퓨터 네트워크일 수 있다. 일부 구현예에서, 네트워크(105)는 근거리 통신망(LAN), 광역 통신망(WAN), 셀룰러 네트워크, 위성 네트워크, 또는 다른 유형의 네트워크와 같은 인터넷 및/또는 다른 유형의 데이터 네트워크를 포함할 수 있다. 네트워크(105)는 또한 네트워크(105) 내에서 데이터를 수신 및/또는 송신하도록 구성된 임의의 개수의 컴퓨팅 디바이스(예를 들어, 컴퓨터, 서버, 라우터, 네트워크 스위치 등)를 포함할 수 있다. 네트워크는 또한, 임의 개수의 유선 및/또는 무선 연결들을 포함할 수 있다. 클라이언트 디바이스(125)는 네트워크(105) 내의 다른 컴퓨팅 디바이스에 유선으로(예를 들어, 광섬유 케이블, CAT5 케이블 등을 통해) 연결된 송수신기와 무선으로(예를 들어, WiFi, 셀룰러, 라디오 등을 통해) 통신할 수 있다. 클라이언트 디바이스(125)는 또한 프록시 디바이스(145)(예를 들어, 라우터, 네트워크 스위치 또는 게이트웨이)를 통해 네트워크(105)의 컴퓨팅 디바이스와 무선으로 통신할 수 있다.
콘텐츠 제공자는 디바이스(115)는 콘텐츠 발행자 디바이스(120) 또는 데이터 프로세싱 시스템(110)에 콘텐츠 요소를 제공하도록, 콘텐츠 제공자 엔티티에 의해 조작되는 서버 또는 다른 컴퓨팅 디바이스를 포함할 수 있다. 콘텐츠 제공 디바이스(115)에 의해 제공되는 콘텐츠는 웹 사이트 또는 웹 페이지와 같은 정보 리소스들 상에 디스플레이하기 위한 제3자 콘텐츠 요소를 포함할 수 있으며, 콘텐츠 발행자 디바이스(120)에 의해 제공된 콘텐츠와 같은 주요 콘텐츠를 포함한다. 콘텐츠 요소는 또한 검색 결과 웹 페이지 상에 디스플레이될 수 있다. 콘텐츠 제공자 디바이스(115)와 관련된 콘텐츠 요소는 스마트 폰 또는 다른 클라이언트 디바이스(125) 상의 어플리케이션의 실행의 일부로서 디스플레이되는 콘텐츠와 같은 웹 페이지 이외의 정보 리소스 상에 디스플레이될 수 있다. 콘텐츠 발행자 디바이스(120) 또는 데이터 프로세싱 시스템(110)은 콘텐츠 제공자 디바이스(115)의 콘텐츠 요소들을 선택할 수 있다. 데이터 프로세싱 시스템(110)은 각 콘텐츠의 다양한 성능 메트릭에 기초하여 콘텐츠 요소들을 선택하기 위해 콘텐츠 배치 프로세스를 실행할 수 있다. 콘텐츠 발행자 디바이스들(120) 또는 데이터 프로세싱 시스템(110)은 클라이언트 디바이스들(125)에서 정보 리소스들 상에 디스플레이하기 위해 콘텐츠 제공자 컴퓨팅 디바이스들로 선택된 콘텐츠 요소들을 전송할 수 있다.
콘텐츠 발행자 디바이스(120)는 콘텐츠 발행 엔티티에 의해 조작되는 서버 또는 다른 컴퓨팅 디바이스를 포함하여, 디스플레이하기 위한 주요 콘텐츠를 네트워크(105)를 통해 제공할 수 있다 예를 들어, 콘텐츠 발행자 디바이스(120)는 웹 페이지 운영자에 의해서 관리될 수 있으며, 웹 페이지 운영자는 주요 콘텐츠를 디스플레이를 위해 웹 페이지 상에 제공한다. 콘텐츠 발행자 디바이스(120)는 또한, 콘텐츠 제공자 디바이스(115)로부터 수신된 제3자 콘텐츠를 디스플레이를 위해 네트워크(105)를 통해 제공할 수 있다. 주요 콘텐츠는 콘텐츠 발행자 디바이스(120)에 의해 제공된 것 이외의 콘텐츠를 포함할 수 있고, 웹 페이지는 콘텐츠 발행자 디바이스(120)에 의해서 콘텐츠 제공자 디바이스(120)로부터 수신된 콘텐츠 요소를 디스플레이하도록 구성된 콘텐츠 슬롯을 포함할 수 있다. 예를 들어, 콘텐츠 발행자 디바이스(120)는 회사의 웹 사이트를 운영할 수 있고, 웹 사이트의 웹 페이지 상에 디스플레이하기 위해 그 회사에 관한 콘텐츠를 제공할 수 있다. 웹 페이지들은 이미지, 텍스트, 비디오 또는 콘텐츠 제공자 디바이스(115)로부터 수신된 이들의 임의의 조합과 같은 콘텐츠 요소의 디스플레이를 위해 구성된 콘텐츠 슬롯을 포함할 수 있다. 일부 구현예에서, 콘텐츠 발행자 디바이스(120)는 검색 엔진 컴퓨팅 디바이스(예: 서버) 또는 검색 엔진 웹 사이트를 운영하는 검색 엔진 운영자를 포함한다. 검색 엔진 웹 페이지의 주요 콘텐츠(예를 들어, 결과 또는 방문 웹 페이지)는 검색 결과를 포함할 수 있을 뿐만 아니라, 콘텐츠 제공자 디바이스(115)로부터의 콘텐츠 요소와 같이 콘텐츠 슬롯에 디스플레이되는 제3자 콘텐츠 요소를 포함할 수 있다. 일부 구현예에서, 콘텐츠 발행자 디바이스(120)는 비디오 콘텐츠를 서비스하기 위한 서버를 포함할 수 있다.
콘텐츠 발행자 디바이스(120)(105)는 네트워크를 통해 클라이언트 디바이스(125)에 디스플레이하기 위해 주요 콘텐츠와 함께 정보 리소스에 포함하도록, 콘텐츠 제공 디바이스(115)로부터 수신된 하나 이상의 콘텐츠 요소를 선택할 수 있다. 콘텐츠 발행자 디바이스(120)는 클라이언트 디바이스들(125)로부터의 콘텐츠에 대한 요청에 응답하여, 콘텐츠 제공자 디바이스(115)로부터 수신된 콘텐츠 요소들을 주요 콘텐츠와 함께 클라이언트 디바이스(125)로 전송할 수 있다. 일부 구현들에서, 주요 콘텐츠의 전송에 후속하여, 콘텐츠 발행자 디바이스들(120)는 클라이언트 디바이스(125)로부터의 추가적인 콘텐츠 요청에 응답하여, 콘텐츠 제공자 디바이스(115)로부터 수신된 콘텐츠 요소를 클라이언트 디바이스(125)로 전송할 수 있다. 일부 구현예에서, 콘텐츠 발행자 디바이스(120)는 주요 콘텐츠에 대한 초기 요청을 클라이언트 디바이스(125)로부터 수신할 수 있고 그리고 이에 응답하여 주요 콘텐츠를 포함하는 정보 리소스를 클라이언트 디바이스(125)로 전송할 수 있다. 일부 구현예에서, 데이터 프로세싱 시스템(110)은 콘텐츠 제공자 디바이스(115)로부터 수신된 하나 이상의 콘텐츠 요소를 선택할 수 있으며 그리고 콘텐츠 발행자 디바이스들(120)로부터 수신된 주요 콘텐츠(예를 들어, 바디, 문단, 텍스트, 비디오 또는 일반적으로 정보 리소스의 중심을 확장할 수 있는 다른 요소)를 선택할 수 있다. 데이터 프로세싱 시스템(110)은 콘텐츠 제공자 디바이스(115)로부터의 선택된 하나 이상의 콘텐츠 요소 및 콘텐츠 발행자 디바이스(120)로부터의 주요 콘텐츠를 이용하여 정보 리소스를 생성할 수 있다. 정보 리소스를 생성하는 데이터 프로세싱 시스템(110)의 기능에 관한 더 상세한 설명은 이하에서 설명된다.
클라이언트 디바이스(125)는 네트워크(105)를 통해 또는 프록시 디바이스(145)를 통한 네트워크(105)를 통해, 콘텐츠 발행자 디바이스(120)에 의해 제공된 콘텐츠(가령, 주요 웹 페이지 콘텐츠 또는 다른 정보 리소스들) 및 콘텐츠 제공자 디바이스(115)에 의해 제공된 콘텐츠들(예를 들어, 정보 리소스에 디스플레이되도록 구성된 콘텐츠 요소들)과 같은 디스플레이 데이터를 통신하도록 구성된 컴퓨팅 디바이스들을 포함할 수 있다. 클라이언트 디바이스(125), 콘텐츠 제공자 디바이스(115), 콘텐츠 발행자 디바이스(120) 및 원격 콘텐츠 제한기 디바이스(150)는 데스크톱 컴퓨터, 랩톱 컴퓨터, 태블릿 컴퓨터, 스마트 폰, 개인 휴대 정보 단말기(PDA), 모바일 디바이스, 소비자 컴퓨팅 디바이스, 서버, 클라이언트, 디지털 비디오 레코더, 텔레비전용 셋톱 박스, 비디오 게임 콘솔, 또는 네트워크(105)를 통해 통신하도록 구성된 임의의 다른 컴퓨팅 디바이스를 포함할 수 있다. 클라이언트 디바이스(125)는 최종 이용자가 콘텐츠를 수신하기 위해 요청을 제출할 수 있는 통신 디바이스일 수 있다. 요청은 검색 엔진에 대한 요청일 수 있으며, 요청에는 검색 질의가 포함될 수 있다. 일부 구현예에서, 요청은 웹 페이지에 대한 액세스 요청을 포함할 수 있다.
클라이언트 디바이스(125)는 어플리케이션(160)을 실행할 수 있다. 어플리케이션(160)은 예를 들어, 인터넷 브라우저, 모바일 어플리케이션, 또는 가령, 정보 리소스에 포함된 컴퓨터-실행가능 명령들 또는 정보 리소스에 포함된 콘텐츠 요소들과 같은 클라이언트 디바이스(125)에 의해 프로세싱되는 컴퓨터-실행가능 명령을 실행 혹은 호출할 수 있는 임의의 다른 컴퓨터 프로그램을 포함할 수 있다. 정보 리소스 및 정보 리소스에 포함된 콘텐츠 요소는 스크립트, 로직, 마크 업 또는 명령들(예컨대, HTML(HyperText Markup Language), XHTML(Extensible HyperText Markup Language), XML(Extensible Markup Language), Cascading Style Sheets CSS) 및 JavaScript, 또는 이들의 조합)에 해당할 수 있다. 어플리케이션(160)은 정보 리소스 및 정보 리소스에 포함된 콘텐츠 요소를 프로세싱하기 위한 문서 트리 생성기, 렌더링 트리 생성기 및 디스플레이 모듈과 같은 임의 개수의 컴포넌트들을 포함할 수 있다. 문서 트리 생성기는 정보 리소스를 파싱하여, 계층적 방식으로 배열된 정보 리소스의 콘텐츠 요소를 포함하는 문서 객체 모델(Document Object Model: DOM) 트리를 생성할 수 있다. DOM 트리를 이용하여, 렌더링 트리 생성기는 정보 리소스의 콘텐츠 요소의 시각적 특성들 또는 속성들을 지정하는 렌더링 트리를 생성할 수 있다. 디스플레이 모듈은 렌더링 트리에 기초하여 클라이언트 디바이스(125)의 디스플레이 상에 정보 리소스를 렌더링 및 디스플레이할 수 있다.
프록시 디바이스(145)는 클라이언트 디바이스(125)와 네트워크(105) 사이에 배치된 컴퓨팅 디바이스들을 포함할 수 있다. 프록시 디바이스(145)는 데이터 프로세싱 시스템(110), 콘텐츠 제공자 디바이스(115), 및 콘텐츠 발행자 디바이스(125)와 같은 하나 이상의 다른 컴퓨팅 디바이스들과 네트워크(105)를 통해 통신하도록 구성될 수 있다. 프록시 디바이스(145)는 예를 들어, 라우터, 네트워크 스위치, 게이트웨이, 네트워크 노드, 또는 클라이언트 디바이스(125)로부터 네트워크(105)로 또는 네트워크(105)로부터 클라이언트 디바이스(125)로 데이터 패킷을 수신 및 포워딩하도록 구성된 임의의 다른 컴퓨팅 디바이스일 수 있다.
원격 콘텐츠 제한기 디바이스(150)는 서버들 또는 콘텐츠 필터링 엔티티(예를 들어, 스크립트 차단기, 광고 차단기, 인터넷 서비스 제공자(ISP), 다른 콘텐츠 제공자 등)에 의해 운영되는 다른 컴퓨팅 디바이스를 포함할 수 있어, 네트워크(105)에 연결된 컴퓨팅 디바이스들 상에서의 실행을 위한 프레젠테이션 제한기(165)를 제공할 수 있다. 일부 구현예에서, 원격 콘텐츠 제한기(150)는 프록시 디바이스(145) 또는 클라이언트 디바이스(125)에서의 설치 및 실행을 위해 프리젠테이션 제한기(165)를 제공할 수 있다. 프리젠테이션 제한기(165)는 별도의 어플리케이션으로서 또는 프록시 디바이스(145) 또는 클라이언트 디바이스(125)에서 실행되는 어플리케이션의 확장으로서 설치될 수 있다. 프리젠테이션 제한기(165)의 기능들은 원격 콘텐츠 제한기 디바이스(150), 프록시 디바이스(145) 및 클라이언트 디바이스(125)에서 개별적으로 또는 원격 콘텐츠 제한기 디바이스(150), 프록시 디바이스(145) 및 클라이언트 디바이스(125) 사이에서 협동적으로 실행될 수 있다. 실행될 때, 프리젠테이션 제한기(165)는 네트워크(105)를 통해 클라이언트 디바이스(125)에 제공된 정보 리소스의 콘텐츠 요소를 변경하거나 수정할 수 있다.
클라이언트 디바이스(125)는 프록시 디바이스(145) 및 원격 콘텐츠 제한기 디바이스(150)는 프리젠테이션 제한기(165)를 실행할 수 있다. 프리젠테이션 제한기(165)는 임의 개수의 모듈들, 컴포넌트들, 혹은 데이터베이스를 포함하여, 정보 리소스 상의 콘텐츠 요소를 변경 혹은 수정할 수 있다. 프리젠테이션 제한기(165)는 적어도 하나의 프로세싱 유닛, 서버, 가상 서버, 회로, 엔진, 에이전트, 어플라이언스, 또는 프리젠테이션 제한기(165)를 실행하는 디바이스 이외의 다른 컴퓨팅 디바이스들과 네트워크(105)를 통해 통신하도록 구성된 프로그램가능 로직 어레이와 같은 다른 로직 디바이스를 포함할 수 있다. 프리젠테이션 제한기(165)는 적어도 하나의 컴퓨터 프로그램 또는 적어도 하나의 스크립트를 포함 또는 실행할 수 있다. 프리젠테이션 제한기(165)는 가령, 하나 이상의 스크립트들을 실행하도록 구성된 하나 이상의 프로세서들과 같은, 하드웨어와 소프트웨어의 조합을 포함할 수 있다. 일부 구현예에서, 프리젠테이션 제한기(165)는 클라이언트 디바이스(125) 상에서 실행되는 어플리케이션(160)에 설치된 확장, 애드온 또는 확장일 수 있다. 일부 구현예에서, 프리젠테이션 제한기(165)는 별도의, 독립형 실행가능 어플리케이션(160)과 인터페이싱한다.
콘텐츠 제공자 디바이스(115), 콘텐츠 발행자 디바이스(120), 클라이언트 디바이스(125), 및 원격 콘텐츠 제한기 디바이스(150)는 프로세서 및 메모리, 즉 프로세싱 회로를 포함할 수 있다. 메모리는 프로세서에 의해 실행될 때 프로세서로 하여금 여기에 설명된 하나 이상의 동작을 수행하게하는 머신 명령어를 저장한다. 프로세서는 마이크로 프로세서, 주문형 집적 회로(ASIC), 필드 프로그래머블 게이트 어레이(FPGA),, 또는 이들의 조합을 포함할 수 있다. 메모리는 전자, 광학, 자기 또는 프로세서에 프로그램 명령을 제공할 수 있는 임의의 다른 저장 디바이스 또는 전송 디바이스를 포함할 수 있지만, 이에 한정되는 것은 아니다. 상기 메모리는 플로피 디스크, CD-ROM, DVD, 자기 디스크, 메모리 칩, ASIC, FPGA, ROM, RAM, EEPROM, EPROM, 플래시 메모리, 광학 매체, 또는 프로세서가 명령을 판독할 수 있는 임의의 다른 적절한 메모리를 포함할 수 있다. 명령들은 적절한 컴퓨터 프로그래밍 언어의 코드를 포함할 수 있다.
콘텐츠 제공자 디바이스(115), 콘텐츠 발행자 디바이스(120), 클라이언트 디바이스(125) 및 원격 콘텐츠 제한기 디바이스(155)는 또한 하나 이상의 사용자 인터페이스 디바이스를 포함할 수 있다. 일반적으로, 사용자 인터페이스 디바이스는 감각 정보(예를 들어, 디스플레이상의 시각화, 하나 이상의 사운드 등)를 생성함으로써 사용자에게 데이터를 전달하고 및/또는 사용자로부터 수신된 감각 정보를 전자 신호로 변환하는 임의의 전자 디바이스를 지칭한다(예: 키보드, 마우스, 포인팅 디바이스, 터치 스크린 디스플레이, 마이크로폰 등). 다양한 구현예에 따라, 하나 이상의 이용자 인터페이스 디바이스는 콘텐츠 제공자 디바이스(115), 콘텐츠 발행자 디바이스(120) 및 클라이언트 디바이스(125)의 하우징 내부에 있을 수도 있으며(예를 들어, 내장 디스플레이, 마이크로폰 등) 또는 콘텐츠 제공자 디바이스(115), 콘텐츠 발행자 디바이스(120) 및 클라이언트 디바이스(125)(예를 들어, 클라이언트 디바이스(125)에 연결된 모니터, 클라이언트 디바이스(125)에 연결된 스피커 등) 및 원격 콘텐츠 제한기 디바이스(150)의 하우징 외부에 있을 수도 있다. 예를 들어, 콘텐츠 제공자 디바이스들(115), 콘텐츠 발행자 디바이스(120), 클라이언트 디바이스(125) 및 원격 콘텐츠 제한기 디바이스(150)는 전자 디스플레이를 포함할 수 있으며, 전자 디스플레이는 하나 이상의 콘텐츠 소스들 및/또는 데이터 프로세싱 시스템(110)으로부터 네트워크(105)를 통해 수신된 웹 페이지 데이터를 이용하여 웹 페이지들을 시각적으로 디스플레이한다.
데이터 프로세싱 시스템(110)은 적어도 하나의 서버를 포함할 수 있다. 예를 들어, 데이터 프로세싱 시스템(110)은 적어도 하나의 데이터 센터 또는 서버 팜에 위치한 복수의 서버를 포함할 수 있다. 일부 구현예에서, 데이터 프로세싱 시스템(110)은 콘텐츠 배치 시스템을 포함한다. 데이터 프로세싱 시스템(110)은 적어도 하나의 콘텐츠 요청 모듈(130), 적어도 하나의 리소스 어셈블러 모듈(135) 및 적어도 하나의 데이터베이스(140)를 포함할 수 있다. 콘텐츠 요청 모듈(130) 및 리소스 어셈블러 모듈(135) 각각은 적어도 하나의 프로세싱 유닛, 서버, 가상 서버, 회로, 엔진, 에이전트, 어플라이언스, 또는 네트워크(105)를 통해 데이터베이스(140) 혹은 다른 컴퓨팅 디바이스들(예를 들어, 콘텐츠 제공자 디바이스 115, 콘텐츠 발행자 디바이스 120 또는 클라이언트 디바이스 125)와 통신하도록 구성된 프로그램 가능한 로직 어레이(105)를 포함할 수 있다.
콘텐츠 요청 모듈(130), 리소스 어셈블러 모듈(135), 데이터베이스(140)은, 하나 이상의 컴퓨터 프로그램 또는 하나 이상의 스크립트를 포함하거나 실행할 수 있다. 콘텐츠 요청 모듈(130) 및 리소스 어셈블러 모듈(135)은 데이터 프로세싱 시스템(110)의 개별 컴포넌트들, 단일 컴포넌트 또는 일부분일 수 있다. 콘텐츠 요청 모듈(130) 및 리소스 어셈블러 모듈(135)은 하나 이상의 스크립트를 실행하도록 구성된 하나 이상의 프로세서들과 같은 소프트웨어 및 하드웨어의 조합을 포함할 수 있다.
또한, 데이터 프로세싱 시스템(110)은 하나 이상의 콘텐츠 저장소나 데이터베이스(140)를 포함할 수 있다. 데이터베이스(140)는 데이터 프로세싱 시스템(110)에 대해 로컬일 수 있다. 일부 실시예에서, 데이터베이스(140)는 데이터 프로세싱 시스템에 대해 원격이지만, 네트워크(105)를 통해 데이터 프로세싱 시스템(110)과 통신할 수 있다. 데이터베이스(140)는 클라이언트 디바이스(125)에 서비스하기 위해 정보 리소스 및 정보 리소스에 포함될 콘텐츠 요소를 포함할 수 있다. 데이터베이스(140)에 저장되는 데이터는 아래에 자세히 설명된다.
콘텐츠 요청 모듈(130)은 클라이언트 디바이스(125)로부터 콘텐츠에 대한 요청을 수신할 수 있다. 콘텐츠에 대한 요청은 정보 리소스에 대한 요청 또는 정보 리소스의 콘텐츠 요소에 대한 요청을 포함할 수 있다. 콘텐츠에 대한 요청은 클라이언트 디바이스(125)에 대응하는 디바이스 식별자를 포함할 수 있다. 콘텐츠에 대한 요청은 클라이언트 디바이스(125) 상에서 실행되는 어플리케이션을 식별하는 어플리케이션 프로파일을 포함할 수 있다. 콘텐츠에 대한 요청은 정보 리소스 또는 콘텐츠 요소에 대한 식별자를 포함할 수 있다. 예를 들어, 콘텐츠에 대한 요청은, 특정 리소스, 가령 웹페이지(예컨대, "https://www.example.com/ homepage.html")를 참조하는 URL(Uniform Resource Locator)을 포함할 수 있다. 정보 리소스에 대한 URL의 호스트 이름은 콘텐츠 요소에 대한 URL의 호스트 이름과 다를 수 있다. 예를 들어, 정보 리소스에 대한 URL은 "https://www.example_publisher.com/index.html"일 수 있는 반면에, "https://www.example_thirdparty.com/content_item_271828.html"이 콘텐츠 요소에 대한 URL이 될 수 있다. 콘텐츠 요소에 대한 요청 URL은 정보 리소스의 URL과 동일한 호스트 페이지를 포함할 수 있다. 예를 들어, 정보 리소스에 대한 URL은 "https://www.example.com/index.html" 일 수 있지만 콘텐츠 요소에 대한 URL은 "https://www.example.com/content_item_978.html" 일 수 있다. 또한, 콘텐츠 요청 모듈(130)는 추가 데이터에 대한 콘텐츠 요청을 파싱할 수 있다.
클라이언트 디바이스(125)로부터 콘텐츠 요청을 수신하는 것에 응답하여, 리소스 어셈블러 모듈(135)는 상기 요청의 어드레스 또는 식별자에 기초하여 정보 리소스 혹은 상기 정보 리소스의 콘텐츠 요소를 전송할 수 있다. 리소스 어셈블러 모듈(135)은 상기 어드레스 또는 식별자에 기초하여 상기 콘텐츠 요청에 포함된 정보 리소스 및 콘텐츠 요소를 식별할 수 있다. 리소스 어셈블러 모듈(135)은 데이터베이스(140)에 액세스하여 상기 어드레스 또는 식별자에 의해 식별된 콘텐츠 요소 및 정보 리소스를 선택할 수 있다. 일부 구현예에서, 리소스 어셈블러 모듈(135)은 콘텐츠 제공자(115) 또는 콘텐츠 발행자(120)에게 요청을 전송하여, 어드레스 또는 식별자에 의해 식별된 정보 리소스 또는 콘텐츠 요소를 액세스, 검색 또는 수신할 수 있다.
리소스 어셈블러 모듈(135)은, 콘텐츠 발행자 디바이스(120) 또는 콘텐츠 제공 디바이스(115)로부터 리다이렉션에 기초하여, 상기 클라이언트 디바이스(125)로 정보 리소스 및 정보 리소스에 대한 콘텐츠 요소를 전송할 수 있다. 또한, 콘텐츠 발행자 디바이스(125)는, 콘텐츠 발행자 디바이스(125)에 의해 유지되는 정보 리소스에 대한 액세스 요청이 데이터 프로세싱 시스템(110)으로 보내지도록, 도메인 또는 어드레스를 구성할 수 있다. 콘텐츠 요청 모듈(130)은 콘텐츠 발행자 디바이스(125)의 정보 리소스를 검색하거나 액세스하기 위한 요청을 수신할 수 있다. 일부 구현예에서, 상기 요청은 디바이스 식별자 또는 다른 정보를 포함할 수 있는바, 리소스 어셈블러 모듈(135)은 이러한 디바이스 식별자 또는 다른 정보를 이용하여, 요청이 수신되었던(예를 들어, 콘텐츠 배치 시스템을 이용하여) 클라이언트 디바이스의 상기 요청과 관련된 콘텐츠를 선택할 수 있다. 리소스 어셈블러 모듈(135)은 콘텐츠 제공자 디바이스(115) 또는 콘텐츠 제공자 디바이스(115)를 대신하여 콘텐츠 요소를 유지 관리하는 임의의 다른 서버 또는 디바이스에 액세스할 수 있다.
리소스 어셈블러 모듈(135)은 하나 이상의 콘텐츠 발행자 디바이스(120) 및 콘텐츠 제공자 디바이스(115)를 대신하여 클라이언트 디바이스(125)로 콘텐츠를 전송할 수 있다. 리소스 어셈블러 모듈(135)은 어드레스 또는 식별자에 의해 식별된 정보 리소스 또는 콘텐츠 요소를 클라이언트 디바이스(125)로 전송 혹은 포워딩할 수 있다. 예를 들어, 데이터 프로세싱 시스템(110)은 클라이언트 디바이스(125)로부터 정보 리소스 요소 또는 콘텐츠에 대한 요청을 수신할 수 있다. 상기 요청은 콘텐츠 발행자 디바이스들(120) 중 하나 및 콘텐츠 제공자 디바이스들(115) 중 하나를 참조하는 어드레스를 포함할 수 있다. 이러한 일례에서, 리소스 어셈블러 모듈(135)은 정보 리소스에 대한 대한 요청을 각각의 콘텐츠 발행자(120)에게 포워딩할 수 있다. 리소스 어셈블러 모듈(135)은 또한 각각의 콘텐츠 제공자 디바이스(115)에 대한 정보 리소스에 삽입하기 위해 콘텐츠 요소에 대한 요청을 전송할 수 있다. 각 콘텐츠 제공자 디바이스(120)로부터 정보 리소스를 수신하고 각각의 콘텐츠 제공자 디바이스(115)로부터 콘텐츠 요소를 수신하면, 리소스 어셈블러 모듈(135)은 원래의 요청과 관련된 클라이언트 디바이스(125)로 콘텐츠 문서를 전송할 수 있다.
리소스 어셈블러(135)는 하나 이상의 콘텐츠 요소를 포함하는 정보 리소스를 생성할 수 있다. 일부 실시예에서, 리소스 어셈블러(135)는 콘텐츠 발행자 디바이스(125)에 의해 유지되는 기존의 정보 리소스를 수정하여, 콘텐츠 제공자 디바이스(115)에 의해 제공된 콘텐츠 요소를 삽입할 수 있다. 일부 구현예에서, 리소스 어셈블러(135)는 콘텐츠 발행자 디바이스(125)와 콘텐츠 제공자 디바이스(115)로부터의 콘텐츠 요소를 포함하는 새로운 정보 리소스를 생성할 수 있다. 정보 리소스의 콘텐츠 요소들의 서브세트는 콘텐츠 발행자 디바이스(120)로부터의 주요(primary) 콘텐츠를 포함할 수 있다. 정보 리소스의 콘텐츠 요소들의 다른 서브세트는 콘텐츠 제공자 디바이스(115)로부터의 제3자 콘텐츠를 포함할 수 있다. 주요 콘텐츠 및 제3자 콘텐츠는 예를 들어, 텍스트 콘텐츠 요소, 이미지 콘텐츠 요소 및 비디오 콘텐츠 요소를 포함할 수 있다. 제3자는, 링크의 어드레스에 대응하는 콘텐츠 제공자 디바이스(115) 또는 콘텐츠 발행자 디바이스(120)로부터 콘텐츠를 검색하기 위해 클라이언트 디바이스(125)를 리다이렉트(redirect)시키는 내장된 링크를 포함할 수 있다. 주요 콘텐츠의 소스 어드레스(예: URL)는 처음에는 제3자 콘텐츠의 소스 어드레스와 다를 수 있다. 일부 구현예에서, 리소스 어셈블러(135)는 동일한 소스 어드레스가 되도록, 주요 콘텐츠 및 제3자 콘텐츠에 대한 콘텐츠 요소들의 소스 어드레스들을 수정할 수 있다. 일부 구현예에서, 콘텐츠 발행자 디바이스(120)는 리소스 어셈블러(135)를 실행 또는 호스팅할 수 있다.
일실시예에서, 원격 콘텐츠 제한기 디바이스(150), 프록시 디바이스(145) 또는 클라이언트 디바이스(125)에서 실행하는 프리젠테이션 제한기(165)는 정보 리소스의 콘텐츠 요소를 수정 또는 변경하려고 시도할 수 있다. 프리젠테이션 제한기(165)는 또한, 식별된 콘텐츠 요소를 모호하게하기 위해 정보 리소스에 추가적인 콘텐츠 요소를 삽입할 수 있다. 일부 구현예에서, 프리젠테이션 제한기(165)는 식별된 콘텐츠 요소의 프리젠테이션을 수정하여 콘텐츠 요소가 원래의 프리젠테이션 포맷과 다른 포맷으로 제공되게 할 수 있다. 데이터 프로세싱 시스템(110)은 네트워크(105)를 통해 전송된 정보 리소스 및 콘텐츠 요소의 무결성을 유지하기 위해 프리젠테이션 제한기(165)에 대한 대책을 전개할 수 있다.
B. 정보 리소스에 삽입된 콘텐츠를 제한하는 시스템 및 방법(Systems and Methods of Restricting Content Inserted into Information Resources)
정보 리소스는 하나 이상의 콘텐츠 요소(예를 들어, 인라인 프레임, 이미지 및 섹션 기타 등등)를 포함할 수 있다. 콘텐츠 요소는 정보 리소스의 시각적 콘텐츠 구성(visual content makeup)을 정의할 수 있다. 예를 들어, 정보 리소스는 주요 콘텐츠(예컨대, 본문 텍스트(body text))와 이미지가 포함된 콘텐츠 요소를 포함할 수 있다. 어플리케이션(예를 들어, 웹 브라우저)은 이러한 콘텐츠 요소를 이용하여 컴퓨팅 디바이스의 디스플레이 상에 정보 리소스를 프로세싱, 렌더링 및 디스플레이할 수 있다. 이러한 콘텐츠 요소 중 일부는 정보 리소스를 제공하는 서버와 다른 서버에서 비롯될 수 있다. 따라서, 그러한 콘텐츠 요소를 갖는 정보 리소스는 보안 취약성을 겪을 수 있다. 예를 들어, 프록시 디바이스는 원래 정보 리소스를 위해 의도된 콘텐츠 요소를 가로챌 수 있으며, 가로챈 것을 자신의 콘텐츠 요소로 대체할 수 있다. 이러한 콘텐츠 요소에는 악성 코드, 트로이 목마 및 바이러스와 같은 악성 코드가 포함될 수 있다. 또한 HCI(Human-Computer Interaction)의 경우, 이러한 콘텐츠 요소는 악성 코드를 삽입하지 않고도, 정보 리소스의 주요 콘텐츠를 읽거나 시청하는 능력을 간섭할 수 있다. 예를 들어, 하나의 콘텐츠 요소는 정보 리소스 상의 나머지 모든 콘텐츠 요소들과는 다른 색상일 수 있으므로, 이용자가 주요 콘텐츠 또는 다른 콘텐츠 요소로부터 산만하게 할 수 있다.
콘텐츠 요소들은 여러 기술들을 이용하여 정보 리소스에 포함 또는 디스플레이로부터 디스에이블될 수 있다. 이러한 기술들 중 하나의 기술은 콘텐츠 요소가 정보 리소스의 나머지 부분과 다른 소스로부터 온 것인지를 소스 어드레스를 이용하여 식별하는 것일 수 있다. 하지만, 이 기술은 콘텐츠 요소에 대한 소스 어드레스가 정보 리소스와 동일한 경우, 또는 정보 리소스에 삽입하기 위한 콘텐츠 요소에 대한 별도의 요청이 없는 경우, 이러한 콘텐츠 요소를 식별하지 못할 수도 있다. 다른 하나의 기술은 이미지 프로세싱 기술을 이용하여 콘텐츠 요소를 식별하여 콘텐츠 요소와 기본 정보 리소스 간의 차이점을 검출하는 것일 수 있다. 그러나, 이러한 기술은 계산 비용이 많이 들며, 결과적으로 컴퓨터 성능의 지연 및 저하를 초래할 수 있다.
전술한 및 다른 기술적 과제들을 해결하기 위하여, 본 발명에서 제안된 시스템은 콘텐츠 요소들을 식별 및 디스에이블하기 위해 해시 함수를 활용할 수 있다. 이미지 프로세싱 알고리즘과 비교하면, 해시 함수는 계산적으로 덜 복잡하며 따라서 컴퓨팅 프로세싱 파워를 덜 소모한다. 프리젠테이션 제한 스크립트를 실행하는 컴퓨팅 디바이스는 정보 리소스 상의 어떤 콘텐츠 요소가 디스에이블되는지를 식별할 수 있다. 각 콘텐츠 요소에 대해, 클라이언트 디바이스는 대응하는 비트 스트림을 식별할 수 있다. 그 다음, 컴퓨팅 디바이스는 대응하는 비트 스트림을 해싱 함수에 대한 입력 파라미터로서 이용하여 해시 값을 계산하여 요소 식별자를 생성할 수 있다.
다음으로, 컴퓨팅 디바이스는 상기 계산된 요소 식별자를 이용하여 공지된 제한된 콘텐츠 요소의 데이터베이스(로컬 또는 서버 상의)에 액세스할 수 있으며 그리고 요소 식별자가 발견되는지 여부에 기초하여 콘텐츠 제한 정책을 적용할 수 있다. 요소 식별자가 데이터베이스에서 발견되면, 컴퓨팅 디바이스는 정보 리소스로부터 각각의 콘텐츠 요소를 제거할 수 있다. 다른 한편으로, 요소 식별자가 발견되지 않으면, 클라이언트 디바이스는 정보 리소스로부터 콘텐츠 요소를 제거할지 여부를 결정하기 위해 콘텐츠 요소에 이미지 프로세싱 알고리즘을 적용할 수 있다. 또한, 컴퓨팅 디바이스는 요소 식별자를 서버에 전송하여, 요소 식별자가 서버에 저장된 제한된 콘텐츠 요소들의 데이터베이스 상에 존재하는지를 결정할 수 있다. 수신되면, 서버는 이미지 프로세싱 알고리즘을 수행할 수 있다. 따라서, 컴퓨팅 디바이스는 상대적으로 낮은 프로세서 및 메모리 요청들을 갖는 기술들을 이용하여 콘텐츠 요소에 대한 초기 분석을 수행할 수 있다. 또한, 상대적으로 프로세서 집중형인 기술을 수행하는데 서버가 이용될 수 있는바, 따라서 모든 콘텐츠 요소에 대해 프로세서 집중형인 기술을 이용함이 없이 또는 클라이언트 디바이스에서 임의의 높은 프로세서 집중형인 기술을 수행함이 없이, 콘텐츠 요소의 높은 정확도의 식별이 제공될 수 있다. 이 기술을 이용하면, 콘텐츠 요소를 검출하기 위한 이미지 프로세싱 기술의 의존도를 감소시킬 수 있다. 탐지하는 이미지 프로세싱 기술에 대한 의존도를 줄일 수 있다. 또한, 해시 함수를 계산하는 것은 이미지 프로세싱 알고리즘보다 더 적은 컴퓨팅 파워를 소비하므로, 컴퓨팅 디바이스와 서버의 프로세서 및 메모리는 다른 기능을 위해 해방(free up)될 수 있다.
도 2를 참조하면, 도 2는 정보 리소스들에 삽입된 콘텐츠를 제한하기 위한 시스템(200)을 나타내는 블록도이다. 시스템(200)은 도 1의 맥락에서 시스템(100)에서 설명한 바와 같이, 어플리케이션(160) 및 프리젠테이션 제한기(165)의 상세도일 수 있다. 개략적으로, 시스템(200)은 어플리케이션(160), 프리젠테이션 제한기(165) 및 원격 제한된 콘텐츠 데이터베이스(245)를 포함할 수 있다. 어플리케이션(160)은 클라이언트 디바이스(125) 상에서 실행될 수 있고 그리고 데이터 프로세싱 시스템(110) 또는 콘텐츠 발행자 디바이스(120)로부터 수신된 정보 리소스(205)를 포함할 수 있다. 정보 리소스(205)는 하나 이상의 콘텐츠 요소들(210A-N)을 포함할 수 있다. 프리젠테이션 제한기(165)는 클라이언트 디바이스(125), 프록시 디바이스(145) 또는 원격 콘텐츠 제한기 디바이스(150)와 같은 컴퓨팅 디바이스 상에서 개별적으로 또는 함께 실행될 수 있다. 프리젠테이션 제한기(165)는 리소스 파서(215), 요소 해셔(220), 컴퓨팅 디바이스, 렌더링 제한기(230), 콘텐츠 제한 정책 데이터베이스(235) 및 로컬 제한된 콘텐츠 데이터베이스(240)를 포함할 수 있다. 프리젠테이션 제한기(165)는 원격 제한된 콘텐츠 데이터베이스(245)와 통신할 수 있다.
더욱 상세하게는, 리소스 파서(215)는 콘텐츠 요소들(210A-N)의 프리젠테이션을 수정하기 위한 콘텐츠 제한 정책이 적용될 정보 리소스(205)에 포함되는 콘텐츠 요소들(210A-N)을 식별할 수 있다. 콘텐츠 제한 정책은 콘텐츠 제한 정책 데이터베이스(235)에 저장될 수 있고 프리젠테이션 제한기(165)에 의해 유지될 수 있다. 콘텐츠 제한 정책은 콘텐츠 요소들(210A-N)의 어떤 요소 유형들이 추가로 분석되어야하는지 그리고 제한된 것으로 식별되는 콘텐츠 요소들(210A-N)을 어떻게 수정할지를 지정할 수 있다. 리소스 파서(215)는 어플리케이션(160)과 인터페이스하여 정보 리소스(205) 및 정보 리소스(205)에 포함된 콘텐츠 요소(210A-N)에 액세스할 수 있다.
프레젠테이션 제한기(165)에 의해 적용되는 콘텐츠 제한 정책은, 콘텐츠 요소들(210A-N) 또는 이러한 콘텐츠 요소들(210A-N)을 포함하는 정보 리소스(205)가 어떻게 수정, 변경 또는 디스에이블되는지를 지정할 수 있다. 콘텐츠 요소들(210A-N) 또는 이러한 콘텐츠 요소들(210A-N)을 포함하는 정보 리소스(205)의 수정에 관한 세부 내용은 아래에 후술될 것이다. 콘텐츠 제한 정책은 콘텐츠 제공자 디바이스(115) 또는 콘텐츠 발행자 디바이스(120)의 특정 도메인에 대해 특유할 수 있다. 콘텐츠 제한 정책은 특정 클라이언트 디바이스(125)에 대해 특유할 수 있다. 콘텐츠 제한 정책은 하나 이상의 클라이언트 디바이스들(125)과 관련된 특정한 계정 식별자 또는 사용자 프로파일에 대해 특유할 수 있다. 콘텐츠 제한 정책은 하나 이상의 클라이언트 디바이스(125)와 관련된 사용자 프로파일의 특정 특성 정보(specific trait information)일 수 있다. 콘텐츠 제한 정책은 클라이언트 디바이스(125)에서 실행되는 어플리케이션(160)(예를 들어, 모바일 어플리케이션, 소정의 웹 브라우저 등)에 대해 특유할 수 있다. 클라이언트 디바이스(125)에서 실행되는 어플리케이션(160)에 대한 임의의 인터페이스 프로그램(예를 들어, 플러그-인, 애드-온(add-ons) 등)에 대해 특유할 수 있다.
콘텐츠 제한 정책에 따라, 리소스 파서는 추가 분석을 위해 정보 리소스(205)에 포함되는 콘텐츠 요소들(210A-N)의 서브 세트를 식별할 수 있다. 리소스 파서(215)는 정보 리소스(205)에 포함된 각 콘텐츠 요소(210A-N)에 대한 요소 유형을 식별할 수 있다. 요소 유형은 본문(body), 단락, 구분(division), 섹션, 인라인 프레임(inline frame), 이미지, 캔버스, 어플릿, 스크립트, 오디오, 비디오, 테이블, 및 리스트 등을 포함한다. 요소 유형은 HTML 태그(예: 인라인 프레임의 경우 "<iframe>")에 대응할 수 있다. 일부 구현예에서, 콘텐츠 제한 정책은 추가로 분석될 요소 유형(예를 들어, 인라인 프레임, 이미지, 어플릿 등)을 특정할 수 있다. 리소스 파서(215)는 콘텐츠 제한 정책에서 지정된 바와 같은 추가로 분석될 요소 유형과 매칭되는 콘텐츠 요소들(210A-N)의 서브세트를 식별할 수 있다. 이러한 방식으로, 프리젠테이션 제한기(165)는 프로세싱될 콘텐츠 요소들(210A-N)의 개수를 감소시킬 수 있으며, 따라서 컴퓨팅 리소스를 해방시킬 수 있다.
콘텐츠 제한 정책이 콘텐츠 요소들(210A-N)에 적용될지의 여부를 결정하기 위해 리소스 파서(215)는 정보 리소스(205)에 포함된 콘텐츠 요소들(210A-N)에 대응하는 비트 스트림을 식별할 수 있다. 정보 리소스(205)는 이진 시퀀스(예: 바이트 어레이 또는 바이트 스트림)에 해당할 수 있다. 정보 리소스(205)에 포함된 콘텐츠 요소들(210A-N) 각각은 이진 시퀀스의 일부에 대응할 수 있다. 일부 구현예에서, 리소스 파서(215)는 어플리케이션(160)과 인터페이스하여, 정보 리소스(205)에 대응하는 이진 시퀀스에 액세스할 수 있다. 리소스 파서(215)는 어플리케이션(160)과 인터페이스하여, 콘텐츠 요소들(210A-N) 중 하나에 대응하는 이진 시퀀스의 일부분에 액세스할 수 있다. 일부 구현예에서, 리소스 파서(215)는 어플리케이션(160)과 인터페이스하여, 콘텐츠 제한 정책에 의해 지정된 바와 같이 추가로 분석될 요소 유형과 매칭되는 것으로 식별된 콘텐츠 요소들(210A-N)의 서브세트에 대응하는 이진 시퀀스의 일부분에 액세스할 수 있다. 일부 구현예에서, 리소스 파서(215)는 콘텐츠 요소(210A-N)의 비트 스트림의 서브세트 부분(예를 들어, 비트 스트림 내의 처음 N 개의 비트들 또는 비트 스트림 내의 매 다섯번째(every fifth) 비트, 기타 등등)을 식별할 수 있다.
리소스 파서(215)가 콘텐츠 요소(210A-N)에 대한 전체 비트 스트림을 식별하면, 요소 해셔(element hasher)(220)는 콘텐츠 요소(210A-N)에 대응하는 요소 식별자를 생성하도록, 상기 식별된 비트 스트림을 해싱할 수 있다. 일부 구현예에서, 요소 해셔(220)는 식별된 비트 스트림에 대해 해싱 함수를 사용하여, 콘텐츠 요소(210A-N)에 대응하는 요소 식별자를 생성할 수 있다. 해싱 함수는 콘텐츠 요소(210A-N)에 대하여 식별된 비트 스트림의 임의의 조합을 포함할 수 있는바, 가령, 암호 해싱 함수들(예를 들어, 보안 해시 알고리즘들(SHA-1, SHA-2 및 SHA-3)), 메시지-다이제스트 알고리즘들(예를 들어,(MD2, MD4, MD5 및 MD6, 체크섬 함수 등), 순환 중복 검사 알고리즘, 해시 테이블(예: 연관 배열(associative array)) 및 기하학적 해싱 함수 또는 임의의 일대일 해싱 함수를 포함할 수 있다. 해싱 함수는 해시 충돌을 최소화하도록 구성되거나 선택될 수 있는바 따라서 동일한 요소 식별자가 2개의 서로 다른 콘텐츠 요소들(210A-N)을 식별할 가능성이 감소된다. 일부 구현예에서, 요소 해셔(220)는 콘텐츠 요소(210A-N)의 비트 스트림의 서브세트 부분을 해싱할 수 있다.
몇몇 구현예에서, 요소 해셔(220)에 의해 이용되는 해싱 함수는 프리젠테이션 제한기(165)의 모든 인스턴스들(instantiations)에 대하여 공통일 수 있다(예컨대, 원격 콘텐츠 제한기(150), 프록시 디바이스(145), 및 클라이언트 디바이스(125)에 대하여). 동일한 콘텐츠 요소(210A-N)에 대하여, 하나의 컴퓨팅 디바이스(예를 들어, 원격 콘텐츠 제한기(150), 프록시 디바이스(145), 또는 클라이언트 디바이스들(125) 중 하나)에서의 요소 해셔(220)의 하나의 인스턴스는, 다른 컴퓨팅 디바이스에서의 요소 해셔(220)의 다른 하나의 인스턴스와 동일한 요소 식별자를 생성할 수 있다. 이러한 방식으로, 요소 해셔(220)는 프레젠테이션 제한기(165)를 실행하는 컴퓨팅 디바이스들(예를 들어, 다른 클라이언트 디바이스들(125), 프록시 디바이스(145) 및 원격 콘텐츠 제한기 디바이스)로 네트워크(105)를 통해 전송되는 동일한 콘텐츠 요소(210A-N)를 식별하는 하나의 요소 식별자를 생성할 수 있다. 동일한 콘텐츠 요소(210A-N)에 대해 하나의 요소 식별자를 가짐으로써, 프리젠테이션 제한기(165)를 실행하는 컴퓨팅 디바이스들은, 콘텐츠 제한 정책이 콘텐츠 요소(210A-N)에 적용될지의 여부를 결정하기 위해, 계산량이 보다 많은 알고리즘들(예컨대, 이미지 프로세싱 알고리즘들)을 실행시킬 필요가 없을 것이다.
몇몇 구현예에서, 요소 해셔(220)에 의해 이용되는 해시 함수는, 프레젠테이션 제한기(165)의 로컬 인스턴스(local instantiation)에 고유할 수 있다(예컨대, 클라이언트 디바이스(125)에서). 동일한 콘텐츠 요소(210A-N)에 대해, 하나의 컴퓨팅 디바이스(예를 들어, 원격 콘텐츠 제한기(150), 프록시 디바이스(145) 또는 클라이언트 디바이스들(125) 중 하나)에서의 요소 해셔(220)의 하나의 인스턴스(instantiation)는, 다른 하나의 컴퓨팅 디바이스에서 실행되는 요소 해셔(220)의 또 다른 인스턴스에 의해 생성된 요소 식별자와는 다른 요소 식별자를 생성할 수 있다. 요소 해셔(220)는 프리젠테이션 제한기(165)의 로컬 인스턴스에 고유한 요소 식별자를 생성할 수 있다. 프리젠테이션 제한기(165)의 로컬 인스턴스에 고유한 해시 함수를 이용함으로써, 요소 해셔(220)는 이용자의 프라이버시 뿐만 아니라 데이터 보안 및 암호화를 향상시킬 수 있다.
몇몇 구현예에서, 요소 해셔(220)에 의해 이용되는 해시 함수는 정보 리소스(205) 또는 콘텐츠 요소(210A-N)에 대응하는 이진 시퀀스의 임의의 암호화 알고리즘을 설명할 수 있다(account for). 클라이언트 디바이스(125), 프록시 디바이스(145) 또는 임의의 중간 디바이스는 정보 리소스(205) 또는 콘텐츠 요소(210A-N)에 대응하는 이진 시퀀스에 암호화 알고리즘을 적용할 수 있으며, 따라서 이진 시퀀스를 변경시킬 수 있다. 일부 구현예에서, 이진 시퀀스에 적용된 암호화 알고리즘은 여러 다른 암호화 프로토콜 중에서 WEP(Wired Equivalent Privacy) 및 WPA(Wi-Fi Protected Access)를 포함할 수 있다. 암호화 알고리즘으로 인하여, 하나의 컴퓨팅 디바이스에서 실행되는 요소 해셔(220)는 다른 컴퓨팅 디바이스에서 실행되는 요소 해셔(220)에 의해 생성된 요소 식별자와는 다른 요소 식별자를 생성할 수 있다. 이진 시퀀스에 적용된 암호화 알고리즘의 효과를 우회(bypass)하거나 무효화하기 위해, 요소 해셔(220)는 일대일 해싱 함수를 이용하여, 식별된 비트 스트림 각각에 대한 요소 식별자를 생성할 수 있다. 이러한 방식으로, 비록 요소 해셔(220)에 의해 생성된 요소 식별자가 프리젠테이션 제한기(165)의 로컬 인스턴스화에 대해 고유할 수 있지만, 클라이언트 디바이스(125), 프록시 디바이스(145), 또는 임의의 다른 중간 디바이스에 의해 적용된 암호화 알고리즘은 고유한 값을 생성할 수 있다. 이와 같이, 프리젠테이션 제한기(165)의 하나의 인스턴스에서 요소 해셔(220)에 의해 생성된 요소 식별자는, 다른 디바이스들에서 프리젠테이션 제한기(165)의 다른 인스턴스들에 대해 이용될 수 있다.
요소 해셔(220)에 의해 생성된 요소 식별자를 이용하여, 콘텐츠 제한기(225)는 로컬 제한된 콘텐츠 데이터베이스(240) 또는 원격 제한된 콘텐츠 데이터베이스(245)에 액세스하여, 콘텐츠 제한 정책을 콘텐츠 요소(210A-N)에 적용할지의 여부를 결정할 수 있다. 로컬 제한된 콘텐츠 데이터베이스(240)는 요소 해셔(220)를 실행하는 컴퓨팅 디바이스(가령, 클라이언트 디바이스 125 또는 프록시 디바이스 145)에 대해 로컬인, 프리젠테이션 제한기(165)의 인스턴스에 의해 유지될 수 있다. 로컬 제한된 콘텐츠 데이터베이스(240)는 요소 식별자들 및 해당 요소 식별자가 제한될지 혹은 허가될지, 기타 등등의 여부를 특정하는 허가 표시자(permission indicator)를 저장하기 위한 임의의 데이터 구조(예를 들어, 어레이, 힙(heap), 링크된 리스트, 이진 트리, 매트릭스, 테이블 등)를 포함할 수 있다. 일부 구현예에서, 로컬 제한된 콘텐츠 데이터베이스(240)는 허가될 요소 식별자들의 제 1 리스트(예를 들어, 화이트 리스트) 및 제한될 요소 식별자들의 제 2 리스트(예를 들어, 블랙 리스트)를 포함할 수 있다. 원격 제한된 콘텐츠 데이터베이스(245)는 다른 컴퓨팅 디바이스에 의해 유지될 수 있다. 일부 구현예에서, 원격 제한된 콘텐츠 데이터베이스(245)는 요소 해셔(220)를 실행하는 컴퓨팅 디바이스와는 다른 프리젠테이션 제한기(165)의 인스턴스에 의해 유지될 수 있다. 일부 구현예에서, 로컬 제한된 콘텐츠 데이터베이스(240)는 프록시(145) 디바이스로서 또는 원격 콘텐츠 제한기 디바이스(150)로서 저장 및 유지될 수 있다. 원격 제한된 콘텐츠 데이터베이스(245)는 요소 식별자들 및 해당 요소 식별자가 제한될지 혹은 허가될지의 여부를 특정하는 허가 표시자를 저장하기 위한 임의의 데이터 구조(예를 들어, 어레이, 힙(heap), 링크된 리스트, 이진 트리, 매트릭스, 테이블 등)를 포함할 수 있다. 일부 구현예에서, 원격 제한된 콘텐츠 데이터베이스(245)는 허가될 요소 식별자들의 제 1 리스트 및 제한될 요소 식별자들의 제 2 리스트를 포함할 수 있다. 일부 구현예에서, 프리젠테이션 제한기(165)의 로컬 인스턴스는 제한될 것으로 지정된 요소 식별자를 저장하기 위해, 로컬 제한된 콘텐츠 데이터베이스(245)(예를 들어, 블랙 리스트)를 유지할 수 있다. 일부 구현예에서, 프리젠테이션 제한기(165)의 로컬 인스턴스는 허용될 것으로 지정된 요소 식별자를 저장하기 위해, 별도의 로컬 비-제한된(non-restricted) 콘텐츠 데이터베이스(예를 들어, 화이트 리스트)를 유지할 수 있다. 일부 구현예에서, 프리젠테이션 제한기(165)의 원격 인스턴스는 제한될 것으로 지정된 요소 식별자를 저장하기 위해, 원격 제한된 콘텐츠 데이터베이스(245)(예를 들어, 블랙 리스트)를 유지할 수 있다. 일부 구현예에서, 프리젠테이션 제한기(165)의 원격 인스턴스는 허용될 것으로 지정된 요소 식별자를 저장하기 위해 별도의 원격 비-제한된 콘텐츠 데이터베이스(예를 들어, 화이트 리스트)를 유지할 수 있다.
콘텐츠 제한기(225)는 초기에 로컬 제한된 콘텐츠 데이터베이스(240)에 액세스할 수 있다. 콘텐츠 제한기(225)는 로컬 제한된 콘텐츠 데이터베이스(240) 내의 요소 식별자들에 대한 검색을 수행할 수 있다. 일부 구현예에서, 콘텐츠 제한기(225)는 요소 식별자를 찾기 위하여 로컬 제한된 콘텐츠 데이터베이스(240)를 트래버싱할 수 있다. 일부 구현예에서, 콘텐츠 제한기(225)는 로컬 제한된 콘텐츠 데이터베이스(240)에 저장된 데이터 구조에 대한 인덱스로서 요소 식별자를 이용할 수 있다.
콘텐츠 제한기(225)가 로컬 제한된 콘텐츠 데이터베이스(240)에서 요소 식별자를 찾아낸다면, 콘텐츠 제한기(225)는 요소 식별자에 대한 허가 표시자를 식별할 수 있다. 콘텐츠 제한기(225)는 이러한 허가 표시자를 이용하여, 요소 식별자에 대응하는 콘텐츠 요소(210A-N)에 콘텐츠 제한 정책을 적용할지의 여부를 결정할 수 있다.
다른 한편으로, 콘텐츠 제한기(225)가 로컬 제한된 콘텐츠 데이터베이스(240)에서 요소 식별자를 찾아내지 못한다면, 콘텐츠 제한기(225)는 요소 식별자를 찾으라는 요청을 원격 제한된 콘텐츠 데이터베이스(245)로 전송할 수 있다. 요소 식별자를 찾으라는 요청은, 다른 데이터들 중에서 요소 워셔(220)에 의해 생성된 요소 식별자를 포함할 수 있다. 원격 제한된 콘텐츠 데이터베이스(245)는 프리젠테이션 제한기(165)의 로컬 인스턴스로부터 원격인 디바이스에 의해 유지되거나 이와 관련될 수 있다. 일부 구현예에서, 클라이언트 디바이스(125) 상에서 실행되는 콘텐츠 제한기(225)는 상기 요청을 원격 제한된 콘텐츠 데이터베이스(245)를 유지하는 프록시 디바이스(145) 또는 원격 콘텐츠 제한기 디바이스(150)로 전송할 수 있다.
컴퓨팅 디바이스로부터 상기 요청을 수신함에 응답하여, 원격 디바이스(예컨대, 프록시 디바이스 145 또는 원격 콘텐츠 제한기 디바이스 150)는, 상기 요청 내의 요소 식별자를 이용하여 원격 제한된 콘텐츠 데이터베이스(245)에 액세스할 수 있다. 원격 디바이스는 원격 제한된 콘텐츠 데이터베이스(245)에서 요소 식별자에 대한 검색을 수행할 수 있다. 일부 구현예에서, 원격 디바이스는 요소 식별자를 찾기 위하여 원격 제한된 콘텐츠 데이터베이스(245)를 트래버싱할 수 있다. 일부 구현예에서, 원격 디바이스는 원격 제한된 콘텐츠 데이터베이스(245)에 저장된 데이터 구조에 대한 인덱스로서 요소 식별자를 이용할 수 있다.
만일, 원격 디바이스가 원격 제한된 콘텐츠 데이터베이스(245)에서 요소 식별자를 찾아낸다면, 상기 원격 디바이스는 상기 요소 식별자에 대한 허가 표시자를 식별할 수 있다. 요소 식별자를 찾는 것에 응답하여, 원격 디바이스는 또한 긍정 응답(positive response)을 콘텐츠 제한기(225)로 전송할 수 있다. 긍정 응답은 요소 식별자가 원격 제한된 콘텐츠 데이터베이스(245)에 있음을 나타낼 수 있다. 또한, 긍정 응답은 원격 제한된 콘텐츠 데이터베이스(245)에 지정된 바와 같은 허가 표시자를 포함할 수 있다. 콘텐츠 제한기(225)는 원격 제한된 콘텐츠 데이터베이스(245)와 관련된 원격 디바이스로부터의 상기 긍정 응답을 수신할 수 있다. 콘텐츠 제한기(225)는 원격 디바이스로부터 수신된 요소 식별자 및 허가 표시자를 로컬 제한된 콘텐츠 데이터베이스(240)에 저장할 수 있다. 허가 표시자에 기초하여, 콘텐츠 제한기(225)는 허가 표시자에 대응하는 콘텐츠 요소(210A-N)에 콘텐츠 제한 정책을 적용할지의 여부를 결정할 수 있다.
만일, 원격 디바이스가 원격 제한된 콘텐츠 데이터베이스(245)에서 요소 식별자를 찾지 못한다면, 원격 디바이스는 또한 콘텐츠 제한기(225)로 부정 응답을 전송할 수 있다. 부정 응답은 요소 식별자가 원격 제한된 콘텐츠 데이터베이스(245)에 없음을 나타낼 수 있다. 콘텐츠 제한기(225)는 원격 제한된 콘텐츠 데이터베이스(245)와 관련된 원격 디바이스로부터 상기 부정 응답을 수신할 수 있다. 원격 디바이스로부터 부정 응답을 수신함에 응답하여, 콘텐츠 제한기(225)는 렌더링 제한기(230)를 호출하여, 렌더링 기반 제한 확장에 따라 콘텐츠 기반 정책이 콘텐츠 요소(210A-N)에 적용될지의 여부를 결정할 수 있다.
또한, 원격 디바이스가 원격 제한된 콘텐츠 데이터베이스(245)에서 요소 식별자를 찾지 못한다면, 원격 디바이스는 콘텐츠 요소(210A-N) 및 정보 리소스(205)의 랜더링 속성들에 기초하는 렌더링 기반 제한 확장(rendering-based restriction extension)에 따라, 콘텐츠 요소(210A-N)가 수정될지의 여부를 결정할 수 있다. 렌더링-기반 제한 확장에 따라 콘텐츠 요소(210A-N)가 수정될지의 여부를 결정하는 것은 원격 디바이스에서 렌더링 제한기(230)의 인스턴스에 의해 수행될 수 있다. 원격 디바이스는 어플리케이션(160)에 의해 수신된 콘텐츠 요소(210A-N) 및 정보 리소스(205)의 렌더링 속성들에 액세스할 수 있다. 일부 구현예에서, 원격 디바이스는 렌더링 속성들에 대한 요청을 어플리케이션(160)을 실행하는 디바이스로 전송할 수 있다. 다음으로, 원격 디바이스는 콘텐츠 요소(210A-N) 및 정보 리소스(205)의 렌더링 속성들을 상기 디바이스로부터 수신할 수 있다.
렌더링 기반 제한 확장에 따라 콘텐츠 요소(210A-N)의 렌더링 속성들 및 정보 리소스(205)의 렌더링 속성들을 분석함으로써, 원격 디바이스는 콘텐츠 제한 정책이 콘텐츠 요소(210A-N)에 적용될지의 여부를 결정할 수 있다. 렌더링-기반 제한 확장은 소정의 렌더링 속성들을 갖는 콘텐츠 요소들(210A-N)에 콘텐츠 제한 정책이 적용됨을 특정할 수 있다. 일반적으로, 렌더링-기반 제한 확장에 따라 콘텐츠 요소(210A-N)의 렌더링 속성들 및 정보 리소스(205)의 렌더링 속성들을 분석하는 것은 해싱 함수들보다 계산상으로 더 복잡할 수 있다. 따라서, 렌더링-기반 제한 확장은 해싱 함수에 비하여 더 많은 컴퓨터 리소스 및 프로세싱 시간을 소비할 수 있으며, 원격 디바이스의 성능 저하 및 지연을 초래할 수 있다. 컴퓨터 리소스의 소비를 부분적으로 완화하고 프로세싱 시간을 어느 정도 줄이기 위하여, 해싱 함수를 이용한 요소 식별자의 생성 및 렌더링 속성들의 분석은, 다수의 디바이스들 및 프리젠테이션 제한기(165)의 인스턴스들에 걸쳐 분기되거나(bifurcate) 할당될 수 있다.
렌더링 기반 제한 확장에 따라, 원격 디바이스는 지정된(designated) 렌더링 속성들과 콘텐츠 요소(210A-N)의 렌더링 속성들을 비교하여, 콘텐츠 제한 정책이 콘텐츠 요소(210A-N)에 적용될지의 여부를 결정할 수 있다. 일부 구현예에서, 원격 디바이스는 정보 리소스(205) 상의 콘텐츠 요소(210A-N)의 치수들을 미리 지정된 치수들(예컨대, 468 x 60 픽셀(풀 배너), 160 x 600 픽셀(넓은 스카이스크래퍼 배너) 300 픽셀(팝-언더))과 비교한다. 만일, 원격 디바이스가 콘텐츠 요소(210A-N)의 치수와 미리 지정된 위치 사이의 매칭을 결정하면, 원격 디바이스는 콘텐츠 제한 정책이 콘텐츠 요소(210A-N)에 적용되어야한다고 결정할 수 있다. 일부 구현예에서, 원격 디바이스는 정보 리소스(205) 상의 콘텐츠 요소(210A-N)의 위치와 미리 지정된 위치(예를 들어, 정보 리소스(205)의 최상단쪽으로 또는 측면을 따라)를 비교할 수 있다. 원격 디바이스가 콘텐츠 요소(210A-N)의 위치와 미리 지정된 위치 사이의 매칭을 결정하면, 원격 디바이스는 콘텐츠 제한 정책이 콘텐츠 요소(210A-N)에 적용되어야한다고 결정할 수 있다. 일부 구현예에서, 원격 디바이스는 콘텐츠 요소(210A-N)의 컬러 값(예를 들어, RGB 값, 문자숫자 식별자 또는 HTML 컬러 코드) 및 정보 리소스(205)의 컬러 값을 식별할 수 있다. 만일, 콘텐츠 요소(210A-N)의 컬러 값과 정보 리소스(205)의 컬러 값이 소정의 마진만큼 상이하면, 원격 디바이스는 콘텐츠 제한 정책이 콘텐츠 요소(210A-N)에 적용되어야 한다라고 결정할 수 있다. 만일, 이들 중 어느 것도 일치하지 않는다면, 원격 디바이스는 콘텐츠 제한 정책이 콘텐츠 요소(210A-N)에 적용되지 않을 것이라고 결정할 수 있다.
또한, 원격 디바이스는 임의 개수 및 조합의 이미지 인식 알고리즘들을 적용하여, 렌더링 기반 제한 확장에 따른 렌더링 속성에 기초하여 콘텐츠 제한 정책이 콘텐츠 요소(210A-N)에 적용될지의 여부를 결정할 수 있다. 콘텐츠 요소(210A-N)는 이미지를 포함할 수 있거나 이미지의 소스 어드레스를 포함할 수 있다. 콘텐츠 요소(210A-N)는 비디오를 포함할 수 있거나 또는 비디오에 대한 소스 어드레스를 포함할 수 있다. 일부 구현예에서, 원격 디바이스는 이미지 인식 알고리즘을 적용하여, 콘텐츠 요소(210A-N)의 이미지 또는 비디오가 제한된 시각적 요소(예컨대, 누드, 폭력, 마약 및 다른 바람직하지 않은 이미지 또는 비디오 요소)를 포함하고 있는지의 여부를 결정할 수 있다. 이미지 인식 알고리즘은 광학 문자 인식, 물체 인식, 엣지 검출, 피쳐 검출(예: 어파인 피쳐 검출) 및 패턴 인식 알고리즘을 포함할 수 있다. 일부 구현예에서, 원격 디바이스는 광학 문자 인식 알고리즘을 이용하여 콘텐츠 요소(210A-N)의 이미지로부터 문자열을 식별할 수 있다. 원격 디바이스는 식별된 문자열을 미리 지정된 문자열(예: "여기를 클릭하십시오(click here)", "구매", "판매", "XXX"및 "$" 등)와 비교할 수 있다. 식별된 문자열이 미리 지정된 문자열과 일치하면, 원격 디바이스는 콘텐츠 제한 정책이 콘텐츠 요소(210A-N)에 적용되어야한다고 결정할 수 있다. 그렇지 않으면, 원격 디바이스는 콘텐츠 제한 정책이 콘텐츠 요소(210A-N)에 적용되지 않을 것이라고 결정할 수 있다.
렌더링 속성들의 분석에 기초하여 콘텐츠 제한 정책이 콘텐츠 요소(210A-N)에 적용될 것인지를 결정하는 것과 함께, 원격 디바이스는 콘텐츠 요소(210A-N)에 대응하는 요소 식별자를 원격 제한된 콘텐츠 데이터베이스(245)에 추가 또는 삽입할 수 있다. 원격 디바이스가 콘텐츠 제한 정책이 적용될 것으로 결정한다면, 상기 원격 디바이스는 요소 식별자에 대응하는 콘텐츠 요소(210A-N)가 제한되어야 함을 나타내는 허가 표시자를 추가 혹은 삽입할 수 있다. 만일, 원격 디바이스가 콘텐츠 제한 정책이 적용되지 않을 것으로 결정한다면, 원격 디바이스는 요소 식별자에 대응하는 콘텐츠 요소(210A-N)가 허가됨을 나타내는 허가 표시자를 원격 제한된 콘텐츠 데이터베이스(245)에 추가 혹은 삽입할 수 있다. 이어서, 상기 원격 디바이스는 긍정 응답을 콘텐츠 제한기(225)로 전송할 수 있다. 긍정 응답은 요소 식별자(245)가 원격 제한된 콘텐츠 데이터베이스 상에 있음을 나타낼 수 있다. 긍정 응답은 또한, 원격 제한된 콘텐츠 데이터베이스(245)로부터 검색된 허가 표시자를 포함할 수 있다.
일부 실시예에서, 콘텐츠 제한기(225)가 로컬 제한된 콘텐츠 데이터베이스(240)에서 요소 식별자를 찾지 못한다면, 콘텐츠 제한기(225)는 렌더링 제한기(230)를 호출할 수 있다. 호출되면, 렌더링 제한기(230)는 콘텐츠 요소(210A-N)를 분석하여, 콘텐츠 제한 정책이 렌더링 기반 제한 확장에 따라 콘텐츠 요소(210A-N)에 적용되는지 여부를 결정할 수 있다. 또한, 콘텐츠 제한기(225)는 원격 제한된 콘텐츠 데이터베이스(245)와 연관된 원격 디바이스로부터 요소 식별자에 대한 부정 응답을 수신하는 것에 응답하여 콘텐츠 요소(210A-N)를 분석하기 위해 렌더링 제한기(230)를 호출할 수 있다.
렌더링 기반 제한 확장에 따라 콘텐츠 요소(210A-N)의 렌더링 속성들 및 정보 리소스(205)의 렌더링 속성들을 분석함으로써, 렌더링 제한기(230)는 콘텐츠 요소(210A-N)에 콘텐츠 제한 정책이 적용되어야하는지 여부를 결정할 수 있다. 렌더링 기반 제한 확장은 소정의 렌더링 속성들을 갖는 콘텐츠 요소들(210A-N)에 콘텐츠 제한 정책이 적용되어야함을 지정할 수 있다.
렌더링 기반 제한 확장에 따라, 렌더링 제한기(230)는 콘텐츠 요소(210A-N)의 렌더링 속성을 지정된(designated) 렌더링 속성들과 비교하여, 콘텐츠 제한 정책이 콘텐츠 요소(210A-N)에 적용될지의 여부를 결정할 수 있다. 일부 구현예에서, 렌더링 제한기(230)는 정보 리소스(205) 상의 콘텐츠 요소(210A-N)의 치수를 미리 지정된 치수들(예컨대, 468 x 60 픽셀(풀 배너), 160 x 600 픽셀(넓은 스카이 스크래퍼 배너), 및 720 x 300 픽셀(팝-언더))과 비교할 수 있다. 만일, 렌더링 제한기(230)가 콘텐츠 요소(210A-N)의 치수와 미리지정된 위치 사이의 매칭을 결정하면, 렌더링 제한기(230)는 콘텐츠 제한 정책이 콘텐츠 요소(210A-N)에 적용되어야한다고 결정할 수 있다. 일부 구현예에서, 렌더링 제한기(230)는 정보 리소스(205) 상의 콘텐츠 요소(210A-N)의 위치를 미리 지정된 위치(예를 들어, 정보 리소스(205)의 최상부를 향하여 따라 또는 측면을 따라)와 비교할 수 있다. 렌더링 제한기(230)가 콘텐츠 요소(210A-N)의 위치와 미리 지정된 위치 사이의 매칭을 결정하면, 렌더링 제한기(230)는 콘텐츠 제한 정책이 콘텐츠 요소(210A-N)에 적용되어야한다고 결정할 수 있다. 일부 구현예에서, 렌더링 제한기(230)는 콘텐츠 요소(210A-N)의 컬러 값(예를 들어, RGB 값, 문자숫자 식별자 또는 HTML 컬러 코드) 및 정보 리소스(205)의 컬러 값을 식별할 수 있다. 콘텐츠 요소(210A-N)의 컬러 값과 정보 리소스(205)의 컬러 값이 미리 정의된 마진만큼 다른 경우, 렌더링 제한기(230)는 콘텐츠 제한 정책이 콘텐츠 요소(210A-N)에 적용되어야한다고 결정할 수 있다. 이들 중 어느 것도 일치하지 않으면, 렌더링 제한기(230)는 콘텐츠 제한 정책이 콘텐츠 요소(210A-N)에 적용되지 않을 것이라고 결정할 수 있다.
또한, 렌더링 제한기(230)는 임의 개수 및 조합의 이미지 인식 알고리즘들을 적용하여, 렌더링 기반 제한 확장에 따른 렌더링 속성에 기초하여 콘텐츠 제한 정책이 콘텐츠 요소(210A-N)에 적용될지의 여부를 결정할 수 있다. 콘텐츠 요소(210A-N)는 이미지를 포함할 수 있거나 이미지의 소스 어드레스를 포함할 수 있다. 콘텐츠 요소(210A-N)는 비디오를 포함할 수 있거나 또는 비디오에 대한 소스 어드레스를 포함할 수 있다. 일부 구현예에서, 렌더링 제한기(230)는 이미지 인식 알고리즘을 적용하여, 콘텐츠 요소(210A-N)의 이미지 또는 비디오가 제한된 시각적 요소(예컨대, 누드, 폭력, 마약 및 다른 바람직하지 않은 이미지 또는 비디오 요소)를 포함하고 있는지의 여부를 결정할 수 있다. 이미지 인식 알고리즘은 광학 문자 인식, 물체 인식, 엣지 검출, 피쳐 검출(예: 어파인 피쳐 검출) 및 패턴 인식 알고리즘을 포함할 수 있다. 일부 구현예에서, 렌더링 제한기(230)는 광학 문자 인식 알고리즘을 이용하여 콘텐츠 요소(210A-N)의 이미지로부터 문자열을 식별할 수 있다. 렌더링 제한기(230)는 식별된 문자열을 미리 지정된 문자열(예: "여기를 클릭하십시오(click here)", "구매", "판매", "XXX"및 "$" 등)와 비교할 수 있다. 식별된 문자열이 미리 지정된 문자열과 일치하면, 렌더링 제한기(230)는 콘텐츠 제한 정책이 콘텐츠 요소(210A-N)에 적용되어야한다고 결정할 수 있다. 그렇지 않으면, 렌더링 제한기(230)는 콘텐츠 제한 정책이 콘텐츠 요소(210A-N)에 적용되지 않을 것이라고 결정할 수 있다.
렌더링 속성들의 분석에 기초하여 콘텐츠 제한 정책이 콘텐츠 요소(210A-N)에 적용될 것인지를 결정하는 것과 함께, 렌더링 제한기(230)는 콘텐츠 요소(210A-N)에 대응하는 요소 식별자를 로컬 제한된 콘텐츠 데이터베이스(245)에 추가 또는 삽입할 수 있다. 렌더링 제한기(230)가 콘텐츠 제한 정책이 적용될 것으로 결정한다면, 상기 렌더링 제한기(230)는 요소 식별자에 대응하는 콘텐츠 요소(210A-N)가 제한되어야 함을 나타내는 허가 표시자를 추가 혹은 삽입할 수 있다. 만일, 렌더링 제한기(230)가 콘텐츠 제한 정책이 적용되지 않을 것으로 결정한다면, 렌더링 제한기(230)는 요소 식별자에 대응하는 콘텐츠 요소(210A-N)가 허가됨을 나타내는 허가 표시자를 추가 혹은 삽입할 수 있다. 렌더링 제한기(230) 또는 콘텐츠 제한기(225)는 네트워크에 연결된 다른 컴퓨팅 디바이스들(예를 들어, 다른 클라이언트 디바이스들(125), 프록시 디바이스(145) 및 원격 콘텐츠 제한 디바이스(150))로 요소 식별자 및 허가 표시자를 전송할 수 있다. 일부 구현예에서, 렌더링 제한기(230) 또는 콘텐츠 제한기(225)는 요소 식별자 및 허가 표시자를 네트워크(105)를 통하여 제 2 클라이언트 디바이스(125)에 전송하여, 상기 제 2 클라이언트 디바이스(125)에 의해 유지되는 로컬 제한된 콘텐츠 데이터베이스에 저장할 수 있다. 일부 구현예에서, 렌더링 제한기(230) 또는 콘텐츠 제한기(225)는 요소 식별자 및 허가 표시자를 프록시 디바이스(145)로 전송하여, 상기 프록시 디바이스(145)에 의해 유지되는 제한된 콘텐츠 데이터베이스에 저장할 수 있다. 일부 구현예에서, 렌더링 제한기(230) 또는 콘텐츠 제한기(225)는 원격 제한된 콘텐츠 데이터베이스(250)에 저장하기 위해 요소 식별자 및 허가 표시자를 원격 콘텐츠 제한기 디바이스(150)로 전송할 수 있다. 네트워크(105)에 접속된 컴퓨팅 디바이스들 사이에서 요소 식별자를 공유함으로써, 프리젠테이션 제한기(165)를 실행하는 컴퓨팅 디바이스는 계산적으로 복잡한 이미지 프로세싱 기술을, 같은 콘텐츠 요소(210A-N)에 반복적으로 적용하는 것을 회피할 수 있다. 따라서, 요소 식별자를 공유하는 것은 프리젠테이션 제한기(165)를 실행하는 컴퓨팅 디바이스에 대한 효율성을 증가시킬 수 있고, 다른 기능들을 위한 프로세싱 리소스를 해방시킬 수 있다.
요소 식별자가 로컬 제한된 콘텐츠 데이터베이스(240) 또는 원격 제한된 콘텐츠 데이터베이스(245)에서 발견되지 않는다면, 콘텐츠 제한기(235)는, 어플리케이션(160)에 의해 콘텐츠 요소(210A-N)를 정보 리소스(205) 상에 제 1 포함시키는(first inclusion) 동안 콘텐츠 요소(210A-N)를 유지할 수 있다. 콘텐츠 요소(210A-N)의 제 1 포함(first inclusion)은, 네트워크(105)에 접속된 프리젠테이션 제한기(165)를 실행하는 임의의 디바이스에 대한 콘텐츠 요소(210A-N)의 제 1 제공에 대응할 수 있다. 일부 실시예에서, 콘텐츠 제한기(225)는 정보 리소스(205)의 제 1 포함 중에 콘텐츠 요소(210A-N)의 속성들을 디폴트 값으로 설정 또는 유지할 수 있다. 정보 리소스(205) 상의 콘텐츠 요소(210A-N)의 제 1 포함에 후속하여, 콘텐츠 제한기(225)는 렌더링 제한기(230)를 호출할 수 있다. 호출될 때, 렌더링 제한기(230)는 콘텐츠 요소(210A-N)를 분석하여, 여기서 설명된 기능들을 이용하여 렌더링-기반 제한 확장에 따라 콘텐츠 제한 정책이 콘텐츠 요소(210A-N)에 적용될지의 여부를 결정할 수 있다. 렌더링 속성들에 기초하여 콘텐츠 제한 정책이 콘텐츠 요소(210A-N)에 적용되어야한다라고 렌더링 제한기(230)가 결정하면, 콘텐츠 제한기(225)는 임의의 정보 리소스 상의 콘텐츠 요소(210A-N)의 후속 포함들 동안, 콘텐츠 요소(210A-N)를 수정할 수 있다. 이러한 방식으로, 콘텐츠 요소(210A-N)는 제 1 제공 동안 어플리케이션(160)을 실행하는 콘텐츠 제한기(225)에서 정보 리소스(205) 상에 프리젠테이션되고 렌더링될 수 있다. 콘텐츠 요소(210A-N) 및 정보 리소스(205)의 렌더링 속성들의 분석에 기초하여, 어플리케이션(160)을 실행하는 콘텐츠 제한기(225)에 대한 콘텐츠 요소(210A-N)의 후속 수정들 및 제공들에서, 콘텐츠 요소(210A-N)가 수정될 수 있다.
로컬 제한된 콘텐츠 데이터베이스(240) 또는 원격 제한된 콘텐츠 데이터베이스(245)에서 요소 식별자를 발견함에 응답하여, 콘텐츠 제한기(225)는 콘텐츠 제한 정책에 따라 정보 리소스(205) 상의 콘텐츠 요소(210A-N)의 프리젠테이션을 수정할 수 있다. 콘텐츠 제한 정책 데이터베이스(235)에서 유지되는 콘텐츠 제한 정책은 콘텐츠 요소(210A-N)의 프리젠테이션을 수정하기 위한 임의 개수의 동작들 또는 동작들의 조합을 수행하도록 콘텐츠 제한기(225)를 지정할 수 있다. 일부 구현예에서, 콘텐츠 제한기(225)는 콘텐츠 제한 정책에 의해 지정된 바와 같이 콘텐츠 요소(210A-N)를 디스에이블할 수 있다. 일부 구현예에서, 콘텐츠 제한기(225)는 콘텐츠 제한 정책에 의해 지정된 바와 같이 콘텐츠 요소(210A-N)를 정보 리소스(205)로부터 삭제하거나 제거할 수 있다. 일부 실시예들에서, 콘텐츠 제한기(225)는 정보 리소스(205)에 대한 마크업(markup)에서 콘텐츠 요소(210A-N)에 대응하는 코드 세그먼트를 식별할 수 있다. 콘텐츠 제한기(225)는 콘텐츠 요소(210A-N)에 대응하는 코드 세그먼트를 삭제, 제거 또는 그렇지 않으면 무효로 할 수 있다. 일부 구현예에서, 콘텐츠 제한기(225)는 콘텐츠 제한 정책에 의해 지정된 바와 같이 콘텐츠 요소(210A-N)의 가시적 속성을 온에서 오프로 설정할 수 있다. 콘텐츠 요소(210A-N)의 가시성 속성을 온에서 오프로 설정하는 것은, 어플리케이션(160)이 콘텐츠 요소(210A-N)를 정보 리소스(205) 상에 렌더링, 디스플레이 또는 달리 제시하지 못하게 할 수 있다. 일부 실시예에서, 콘텐츠 제한기(225)는 콘텐츠 제한 정책에 의해 지정된 바와 같이 임의의 리다이렉션 링크들을 콘텐츠 요소(210A-N)로부터 제거할 수 있다. 리다이렉션 링크의 상호작용 또는 활성화는 어플리케이션(160)을 실행하는 콘텐츠 제한기(225)가 추가 콘텐츠를 검색하게 할 수 있다. 일부 구현예에서, 콘텐츠 제한기(225)는 콘텐츠 요소(210A-N)에 대응하는 코드 세그먼트에 기초하여 콘텐츠 요소(210A-N)가 리다이렉트 링크를 포함하는지를 결정할 수 있다.
또한, 로컬 제한된 콘텐츠 데이터베이스(240) 또는 원격 제한된 콘텐츠 데이터베이스(245) 상에서 요소 식별자를 식별하는 것에 응답하여, 콘텐츠 제한기(225)는 콘텐츠 제한 정책에 의해 지정된 바와 같이 정보 리소스(205) 상의 콘텐츠 요소(210A-N)와 관련된 데이터의 전송 및 수신을 수정할 수 있다. 일부 실시예들에서, 콘텐츠 제한기(225)는 콘텐츠 요소(210A-N)와 연관된 어플리케이션(160)을 실행하는 컴퓨팅 디바이스로부터의 데이터 패킷들의 전송을 변경할 수 있다. 콘텐츠 요소(210A-N)는 확인 응답(acknowledgement response)을 로그 서버로 전송하도록, 어플리케이션(160)을 실행하는 컴퓨팅 디바이스를 지정하는 코드 세그먼트를 포함할 수 있다. 확인 응답은 어플리케이션(160)을 실행하는 컴퓨팅 디바이스에서의 콘텐츠 요소(210A-N)의 수신 또는 프리젠테이션에 대한 확인을 나타낼 수 있다. 콘텐츠 제한기(225)는 확인 응답의 전송을 위한 코드 세그먼트를 식별할 수 있다. 일부 구현예에서, 콘텐츠 제한기(225)는 확인 응답의 전송을 디스에이블하기 위해, 식별된 코드 세그먼트를 수정, 제거 또는 삭제할 수 있다. 일부 구현예에서, 콘텐츠 제한기(225)는 또한 확인 응답의 전송을 허용할 수 있고 그리고 확인 응답의 전송을 디스에이블하기 위해 식별된 코드 세그먼트를 후속적으로 수정, 제거 또는 삭제할 수 있다. 일부 구현예에서, 콘텐츠 제한기(225)는 콘텐츠 요소(210A-N)와 연관된 다른 컴퓨팅 디바이스(예를 들어, 데이터 프로세싱 시스템(110), 콘텐츠 제공자 디바이스(115) 및 콘텐츠 발행 디바이스(120))로부터의 데이터 패킷들의 수신을 변경할 수 있다. 일부 구현예에서, 콘텐츠 제한기(225)는 데이터 패킷(예를 들어, 스트리밍 비디오를 위한 프래그먼트 덩어리(fragment chunks))을 수신할 수 있다. 콘텐츠 제한기(225)는 어플리케이션(160)에 의한 프로세싱으로부터 데이터 패킷들을 제거할 수 있다.
만일, 요소 식별자가 콘텐츠 제한기(225)에 의해서 로컬 제한된 콘텐츠 데이터베이스(240)에서 식별되거나 또는 원격 디바이스에 의해서 원격 제한된 콘텐츠 데이터베이스(245)에서 식별된다면, 콘텐츠 제한기(225)는 정보 리소스에 추가적인 콘텐츠 요소(210A-N)를 부가하여, 콘텐츠 요소(210A-N)의 프리젠테이션을 수정할 수 있다. 콘텐츠 제한기(225)는 콘텐츠 요소(210A-N)의 위치 및 치수들을 식별할 수 있다. 콘텐츠 제한기(225)는 콘텐츠 요소(210A-N)를 포함하는 정보 리소스(205)의 시각적 특성들(예를 들어, 컬러 값)을 식별할 수 있다. 콘텐츠 제한기(225)는 콘텐츠 요소(210A-N)의 식별된 위치 및 치수들과 정보 리소스(205)의 시각적 특성을 구비한 추가 콘텐츠 요소를 생성하여 콘텐츠 요소(210A-N)를 가릴 수 있다(occlude).
이제 도 3을 참조하면, 도 3은 예시적인 실시예에 따라, 콘텐츠를 제한하기 위한 시스템(200)에 의해서 허용 또는 제한되는 정보 리소스(205)의 콘텐츠 요소(210A-N)에 대한 프로세스 흐름(300)를 도시한 블록도이다. 도 3의 프로세스 흐름(300)에 도시된 바와 같이, 정보 리소스(205)는 제 1 콘텐츠 요소(210A), 제 2 콘텐츠 요소(210B) 및 제 3 콘텐츠 요소(210C)를 포함할 수 있다. 정보 리소스(205) 및 콘텐츠 요소들(210A-C) 각각은 이진 시퀀스 또는 비트 스트림(16 진법으로 도시됨)에 대응할 수 있다. 제 1 콘텐츠 요소(210A)는 제 1 비트 스트림(305A)(예를 들어, "xA831")에 대응할 수 있다. 제 2 콘텐츠 요소(210B)는 제 2 비트 스트림(305B)(예를 들어, "xFC0A")에 대응할 수 있다. 제 3 콘텐츠 요소(210C)는 제 3 비트 스트림(305C)(예를 들어, "x4C9D")에 대응할 수 있다.
도 2의 문맥에서, 요소 해셔(220)는 비트 스트림(305A-C)을 이용하여 콘텐츠 요소들(210A-C)에 대응하는 요소 식별자들(315A-C)(16 진법으로 또한 도시됨)을 생성할 수 있다. 비트 스트림들(305A-N)은 리소스 파서(215)에 의해 식별되고 획득될 수 있다. 도 3의 플로우 프로세스(300)에 도시된 바와 같이, 요소 해셔(220)는 제 1 비트 스트림(305A)에 대하여 제 1 콘텐츠 요소(210A)에 대한 요소 식별자(315A)("xC1A9")를 생성할 수 있다. 요소 해셔(220)는 제 2 비트 스트림(305B)에 대하여 제 2 콘텐츠 요소(210B)에 대한 제 2 요소 식별자(315B)("x8BF2")를 생성할 수 있다. 요소 해셔(220)는 제 3 비트 스트림(305C)에 대하여 제 3 콘텐츠 요소(210C)에 대한 제 3 요소 식별자(315C)("x3C70")를 생성할 수 있다.
도 2의 문맥과 관련하여 도 3을 계속 참조하면, 콘텐츠 제한기(225)는 요소 식별자들(315A-C)을 이용하여 콘텐츠 제한 정책이 콘텐츠 요소들(210A-C) 중 어느 것에 적용되어야 하는지를 결정할 수 있다. 이를 위해, 콘텐츠 제한기(225)는 요소 식별자들(315A-C)에 대하여, 제한된 콘텐츠 데이터베이스, 예를 들어 로컬 제한된 콘텐츠 데이터베이스(240) 또는 원격 제한된 콘텐츠 데이터베이스(245)를 검색할 수 있다. 제한된 콘텐츠 데이터베이스는 허가 표시자에 의해서 요소 식별자들을 배열하기 위해, 가령 제한된 콘텐츠 테이블(315)과 같은 데이터 구조를 포함할 수 있다. 제한된 콘텐츠 데이터베이스에 저장된 제한된 콘텐츠 테이블(325)에서, 콘텐츠 제한기(225)는 제 1 요소 식별자(315A), 제 2 요소 식별자(315B) 및 제 3 요소 식별자(315C)를 식별할 수 있다. 제 1 요소 식별자(315A)의 경우, 콘텐츠 제한기(225)는, 대응하는 제 1 콘텐츠 요소(205A)가 제한되어야한다고 허가 표시자가 지정하고 있음을 확인한다. 대조적으로, 제 2 요소 식별자(315B) 및 제 3 요소 식별자(315C)의 경우, 허가 표시자는 제 2 콘텐츠 요소(205B) 및 제 3 콘텐츠 요소(205C) 모두가 허용되도록 지정한다.
제 1 콘텐츠 요소(205A)에 대응하는 제 1 요소 식별자(315A)를 제한된 콘텐츠 데이터베이스에서 발견하면, 콘텐츠 제한기(225)는 콘텐츠 제한 정책을 제 1 콘텐츠 요소(205A)에 적용할 수 있다. 도 3에 도시된 바와 같이, 콘텐츠 제한기(225)는 정보 리소스(205)로부터 제 1 콘텐츠 요소(210A)를 삭제할 수 있다. 또한, 콘텐츠 제한기(225)는 제 2 콘텐츠 요소(210B)와 제 3 콘텐츠 요소(210C)를 동시에 유지할 수 있다.
도 4를 참조하면, 도 4는 예시적인 구현예에 따라, 정보 리소스들에 삽입된 콘텐츠를 제한하는 방법(400)을 나타내는 흐름도이다. 방법(400)과 관련하여 본 명세서에서 설명된 기능들은 도 1에 도시된 바와 같은 클라이언트 디바이스(125), 프록시 디바이스(145) 또는 원격 콘텐츠 제한기 디바이스(150), 도 2에 도시된 시스템(200), 도 10에 도시된 컴퓨팅 디바이스, 또는 이들의 임의의 조합에 의해 수행될 수 있다. 요약하면, 하나 이상의 프로세서를 갖는 컴퓨팅 디바이스는 콘텐츠 요소의 프리젠테이션을 수정하기 위한 콘텐츠 제한 정책이 적용될 정보 리소스에 포함된 콘텐츠 요소를 식별할 수 있다(블록 405). 컴퓨팅 디바이스는 정보 리소스에 포함된 콘텐츠 요소에 대응하는 비트 스트림을 식별할 수 있다(단계 410). 컴퓨팅 디바이스는 식별된 비트 스트림을 해싱하여 콘텐츠 요소에 대응하는 요소 식별자를 생성할 수 있다(블록 415). 컴퓨팅 디바이스는 요소 식별자를 이용하여 제한된 콘텐츠 데이터베이스에 액세스할 수 있다(블록 420). 컴퓨팅 디바이스는 제한된 콘텐츠 데이터베이스에서 요소 식별자를 발견함에 응답하여, 콘텐츠 제한 정책에 따라 정보 리소스 상의 콘텐츠 요소의 프리젠테이션을 수정할 수 있다(블록 425).
더욱 상세하게는, 하나 이상의 프로세서를 갖는 컴퓨팅 디바이스는 콘텐츠 요소의 프레젠테이션을 수정하기 위한 콘텐츠 제한 정책을 적용할 정보 리소스에 포함된 콘텐츠 요소를 식별할 수 있다(블록 405). 컴퓨팅 디바이스는 콘텐츠 요소의 프레젠테이션을 수정하기 위한 콘텐츠 제한 정책이 적용될 정보 리소스에 포함된 콘텐츠 요소를 식별할 수 있다. 콘텐츠 제한 정책은 콘텐츠 제한 정책 데이터베이스에 저장될 수 있고 프리젠테이션 제한기에 의해 유지될 수 있다. 콘텐츠 제한 정책은 어떤 요소 유형들의 콘텐츠 요소들이 추가로 분석될 것인지 그리고 제한된 것으로 식별된 콘텐츠 요소를 어떻게 수정할지를 특정할 수 있다. 컴퓨팅 디바이스는 어플리케이션과 인터페이스하여 정보 리소스 및 정보 리소스에 포함된 콘텐츠 요소에 액세스할 수 있다.
콘텐츠 제한 정책에 따라, 리소스 파서는 추가 분석을 위해 정보 리소스에 포함된 콘텐츠의 요소들의 서브세트를 식별할 수 있다. 컴퓨팅 디바이스는 정보 리소스에 포함된 각 콘텐츠 요소에 대한 요소 유형을 식별할 수 있다. 요소 유형에는 본문, 단락, 구분, 섹션, 인라인 프레임, 이미지, 캔버스, 어플릿, 스크립트, 오디오, 비디오, 테이블 및 리스트 중 하나 이상이 포함될 수 있다. 요소 유형은 HTML 태그(예: 인라인 프레임의 경우 "<iframe>")에 대응할 수 있다. 일부 구현예에서, 콘텐츠 제한 정책은 추가로 분석될 요소 유형(예를 들어, 인라인 프레임, 이미지, 어플릿 등)을 특정할 수 있다. 컴퓨팅 디바이스는 콘텐츠 제한 정책에 지정된 바와 같이 추가로 분석될 요소 유형과 매칭되는 콘텐츠 요소의 서브세트를 식별할 수 있다. 이러한 방식으로, 프리젠테이션 제한기는 프로세싱될 콘텐츠 요소의 수를 감소시킬 수 있고, 이에 의해 컴퓨팅 리소스를 해방시킬 수 있다.
컴퓨팅 디바이스는 정보 리소스에 포함된 콘텐츠 요소에 대응하는 비트 스트림을 식별할 수 있다(블록 410). 콘텐츠 제한 정책이 콘텐츠 요소에 적용될지의 여부를 결정하기 위해, 컴퓨팅 디바이스는 정보 리소스에 포함된 콘텐츠 요소에 대응하는 비트 스트림을 식별할 수 있다. 정보 리소스는 이진 시퀀스(예: 바이트 어레이 또는 바이트 스트림)에 해당할 수 있다. 정보 리소스에 포함된 각 콘텐츠 요소는 이진 시퀀스의 일부에 대응할 수 있다. 일부 구현예에서, 컴퓨팅 디바이스는 정보 리소스에 대응하는 이진 시퀀스에 액세스하기 위해 어플리케이션과 인터페이스할 수 있다. 일부 구현예에서, 컴퓨팅 디바이스는 콘텐츠 요소 중 하나에 대응하는 이진 시퀀스의 일부분에 액세스하기 위해 어플리케이션과 인터페이스할 수 있다. 일부 구현예에서, 컴퓨팅 디바이스는 어플리케이션과 인터페이스하여, 콘텐츠 제한 정책에 의해 지정된 바와 같이 추가로 분석될 요소 유형과 매칭되는 것으로 식별된 콘텐츠 요소들의 서브세트에 대응하는 이진 시퀀스의 일부분에 액세스할 수 있다. 일부 구현예에서, 컴퓨팅 디바이스는 콘텐츠 요소의 비트 스트림의 서브세트 부분(예를 들어, 비트 스트림의 처음 N 개의 비트들 또는 비트 스트림 내의 매 5 번째 비트 등)을 식별할 수 있다.
컴퓨팅 디바이스는 식별된 비트 스트림을 해싱하여, 콘텐츠 요소에 대응하는 요소 식별자를 생성할 수 있다(블록 415). 컴퓨팅 디바이스가 비트 스트림을 식별하면, 컴퓨팅 디바이스는 식별된 비트 스트림을 해싱하여 콘텐츠 요소에 대응하는 요소 식별자를 생성할 수 있다. 일부 구현예에서, 컴퓨팅 디바이스는 식별된 비트 스트림에 해싱 함수를 이용하여 콘텐츠 요소에 대응하는 요소 식별자를 생성할 수 있다. 해싱 함수는 콘텐츠 요소에 대해 식별된 비트 스트림의 임의의 조합을 포함할 수 있는바, 가령, 암호 해싱 함수들(예를 들어, 보안 해시 알고리즘들(SHA-1, SHA-2 및 SHA-3)), 메시지-다이제스트 알고리즘들(예를 들어,(MD2, MD4, MD5 및 MD6, 체크섬 함수 등), 순환 중복 검사 알고리즘, 해시 테이블(예: 연관 배열(associative array)) 및 기하학적 해싱 함수 또는 임의의 일대일 해싱 함수를 포함할 수 있다. 해싱 함수는 해시 충돌을 최소화하도록 구성되거나 선택될 수 있는바 따라서 동일한 요소 식별자가 2개의 서로 다른 콘텐츠 요소들을 식별할 가능성이 감소된다. 일부 구현예에서, 컴퓨팅 디바이스는 콘텐츠 요소의 비트 스트림의 서브세트 부분을 해싱할 수 있다.
몇몇 구현예에서, 컴퓨팅 디바이스에 의해 이용되는 해싱 함수는 프리젠테이션 제한기의 모든 인스턴스들(instantiations)에 대하여 공통일 수 있다. 동일한 콘텐츠 요소에 대하여, 하나의 컴퓨팅 디바이스에서의 컴퓨팅 디바이스의 하나의 인스턴스는, 다른 컴퓨팅 디바이스에서의 컴퓨팅 디바이스의 다른 하나의 인스턴스와 동일한 요소 식별자를 생성할 수 있다. 이러한 방식으로, 컴퓨팅 디바이스는 네트워크를 통해 컴퓨팅 디바이스들로 전송되는 동일한 콘텐츠 요소를 식별하는 하나의 요소 식별자를 생성할 수 있다.
몇몇 구현예에서, 컴퓨팅 디바이스에 의해 이용되는 해시 함수는, 프레젠테이션 제한기의 로컬 인스턴스(local instantiation)에 고유할 수 있다. 동일한 콘텐츠 요소에 대해, 하나의 컴퓨팅 디바이스에서의 컴퓨팅 디바이스의 하나의 인스턴스(instantiation)는, 다른 하나의 컴퓨팅 디바이스에서 실행되는 컴퓨팅 디바이스의 또 다른 인스턴스에 의해 생성된 요소 식별자와는 다른 요소 식별자를 생성할 수 있다. 컴퓨팅 디바이스는 프리젠테이션 제한기의 로컬 인스턴스에 고유한 요소 식별자를 생성할 수 있다. 프리젠테이션 제한기의 로컬 인스턴스에 고유한 해시 함수를 이용함으로써, 컴퓨팅 디바이스는 이용자의 프라이버시 뿐만 아니라 데이터 보안 및 암호화를 향상시킬 수 있다.
몇몇 구현예에서, 컴퓨팅 디바이스에 의해 이용되는 해시 함수는 정보 리소스 또는 콘텐츠 요소에 대응하는 이진 시퀀스의 임의의 암호화 알고리즘을 설명할 수 있다(account for). 임의의 중간 디바이스는 정보 리소스 또는 콘텐츠 요소에 대응하는 이진 시퀀스에 암호화 알고리즘을 적용할 수 있으며, 따라서 이진 시퀀스를 변경시킬 수 있다. 일부 구현예에서, 이진 시퀀스에 적용된 암호화 알고리즘은 여러 다른 암호화 프로토콜 중에서 WEP(Wired Equivalent Privacy) 및 WPA(Wi-Fi Protected Access)를 포함할 수 있다. 암호화 알고리즘으로 인하여, 하나의 컴퓨팅 디바이스에서 실행되는 컴퓨팅 디바이스는 다른 컴퓨팅 디바이스에서 실행되는 컴퓨팅 디바이스에 의해 생성된 요소 식별자와는 다른 요소 식별자를 생성할 수 있다. 이진 시퀀스에 적용된 암호화 알고리즘의 효과를 우회(bypass)하거나 무효화하기 위해, 컴퓨팅 디바이스는 일대일 해싱 함수를 이용하여, 식별된 비트 스트림 각각에 대한 요소 식별자를 생성할 수 있다. 이러한 방식으로, 비록 컴퓨팅 디바이스에 의해 생성된 요소 식별자가 프리젠테이션 제한기의 로컬 인스턴스화에 대해 고유할 수 있지만, 중간 디바이스에 의해 적용된 암호화 알고리즘은 고유한 값을 생성할 수 있다. 이와 같이, 프리젠테이션 제한기의 하나의 인스턴스에서 컴퓨팅 디바이스에 의해 생성된 요소 식별자는, 다른 디바이스들에서의 프리젠테이션 제한기의 다른 인스턴스들에 대해 이용될 수 있다.
컴퓨팅 디바이스는 요소 식별자를 이용하여 제한된 콘텐츠 데이터베이스에 액세스할 수 있다(블록 420). 컴퓨팅 디바이스에 의해 생성된 요소 식별자를 이용하여, 컴퓨팅 디바이스는 로컬 제한된 콘텐츠 데이터베이스 또는 원격 제한된 콘텐츠 데이터베이스에 액세스하여, 콘텐츠 제한 정책을 콘텐츠 요소에 적용할지 여부를 결정할 수 있다. 로컬 제한된 콘텐츠 데이터베이스는 컴퓨팅 디바이스를 실행하는 컴퓨팅 디바이스에 로컬인 프리젠테이션 제한기의 인스턴스에 의해 유지될 수 있다. 로컬 제한된 콘텐츠 데이터베이스는 요소 식별자 및 해당 요소 식별자가 제한되거나 허용될지를 지정하는 허가 표시자를 저장하기 위한 임의의 데이터 구조(예: 배열, 힙, 링크된 리스트, 이진 트리, 행렬, 테이블 등)를 포함할 수 있다. 원격 제한된 콘텐츠 데이터베이스는 다른 컴퓨팅 디바이스에 의해 유지될 수 있다. 일부 구현예에서, 원격 제한된 콘텐츠 데이터베이스는 컴퓨팅 디바이스를 실행하는 컴퓨팅 디바이스와 다른 프리젠테이션 제한기의 인스턴스에 의해 유지될 수 있다. 일부 구현예에서, 로컬 제한된 콘텐츠 데이터베이스는 원격 디바이스로서 저장되고 유지될 수 있다. 원격 제한된 콘텐츠 데이터베이스는 요소 식별자 및 해당 요소 식별자가 제한되거나 허용될지를 지정하는 허가 표시자를 저장하기 위한 임의의 데이터 구조(예: 배열, 힙, 링크된 리스트, 이진 트리, 행렬, 테이블 등)를 포함할 수 있다.
컴퓨팅 디바이스는 초기에 로컬 제한된 콘텐츠 데이터베이스에 액세스할 수 있다. 컴퓨팅 디바이스는 로컬 제한된 콘텐츠 데이터베이스 내의 요소 식별자들에 대한 검색을 수행할 수 있다. 일부 구현예에서, 컴퓨팅 디바이스는 요소 식별자를 찾기 위하여 로컬 제한된 콘텐츠 데이터베이스를 트래버싱할 수 있다. 일부 구현예에서, 컴퓨팅 디바이스는 로컬 제한된 콘텐츠 데이터베이스에 저장된 데이터 구조에 대한 인덱스로서 요소 식별자를 이용할 수 있다. 컴퓨팅 디바이스가 로컬 제한된 콘텐츠 데이터베이스에서 요소 식별자를 찾아낸다면, 컴퓨팅 디바이스는 요소 식별자에 대한 허가 표시자를 식별할 수 있다. 컴퓨팅 디바이스는 이러한 허가 표시자를 이용하여, 요소 식별자에 대응하는 콘텐츠 요소에 콘텐츠 제한 정책을 적용할지의 여부를 결정할 수 있다.
다른 한편으로, 컴퓨팅 디바이스가 로컬 제한된 콘텐츠 데이터베이스에서 요소 식별자를 찾아내지 못한다면, 컴퓨팅 디바이스는 요소 식별자를 찾으라는 요청을 원격 제한된 콘텐츠 데이터베이스로 전송할 수 있다. 요소 식별자를 찾으라는 요청은, 다른 데이터들 중에서 컴퓨팅 디바이스에 의해 생성된 요소 식별자를 포함할 수 있다. 원격 제한된 콘텐츠 데이터베이스는 프리젠테이션 제한기의 로컬 인스턴스로부터 원격인 디바이스에 의해 유지되거나 이와 관련될 수 있다. 일부 구현예에서, 컴퓨팅 디바이스는 원격 제한된 콘텐츠 데이터베이스를 유지하는 원격 디바이스로 상기 요청을 전송할 수 있다.
컴퓨팅 디바이스로부터 상기 요청을 수신함에 응답하여, 원격 디바이스는, 상기 요청 내의 요소 식별자를 이용하여 원격 제한된 콘텐츠 데이터베이스에 액세스할 수 있다. 원격 디바이스는 원격 제한된 콘텐츠 데이터베이스에서 요소 식별자에 대한 검색을 수행할 수 있다. 일부 구현예에서, 원격 디바이스는 요소 식별자를 찾기 위하여 원격 제한된 콘텐츠 데이터베이스를 트래버싱할 수 있다. 일부 구현예에서, 원격 디바이스는 원격 제한된 콘텐츠 데이터베이스에 저장된 데이터 구조에 대한 인덱스로서 요소 식별자를 이용할 수 있다.
만일, 원격 디바이스가 원격 제한된 콘텐츠 데이터베이스에서 요소 식별자를 찾아낸다면, 상기 원격 디바이스는 상기 요소 식별자에 대한 허가 표시자를 식별할 수 있다. 요소 식별자를 찾는 것에 응답하여, 원격 디바이스는 또한 긍정 응답(positive response)을 컴퓨팅 디바이스로 전송할 수 있다. 긍정 응답은 요소 식별자가 원격 제한된 콘텐츠 데이터베이스에 있음을 나타낼 수 있다. 또한, 긍정 응답은 원격 제한된 콘텐츠 데이터베이스에 지정된 바와 같은 허가 표시자를 포함할 수 있다. 컴퓨팅 디바이스는 원격 제한된 콘텐츠 데이터베이스와 관련된 원격 디바이스로부터의 상기 긍정 응답을 수신할 수 있다. 컴퓨팅 디바이스는 원격 디바이스로부터 수신된 요소 식별자 및 허가 표시자를 로컬 제한된 콘텐츠 데이터베이스에 저장할 수 있다. 허가 표시자에 기초하여, 컴퓨팅 디바이스는 허가 표시자에 대응하는 콘텐츠 요소에 콘텐츠 제한 정책을 적용할지의 여부를 결정할 수 있다.
만일, 원격 디바이스가 원격 제한된 콘텐츠 데이터베이스에서 요소 식별자를 찾지 못한다면, 원격 디바이스는 또한 컴퓨팅 디바이스로 부정 응답을 전송할 수 있다. 부정 응답은 요소 식별자가 원격 제한된 콘텐츠 데이터베이스에 없음을 나타낼 수 있다. 컴퓨팅 디바이스는 원격 제한된 콘텐츠 데이터베이스와 관련된 원격 디바이스로부터 상기 부정 응답을 수신할 수 있다. 원격 디바이스로부터 부정 응답을 수신함에 응답하여, 컴퓨팅 디바이스는 컴퓨팅 디바이스를 호출하여, 렌더링 기반 제한 확장에 따라 콘텐츠 기반 정책이 콘텐츠 요소에 적용될지의 여부를 결정할 수 있다.
또한, 원격 디바이스가 원격 제한된 콘텐츠 데이터베이스에서 요소 식별자를 찾지 못한다면, 원격 디바이스는 콘텐츠 요소 및 정보 리소스의 랜더링 속성들에 기초하는 렌더링 기반 제한 확장에 따라, 콘텐츠 요소가 수정될지의 여부를 결정할 수 있다. 렌더링-기반 제한 확장에 따라 콘텐츠 요소가 수정될지의 여부를 결정하는 것은 원격 디바이스에서의 컴퓨팅 디바이스의 인스턴스에 의해 수행될 수 있다. 원격 디바이스는 어플리케이션에 의해 수신된 콘텐츠 요소 및 정보 리소스의 렌더링 속성들에 액세스할 수 있다. 일부 구현예에서, 원격 디바이스는 렌더링 속성들에 대한 요청을 어플리케이션을 실행하는 디바이스로 전송할 수 있다. 다음으로, 원격 디바이스는 정보 리소스의 콘텐츠 요소의 렌더링 속성들을 상기 디바이스로부터 수신할 수 있다.
렌더링 기반 제한 확장에 따라 콘텐츠 요소의 렌더링 속성들 및 정보 리소스의 렌더링 속성들을 분석함으로써, 원격 디바이스는 콘텐츠 제한 정책이 콘텐츠 요소에 적용될지의 여부를 결정할 수 있다. 렌더링-기반 제한 확장은 소정의 렌더링 속성들을 갖는 콘텐츠 요소들에 콘텐츠 제한 정책이 적용될 것임을 특정할 수 있다. 일반적으로, 렌더링-기반 제한 확장에 따라 콘텐츠 요소의 렌더링 속성들 및 정보 리소스의 렌더링 속성들을 분석하는 것은, 해싱 함수들보다 계산상으로 더 복잡할 수 있다. 따라서, 렌더링-기반 제한 확장은 해싱 함수에 비하여 더 많은 컴퓨터 리소스 및 프로세싱 시간을 소비할 수 있으며, 원격 디바이스의 성능 저하 및 지연을 초래할 수 있다. 컴퓨터 리소스의 소비를 부분적으로 완화하고 프로세싱 시간을 어느 정도 줄이기 위하여, 해싱 함수를 이용한 요소 식별자의 생성 및 렌더링 속성들의 분석은, 다수의 디바이스들 및 프리젠테이션 제한기의 인스턴스들에 걸쳐 분기되거나(bifurcate) 할당될 수 있다.
렌더링 기반 제한 확장에 따라, 원격 디바이스는 지정된(designated) 렌더링 속성들과 콘텐츠 요소의 렌더링 속성들을 비교하여, 콘텐츠 제한 정책이 콘텐츠 요소에 적용될지의 여부를 결정할 수 있다. 일부 구현예에서, 원격 디바이스는 정보 리소스 상의 콘텐츠 요소의 치수들을 미리 지정된 치수들과 비교할 수 있다. 만일, 원격 디바이스가 콘텐츠 요소의 치수와 미리 지정된 치수 사이의 매칭을 결정하면, 원격 디바이스는 콘텐츠 제한 정책이 콘텐츠 요소에 적용될 것이라 결정할 수 있다. 일부 구현예에서, 원격 디바이스는 정보 리소스 상의 콘텐츠 요소의 위치와 미리 지정된 위치(예를 들어, 정보 리소스의 최상단쪽으로 또는 측면을 따라)를 비교할 수 있다. 원격 디바이스가 콘텐츠 요소의 위치와 미리 지정된 위치 사이의 매칭을 결정하면, 원격 디바이스는 콘텐츠 제한 정책이 콘텐츠 요소에 적용될 것이라고 결정할 수 있다. 일부 구현예에서, 원격 디바이스는 콘텐츠 요소의 컬러 값(예를 들어, RGB 값, 문자숫자 식별자 또는 HTML 컬러 코드) 및 정보 리소스의 컬러 값을 식별할 수 있다. 만일, 콘텐츠 요소의 컬러 값과 정보 리소스의 컬러 값이 소정의 마진만큼 상이하면, 원격 디바이스는 콘텐츠 제한 정책이 콘텐츠 요소에 적용되어야 한다라고 결정할 수 있다. 만일, 이들 중 어느 것도 일치하지 않는다면, 원격 디바이스는 콘텐츠 제한 정책이 콘텐츠 요소에 적용되지 않을 것이라고 결정할 수 있다.
또한, 원격 디바이스는 임의 개수 및 조합의 이미지 인식 알고리즘들을 적용하여, 렌더링 기반 제한 확장에 따른 렌더링 속성에 기초하여 콘텐츠 제한 정책이 콘텐츠 요소에 적용될지의 여부를 결정할 수 있다. 콘텐츠 요소는 이미지를 포함할 수 있거나 이미지의 소스 어드레스를 포함할 수 있다. 콘텐츠 요소는 비디오를 포함할 수 있거나 또는 비디오에 대한 소스 어드레스를 포함할 수 있다. 일부 구현예에서, 원격 디바이스는 이미지 인식 알고리즘을 적용하여, 콘텐츠 요소의 이미지 또는 비디오가 제한된 시각적 요소(예컨대, 누드, 폭력, 마약 및 다른 바람직하지 않은 이미지 또는 비디오 요소)를 포함하고 있는지의 여부를 결정할 수 있다. 이미지 인식 알고리즘은 광학 문자 인식, 물체 인식, 엣지 검출, 피쳐 검출(예: 어파인 피쳐 검출) 및 패턴 인식 알고리즘을 포함할 수 있다. 일부 구현예에서, 원격 디바이스는 광학 문자 인식 알고리즘을 이용하여 콘텐츠 요소의 이미지로부터 문자열을 식별할 수 있다. 원격 디바이스는 식별된 문자열을 미리 지정된 문자열과 비교할 수 있다. 식별된 문자열이 미리 지정된 문자열과 일치하면, 원격 디바이스는 콘텐츠 제한 정책이 콘텐츠 요소에 적용되어야한다고 결정할 수 있다. 그렇지 않으면, 원격 디바이스는 콘텐츠 제한 정책이 콘텐츠 요소에 적용되지 않을 것이라고 결정할 수 있다.
렌더링 속성들의 분석에 기초하여 콘텐츠 제한 정책이 콘텐츠 요소에 적용될 것인지를 결정하는 것과 함께, 원격 디바이스는 콘텐츠 요소에 대응하는 요소 식별자를 원격 제한된 콘텐츠 데이터베이스에 추가 또는 삽입할 수 있다. 원격 디바이스가 콘텐츠 제한 정책이 적용될 것으로 결정한다면, 상기 원격 디바이스는 요소 식별자에 대응하는 콘텐츠 요소가 제한되어야 함을 나타내는 허가 표시자를 추가 혹은 삽입할 수 있다. 만일, 원격 디바이스가 콘텐츠 제한 정책이 적용되지 않을 것으로 결정한다면, 원격 디바이스는 요소 식별자에 대응하는 콘텐츠 요소가 허가됨을 나타내는 허가 표시자를 추가 혹은 삽입할 수 있다. 이어서, 상기 원격 디바이스는 긍정 응답을 컴퓨팅 디바이스로 전송할 수 있다. 긍정 응답은 요소 식별자가 원격 제한된 콘텐츠 데이터베이스 상에 있음을 나타낼 수 있다. 긍정 응답은 또한, 원격 제한된 콘텐츠 데이터베이스로부터 검색된 허가 표시자를 포함할 수 있다.
일부 실시예에서, 컴퓨팅 디바이스가 로컬 제한된 콘텐츠 데이터베이스에서 요소 식별자를 찾지 못한다면, 컴퓨팅 디바이스는 컴퓨팅 디바이스를 호출할 수 있다. 호출되면, 컴퓨팅 디바이스는 콘텐츠 요소를 분석하여, 콘텐츠 제한 정책이 렌더링 기반 제한 확장에 따라 콘텐츠 요소에 적용되는지 여부를 결정할 수 있다. 또한, 컴퓨팅 디바이스는 원격 제한된 콘텐츠 데이터베이스와 연관된 원격 디바이스로부터 요소 식별자에 대한 부정 응답을 수신하는 것에 응답하여 콘텐츠 요소를 분석하기 위해 컴퓨팅 디바이스를 호출할 수 있다.
렌더링 기반 제한 확장에 따라 콘텐츠 요소의 렌더링 속성들 및 정보 리소스의 렌더링 속성들을 분석함으로써, 컴퓨팅 디바이스는 콘텐츠 요소에 콘텐츠 제한 정책이 적용되어야하는지 여부를 결정할 수 있다. 렌더링 기반 제한 확장은 소정의 렌더링 속성들을 갖는 콘텐츠 요소들에 콘텐츠 제한 정책이 적용되어야함을 지정할 수 있다.
렌더링 기반 제한 확장에 따라, 컴퓨팅 디바이스는 콘텐츠 요소의 렌더링 속성을 지정된(designated) 렌더링 속성들과 비교하여, 콘텐츠 제한 정책이 콘텐츠 요소에 적용될지의 여부를 결정할 수 있다. 일부 구현예에서, 컴퓨팅 디바이스는 정보 리소스 상의 콘텐츠 요소의 치수를 미리 지정된 치수들과 비교할 수 있다. 만일, 컴퓨팅 디바이스가 콘텐츠 요소의 치수와 미리지정된 위치 사이의 매칭을 결정하면, 컴퓨팅 디바이스는 콘텐츠 제한 정책이 콘텐츠 요소에 적용되어야한다고 결정할 수 있다. 일부 구현예에서, 컴퓨팅 디바이스는 정보 리소스 상의 콘텐츠 요소의 위치를 미리 지정된 위치(예를 들어, 정보 리소스의 최상부를 향하여 또는 측면을 따라)와 비교할 수 있다. 컴퓨팅 디바이스가 콘텐츠 요소의 위치와 미리 지정된 위치 사이의 매칭을 결정하면, 컴퓨팅 디바이스는 콘텐츠 제한 정책이 콘텐츠 요소에 적용되어야한다고 결정할 수 있다. 일부 구현예에서, 컴퓨팅 디바이스는 콘텐츠 요소의 컬러 값(예를 들어, RGB 값, 문자숫자 식별자 또는 HTML 컬러 코드) 및 정보 리소스의 컬러 값을 식별할 수 있다. 콘텐츠 요소의 컬러 값과 정보 리소스의 컬러 값이 미리 정의된 마진만큼 다른 경우, 컴퓨팅 디바이스는 콘텐츠 제한 정책이 콘텐츠 요소에 적용되어야한다고 결정할 수 있다. 이들 중 어느 것도 일치하지 않으면, 컴퓨팅 디바이스는 콘텐츠 제한 정책이 콘텐츠 요소에 적용되지 않을 것이라고 결정할 수 있다.
또한, 컴퓨팅 디바이스는 임의 개수 및 조합의 이미지 인식 알고리즘들을 적용하여, 렌더링 기반 제한 확장에 따른 렌더링 속성에 기초하여 콘텐츠 제한 정책이 콘텐츠 요소에 적용될지의 여부를 결정할 수 있다. 콘텐츠 요소는 이미지를 포함할 수 있거나 이미지의 소스 어드레스를 포함할 수 있다. 콘텐츠 요소는 비디오를 포함할 수 있거나 또는 비디오에 대한 소스 어드레스를 포함할 수 있다. 일부 구현예에서, 컴퓨팅 디바이스는 이미지 인식 알고리즘을 적용하여, 콘텐츠 요소의 이미지 또는 비디오가 제한된 시각적 요소(예컨대, 누드, 폭력, 마약 및 다른 바람직하지 않은 이미지 또는 비디오 요소)를 포함하고 있는지의 여부를 결정할 수 있다. 이미지 인식 알고리즘은 광학 문자 인식, 물체 인식, 엣지 검출, 피쳐 검출(예: 어파인 피쳐 검출) 및 패턴 인식 알고리즘을 포함할 수 있다. 일부 구현예에서, 컴퓨팅 디바이스는 광학 문자 인식 알고리즘을 이용하여 콘텐츠 요소의 이미지로부터 문자열을 식별할 수 있다. 컴퓨팅 디바이스는 식별된 문자열을 미리 지정된 문자열과 비교할 수 있다. 식별된 문자열이 미리 지정된 문자열과 일치하면, 컴퓨팅 디바이스는 콘텐츠 제한 정책이 콘텐츠 요소에 적용되어야한다고 결정할 수 있다. 그렇지 않으면, 컴퓨팅 디바이스는 콘텐츠 제한 정책이 콘텐츠 요소에 적용되지 않을 것이라고 결정할 수 있다.
렌더링 속성들의 분석에 기초하여 콘텐츠 제한 정책이 콘텐츠 요소에 적용될 것인지를 결정하는 것과 함께, 컴퓨팅 디바이스는 콘텐츠 요소에 대응하는 요소 식별자를 로컬 제한된 콘텐츠 데이터베이스에 추가 또는 삽입할 수 있다. 컴퓨팅 디바이스가 콘텐츠 제한 정책이 적용될 것으로 결정한다면, 상기 컴퓨팅 디바이스는 요소 식별자에 대응하는 콘텐츠 요소가 제한되어야 함을 나타내는 허가 표시자를 추가 혹은 삽입할 수 있다. 만일, 컴퓨팅 디바이스가 콘텐츠 제한 정책이 적용되지 않을 것으로 결정한다면, 컴퓨팅 디바이스는 요소 식별자에 대응하는 콘텐츠 요소가 허가됨을 나타내는 허가 표시자를 추가 혹은 삽입할 수 있다.
요소 식별자가 로컬 제한된 콘텐츠 데이터베이스 또는 원격 제한된 콘텐츠 데이터베이스에서 발견되지 않는다면, 컴퓨팅 디바이스는, 어플리케이션에 의해 콘텐츠 요소를 정보 리소스 상에 제 1 포함시키는(first inclusion) 동안 콘텐츠 요소를 유지할 수 있다. 콘텐츠 요소의 제 1 포함(first inclusion)은, 네트워크에 접속된 프리젠테이션 제한기를 실행하는 임의의 디바이스에 대한 콘텐츠 요소의 제 1 제공에 대응할 수 있다. 일부 실시예에서, 컴퓨팅 디바이스는 정보 리소스의 제 1 포함 중에 콘텐츠 요소의 속성들을 디폴트 값으로 설정 또는 유지할 수 있다. 정보 리소스 상의 콘텐츠 요소의 제 1 포함에 후속하여, 컴퓨팅 디바이스는 컴퓨팅 디바이스를 호출할 수 있다. 호출될 때, 컴퓨팅 디바이스는 콘텐츠 요소를 분석하여, 여기서 설명된 기능들을 이용하여 렌더링-기반 제한 확장에 따라 콘텐츠 제한 정책이 콘텐츠 요소에 적용될지의 여부를 결정할 수 있다. 렌더링 속성들에 기초하여 콘텐츠 제한 정책이 콘텐츠 요소에 적용되어야한다라고 컴퓨팅 디바이스가 결정하면, 컴퓨팅 디바이스는 임의의 정보 리소스 상의 콘텐츠 요소의 후속 포함들 동안, 콘텐츠 요소를 수정할 수 있다. 이러한 방식으로, 콘텐츠 요소는 제 1 제공 동안 어플리케이션을 실행하는 컴퓨팅 디바이스에서 정보 리소스 상에 프리젠테이션되고 렌더링될 수 있다. 콘텐츠 요소 및 정보 리소스의 렌더링 속성들의 분석에 기초하여, 어플리케이션을 실행하는 컴퓨팅 디바이스에 대한 콘텐츠 요소의 후속 수정들 및 제공들에서, 콘텐츠 요소가 수정될 수 있다.
제한된 콘텐츠 데이터베이스에서 요소 식별자를 발견함에 응답하여, 컴퓨팅 디바이스는 콘텐츠 제한 정책에 따라 정보 리소스 상의 콘텐츠 요소의 프리젠테이션을 수정할 수 있다(블록 425). 로컬 제한된 콘텐츠 데이터베이스 또는 원격 제한된 콘텐츠 데이터베이스에서 요소 식별자를 발견함에 응답하여, 컴퓨팅 디바이스는 콘텐츠 제한 정책에 따라 정보 리소스 상의 콘텐츠 요소의 프리젠테이션을 수정할 수 있다. 콘텐츠 제한 정책 데이터베이스에서 유지되는 콘텐츠 제한 정책은 콘텐츠 요소의 프리젠테이션을 수정하기 위한 임의 개수의 동작들 또는 동작들의 조합을 수행하도록 컴퓨팅 디바이스를 지정할 수 있다. 일부 구현예에서, 컴퓨팅 디바이스는 콘텐츠 제한 정책에 의해 지정된 바와 같이 콘텐츠 요소를 디스에이블할 수 있다. 일부 구현예에서, 컴퓨팅 디바이스는 콘텐츠 제한 정책에 의해 지정된 바와 같이 콘텐츠 요소를 정보 리소스로부터 삭제하거나 제거할 수 있다. 일부 실시예들에서, 컴퓨팅 디바이스는 정보 리소스에 대한 마크업(markup)에서 콘텐츠 요소에 대응하는 코드 세그먼트를 식별할 수 있다. 컴퓨팅 디바이스는 콘텐츠 요소에 대응하는 코드 세그먼트를 삭제, 제거 또는 그렇지 않으면 무효로 할 수 있다. 일부 구현예에서, 컴퓨팅 디바이스는 콘텐츠 제한 정책에 의해 지정된 바와 같이 콘텐츠 요소의 가시적 속성을 온에서 오프로 설정할 수 있다. 콘텐츠 요소의 가시성 속성을 온에서 오프로 설정하는 것은, 어플리케이션이 콘텐츠 요소를 정보 리소스 상에 렌더링, 디스플레이 또는 달리 제시하지 못하게 할 수 있다. 일부 실시예에서, 컴퓨팅 디바이스는 콘텐츠 제한 정책에 의해 지정된 바와 같이 임의의 리다이렉션 링크들을 콘텐츠 요소로부터 제거할 수 있다. 리다이렉션 링크의 상호작용 또는 활성화는 어플리케이션을 실행하는 컴퓨팅 디바이스가 추가 콘텐츠를 검색하게 할 수 있다. 일부 구현예에서, 컴퓨팅 디바이스는 콘텐츠 요소에 대응하는 코드 세그먼트에 기초하여 콘텐츠 요소가 리다이렉트 링크를 포함하는지를 결정할 수 있다.
또한, 요소 식별자를 발견함에 응답하여, 컴퓨팅 디바이스는 콘텐츠 제한 정책에 의해 지정된 바와 같이 정보 리소스 상의 콘텐츠 요소와 관련된 데이터의 전송 및 수신을 수정할 수 있다. 일부 실시예들에서, 컴퓨팅 디바이스는 콘텐츠 요소와 연관된 어플리케이션을 실행하는 컴퓨팅 디바이스로부터의 데이터 패킷들의 전송을 변경할 수 있다. 콘텐츠 요소는 확인 응답(acknowledgement response)을 로그 서버로 전송하도록, 어플리케이션을 실행하는 컴퓨팅 디바이스를 지정하는 코드 세그먼트를 포함할 수 있다. 확인 응답은 어플리케이션을 실행하는 컴퓨팅 디바이스에서의 콘텐츠 요소의 수신 또는 프리젠테이션에 대한 확인을 나타낼 수 있다. 컴퓨팅 디바이스는 확인 응답의 전송을 위한 코드 세그먼트를 식별할 수 있다. 일부 구현예에서, 컴퓨팅 디바이스는 확인 응답의 전송을 디스에이블하기 위해, 식별된 코드 세그먼트를 수정, 제거 또는 삭제할 수 있다. 일부 구현예에서, 컴퓨팅 디바이스는 또한 확인 응답의 전송을 허용할 수 있고 그리고 확인 응답의 전송을 디스에이블하기 위해 식별된 코드 세그먼트를 후속적으로 수정, 제거 또는 삭제할 수 있다. 일부 구현예에서, 컴퓨팅 디바이스는 콘텐츠 요소와 연관된 다른 컴퓨팅 디바이스(예를 들어, 데이터 프로세싱 시스템, 콘텐츠 제공자 디바이스 및 콘텐츠 발행 디바이스)로부터의 데이터 패킷들의 수신을 변경할 수 있다. 일부 구현예에서, 컴퓨팅 디바이스는 데이터 패킷(예를 들어, 스트리밍 비디오를 위한 프래그먼트 덩어리(fragment chunks))을 수신할 수 있다. 컴퓨팅 디바이스는 어플리케이션에 의한 프로세싱으로부터 데이터 패킷들을 제거할 수 있다.
만일, 요소 식별자가 로컬 제한된 콘텐츠 데이터베이스 또는 원격 제한된 콘텐츠 데이터베이스에서 발견된다면, 컴퓨팅 디바이스는 정보 리소스에 추가적인 콘텐츠 요소를 부가하여, 콘텐츠 요소의 프리젠테이션을 수정할 수 있다. 컴퓨팅 디바이스는 콘텐츠 요소의 위치 및 치수들을 식별할 수 있다. 컴퓨팅 디바이스는 콘텐츠 요소를 포함하는 정보 리소스의 시각적 특성들(예를 들어, 컬러 값)을 식별할 수 있다. 컴퓨팅 디바이스는 콘텐츠 요소의 식별된 위치 및 치수들과 정보 리소스의 시각적 특성을 구비한 추가 콘텐츠 요소를 생성하여 콘텐츠 요소를 가릴 수 있다(occlude).
도 5는 예시적인 실시예에 따라 정보 리소스에 삽입된 콘텐츠를 제한하는 방법(500)을 도시하는 흐름도이다. 방법(500)과 관련하여 여기에서 설명된 기능들은 도 1에 도시된 바와 같은 클라이언트 디바이스(125), 프록시 디바이스(145) 또는 원격 콘텐츠 제한기 디바이스(150), 도 2에 도시된 시스템(200), 또는 도 10에 도시된 디바이스, 또는 이들의 임의의 조합에 의해서 수행 혹은 실행될 수 있다. 간략히 설명하면, 클라이언트 디바이스는 정보 리소스 상의 콘텐츠 요소를 식별할 수 있다(블록 503). 클라이언트 디바이스는 콘텐츠 요소가 제한된 타입인지 여부를 결정할 수 있다(블록 506). 콘텐츠 요소가 제한된 타입이 아닌 경우, 클라이언트 디바이스는 정보 리소스 상의 다음 콘텐츠 요소를 식별할 수 있다(블록 569). 콘텐츠 요소가 제한된 타입이라면, 클라이언트 디바이스는 콘텐츠 요소에 대응하는 비트 시퀀스를 식별할 수 있다(블록 509). 클라이언트 디바이스는 비트 시퀀스의 서브 세트를 추출하여, 콘텐츠 요소에 대한 비트 스트림을 얻을 수 있다(블록 512). 클라이언트 디바이스는 비트 스트림의 해시를 계산하여 요소 식별자를 생성할 수 있다(블록 515). 클라이언트 디바이스는 로컬 제한된 콘텐츠 데이터베이스에 액세스하여 요소 식별자를 검색할 수 있다(블록 518). 클라이언트 디바이스는 요소 식별자가 로컬 제한된 콘텐츠 데이터베이스에 있는지 여부를 결정할 수 있다(블록 521). 요소 식별자가 로컬 제한된 콘텐츠 데이터베이스에 있지 않으면, 클라이언트 디바이스는 원격 디바이스에 요청을 전송할 수 있다(블록 524).
원격 디바이스는 클라이언트 디바이스로부터의 요청을 수신할 수 있다(블록 527). 원격 디바이스는 원격 제한된 콘텐츠 데이터베이스에 액세스하여 요소 식별자를 검색할 수 있다(블록 530). 원격 디바이스는 요소 식별자가 원격 제한된 콘텐츠 데이터베이스에 있는지 여부를 결정할 수 있다(블록 533). 요소 식별자가 원격 제한된 콘텐츠 데이터베이스에 있으면, 원격 디바이스는 표시자를 클라이언트 디바이스로 전송할 수 있다(블록 536). 요소 식별자가 원격 제한된 콘텐츠 데이터베이스에 없으면, 원격 디바이스는 콘텐츠 요소의 렌더링 특성을 식별할 수 있다(블록 539). 원격 디바이스는 식별된 렌더링 속성에 기초하여 콘텐츠 요소가 수정되어야하는지 여부를 결정할 수 있다(블록 542). 만일 허용된다면, 원격 디바이스는 허용된 것으로 원격 제한된 콘텐츠 데이터베이스에 요소 식별자를 추가할 수 있다(블록 545). 만일 제한된다면, 원격 디바이스는 제한된 것으로서 원격 제한된 콘텐츠 데이터베이스에 요소 식별자를 추가할 수 있다(블록 548). 원격 디바이스는 표시자를 전송할 수 있다(블럭 551).
클라이언트 디바이스는 상기 표시자를 수신하고 그리고 로컬 제한된 콘텐츠 데이터베이스에 요소 식별자를 추가할 수 있다(블록 554). 클라이언트 디바이스는 요소 식별자가 허용 또는 제한으로 지정되는지 여부를 결정할 수 있다(블록 557). 허용되는 경우, 클라이언트 디바이스는 정보 리소스 상의 콘텐츠 요소를 유지할 수 있다(블록 560). 제한되는 경우, 클라이언트 디바이스는 정보 리소스 상의 콘텐츠 요소를 수정할 수 있다(블록 563). 다음으로, 클라이언트 디바이스는 정보 리소스 상의 다음 콘텐츠 요소를 식별할 수 있다(블록 569). 방법(500)의 기능들은 임의의 횟수로 반복될 수 있다.
C. 정보 리소스에 삽입된 콘텐츠를 제한하는 시스템 및 방법
어플리케이션 상에서 플러그-인(plug-in)으로서 동작하거나 또는 클라이언트 디바이스 혹은 프록시 디바이스(예를 들어, 라우터) 상에서 실행되는 어플리케이션과는 별도인 프로그램으로서 동작하는 콘텐츠 제어 모듈은, 콘텐츠 요소들의 정보 리소스로의 삽입 혹은 프리젠테이션을 간섭(interfere)할 수 있다. 이들 콘텐츠 제어 모듈들은 정보 리소스 상의 콘텐츠 요소를 간섭하기 위해 다양한 기술들의 조합을 이용할 수 있다. 하나의 기술은 소스 어드레스를 이용하여, 콘텐츠 요소가 정보 리소스의 나머지와는 다른 소스로부터 온 것인지를 식별할 수 있다. 이러한 기술은 콘텐츠 요소의 소스 어드레스가 정보 리소스의 소스 어드레스와 동일한 경우에는 효용이 없을 수 있다. 다른 기술은 콘텐츠 요소와 기저의 정보 리소스 간의 차이점들을 검출하는 이미지 프로세싱 기술을 이용하여 콘텐츠 요소들을 식별할 수 있다. 하지만, 이러한 기술은 계산량이 매우 많으며, 컴퓨터 성능의 지연 및 저하를 초래할 수 있다. 또 다른 기술은, 제한된 해시 값들의 리스트를 유지하는 콘텐츠 제한 데이터베이스에 저장된 것들과 콘텐츠 요소에 대응하는 비트 스트림의 해시 값을 매칭시킴으로써 콘텐츠 요소를 식별하는 것일 수 있다.
이들 콘텐츠 제어 모듈들은 보안 문제를 야기할 수 있다. 이러한 콘텐츠 제어 모듈들은 정보 리소스에 초기에 제공된 구성 콘텐츠 요소를 허가없이 변경할 수 있다. 더욱이, 이들 모듈은 콘텐츠 요소 및 정보 리소스의 행동이 정보 리소스가 원래 프로그래밍된 방식에서 벗어나게 하는 원인이 될 수 있다. 예를 들어, 콘텐츠 제어 모듈은 콘텐츠 요소들 중 하나에서 링크(예를 들어, 하이퍼링크)를 변경할 수 있어, 잠재적으로는 클라이언트 디바이스가 악의적인 웹 사이트로 리다이렉트되게 한다. 더욱이, HCI(Human-Computer Interaction) 관점에서 볼 때, 콘텐츠 요소들에 대한 이러한 변경들 및 정보 리소스의 행동에서의 일탈들은, 정보 리소스 및 어플리케이션에 대한 이용자의 경험을 간섭할 수 있다. 예를 들어, 콘텐츠 제어 모듈이 정보 리소스로부터 콘텐츠 요소들 중 하나를 제거하면, 사용자는 제거된 콘텐츠 요소를 보거나 상호작용할 수 없으므로, 원래 인코딩된 정보 리소스에 대한 사용자의 경험을 감소시킨다.
일부 구현예에서, 콘텐츠 발행자는 클라이언트 디바이스로 하여금 하나 이상의 링크를 통해 하나 이상의 콘텐츠 서버로부터 콘텐츠를 요청하게 하는 명령들을 정보 리소스들에 포함시킬 수 있다. 이들 콘텐츠 서버들은 콘텐츠 발행자의 콘텐츠를 호스팅하는 호스트 서버와 다를 수 있다. 정보 리소스를 전송하기 전에 정보 리소스에 콘텐츠를 직접 삽입하는 대신에, 콘텐츠를 요청하는 명령들을 포함시킴으로써 콘텐츠 발행자는 네트워크 트래픽의 양을 감소시킬 뿐만 아니라 정보 리소스를 클라이언트 디바이스에 제공할 때의 대기시간을 줄일 수 있다. 클라이언트 디바이스에서 실행되는 일부 콘텐츠 제어 모듈들은, 콘텐츠 서버들에 대한 링크들을 다른 콘텐츠 서버들 또는 알 수 없는 콘텐츠 서버들로 변경하거나 혹은 임의의 요청이 임의의 콘텐츠 서버로 전송되는 것을 차단함으로써, 하나 이상의 콘텐츠 서버들로부터의 콘텐츠에 대한 요청을 전송하는 클라이언트 디바이스의 기능을 간섭할 수 있다. 그 결과, 클라이언트 디바이스는 콘텐츠 발행자가 콘텐츠 발행자의 정보 리소스에 포함시키기를 원하는 모든 콘텐츠 아이템에 액세스하거나 디스플레이할 수 없을 수도 있다.
콘텐츠 제어 모듈로 인한 잠재적인 피해의 일부를 회피하기 위해, 제안된 시스템은 콘텐츠 제어 모듈의 약점들 중 일부를 활용할 수 있다(예를 들어, 섹션 B에서 상세히 기술된 바와 같이 프레젠테이션 제한기 165). 각각의 새로운 콘텐츠 요소는 제한할지의 여부를 결정하기 위해 콘텐츠 제어 모듈로 하여금 해시 값들을 재-계산하게 하고 그리고 이미지 프로세싱 알고리즘을 이용하여 콘텐츠 요소를 새롭게 프로세싱하게 하는바, 이는 컴퓨팅 파워의 소모 및 지연을 야기한다. 이것은 또한, 콘텐츠 요소에 대한 수신 핑(receipt ping)의 확인(confirmation)이 지연되게 할 수 있다. 콘텐츠 요소에 대한 수신 핑의 확인이 지연되면, 서버는 콘텐츠 요소의 편집된 버전을 생성할 수 있으며 그리고 편집된 버전을 전송할 수 있다. 서버는 파일 이름을 편집하거나 콘텐츠 요소의 시각적 특성을 변경할 수 있다. 따라서, 콘텐츠 요소의 편집된 버전에 대응하는 비트 스트림의 해시 값은 이전 해시 값과 다를 수 있으며, 따라서 이는 클라이언트 디바이스에서 콘텐츠 제어 모듈이 이미지 프로세싱 알고리즘을 재실행하도록 트리거링한다. 이로 인해 클라이언트 디바이스에서 실행되는 콘텐츠 제어 모듈의 성능이 저하될 수 있다. 클라이언트 디바이스에서 실행되는 콘텐츠 제어 모듈의 성능을 저하시킴으로써, 콘텐츠 제어 모듈의 이용이 제한될 수 있다. 콘텐츠 제어 모듈의 이용을 금지하는 것은, 각각의 클라이언트 디바이스 상에서 사용자에게 콘텐츠가 어떻게 디스플레이되는지에 대한 제어권을 콘텐츠 제공자 및 콘텐츠 발행자가 보유할 수 있게 한다. 이것은 예를 들어, 개선된 사용자 인터페이스 경험을 제공할 수 있으며 또는 콘텐츠가 디스플레이되는 방법에 대한 요구사항들을 충족시킬 수 있다.
이제 도 6을 참조하면, 도 6은 예시적인 실시예에 따라 정보 리소스의 무결성 을 간섭하는 스크립트들에 대한 대비책을 채용하기 위한 시스템(600)을 도시한 블록도이다. 시스템(600)은 네트워크(105), 콘텐츠 요청 모듈(130)을 포함하는 데이터 프로세싱 시스템(110), 리소스 어셈블러 모듈(135), 데이터베이스(140), 콘텐츠 제공자 디바이스(115), 콘텐츠 발행자 디바이스(120), 클라이언트 디바이스(125), 프록시 디바이스(150) 및 원격 콘텐츠 제한기 디바이스(155)와 같은 환경(100)의 디바이스들, 컴포넌트들 및 모듈들의 전부 또는 일부를 포함할 수 있다.
시스템(600)에서, 데이터 프로세싱 시스템(110)은 간섭 검출기(interference detector)(605), 콘텐츠 수정기(content modifier)(610), 및 데이터베이스(615)를 포함할 수 있다. 간섭 검출기(605) 및 콘텐츠 수정기(610)는 적어도 하나의 프로세싱 유닛, 서버, 가상 서버, 회로, 엔진, 에이전트, 어플라이언스, 혹은 데이터베이스(140) 또는 데이터베이스(615) 및 다른 컴퓨팅 디바이스들(예를 들어, 콘텐츠 제공자 디바이스 115, 콘텐츠 발행자 디바이스 120, 혹은 클라이언트 디바이스 125)와 네트워크(105)를 통해 통신하도록 구성된 프로그램가능한 로직 어레이와 같은 다른 로직 디바이스를 포함할 수 있다. 간섭 검출기(605) 및 콘텐츠 수정기(610)는 적어도 하나의 컴퓨터 프로그램 또는 적어도 하나의 스크립트를 포함하거나 실행할 수 있다. 간섭 검출기(605) 및 콘텐츠 수정기(610)는 데이터 프로세싱 시스템(110)의 개별 구성 요소, 단일 구성 요소 또는 일부일 수 있다. 간섭 검출기(605) 및 콘텐츠 수정기(610)는 하나 이상의 스크립트를 실행하도록 구성된 하나 이상의 프로세서와 같은 하드웨어 및 소프트웨어의 조합을 포함할 수 있다. 간섭 검출기(605) 및 콘텐츠 수정기(610)는 네트워크(105)에 접속된 디바이스들에 제공하기 위해 콘텐츠 요소들 및 정보 리소스들을 선택 및 생성하는데 있어, 콘텐츠 요청 모듈(130) 및 리소스 어셈블러 모듈(135)과 인터페이스할 수 있다.
데이터 프로세싱 시스템(110)은 또한, 콘텐츠 요소들(예를 들어, 콘텐츠 요소들 210A-N) 및 정보 리소스의 속성들을 저장하기 위한 하나 이상의 데이터베이스(615)를 포함할 수 있다. 데이터베이스(615)는 데이터 프로세싱 시스템(110)에 대해 로컬일 수 있다. 일부 실시예에서, 데이터베이스(615)는 데이터 프로세싱 시스템(110)에 대해 원격일 수 있지만, 네트워크(105)를 통해 데이터 프로세싱 시스템(110)과 통신할 수 있다. 콘텐츠 요청 모듈(130) 및 리소스 어셈블러 모듈(135)에 의해 선택 및 생성된 정보 리소스 및 콘텐츠 요소들과 같은 것을 클라이언트 디바이스(125)에 서비스하기 위해, 데이터베이스(615)는 정보 리소스들 및 정보 리소스들에 포함될 콘텐츠 요소들의 속성들을 포함할 수 있다. 데이터베이스(615)는 콘텐츠 요청 모듈(130) 및 리소스 어셈블러 모듈(135) 또는 데이터 프로세싱 시스템(110)의 임의의 다른 컴포넌트에 의해 생성되거나 수정된 정보 리소스들 및 콘텐츠 요소들을 저장할 수 있다. 일부 구현예에서, 데이터베이스(615)는 데이터베이스(140)와 동일할 수 있다.
정보 리소스의 무결성을 보존하기 위하여, 간섭 검출기(605)는 정보 리소스(예를 들어, 정보 리소스 205) 상의 제 1 콘텐츠 요소(예를 들어, 콘텐츠 요소 210A-N)를 식별할 수 있다. 정보 리소스 및 제 1 콘텐츠 요소는 네트워크(105)에 연결된 클라이언트 디바이스(125)에 이전에 전송되거나 제공될 수 있다. 정보 리소스는 이진 시퀀스에 대응할 수 있다. 제 1 콘텐츠는 제 1 비트 스트림에 대응할 수 있다. 클라이언트 디바이스(125), 프록시 디바이스(145) 또는 원격 콘텐츠 제한기 디바이스(155) 상에서 실행되는 프리젠테이션 제한기(165)(또는 임의의 다른 콘텐츠 제어 모듈)는 정보 리소스 상에 제 1 콘텐츠 요소의 표시 또는 포함을 간섭할 수 있다. 일부 구현예에서, 프리젠테이션 제한기(165)는 섹션 B에서 설명된 바와 같이, 정보 리소스 상의 제 1 콘텐츠 요소에 콘텐츠 제한 정책을 적용할 수 있다.
일부 구현예에서, 간섭 검출기(605)는 추가 분석을 위해, 정보 리소스에 포함된 콘텐츠의 요소들의 서브세트를 식별할 수 있다. 간섭 검출기(605)는 정보 리소스에 포함된 각 콘텐츠 요소에 대한 요소 유형을 식별한다. 요소 유형에는 본문, 단락, 구분, 섹션, 인라인 프레임, 이미지, 캔버스, 어플릿, 스크립트, 오디오, 비디오, 테이블 및 리스트 중 하나가 포함될 수 있다. 요소 유형은 HTML 태그(예: 인라인 프레임의 경우 "<iframe>")에 해당할 수 있다. 추가로 분석될 요소 유형들은 프리젠테이션 제한기(165)에 의해 수정될 가능성이 가장 높은 것들(예를 들어, 인라인 프레임, 오디오, 비디오, 이미지 등)을 포함할 수 있다. 간섭 검출기(605)는 요소 유형들과 매칭되는 콘텐츠 요소들의 서브세트를 식별할 수 있다. 이러한 방식으로, 간섭 검출기(605)는 프로세싱될 콘텐츠 요소들의 개수를, 프리젠테이션 제한기(165)에 의해 수정될 가능성이 가장 높은 것들의 개수로 감소시킬 수 있고, 그에 따라 데이터 프로세싱 시스템(110)에 대한 컴퓨팅 리소스를 해방시킬 수 있다.
일부 구현예에서, 간섭 검출기(605)는 정보 리소스에 포함된 제 1 콘텐츠 요소에 대응하는 비트 스트림을 식별할 수 있다. 정보 리소스는 이진 시퀀스(예: 바이트 어레이 또는 바이트 스트림)에 해당할 수 있다. 정보 리소스에 포함된 각 콘텐츠 요소는 이진 시퀀스의 일부에 대응할 수 있다. 일부 구현예에서, 간섭 검출기(605)는 정보 리소스에 대응하는 이진 시퀀스에 액세스할 수 있다. 일부 구현예에서, 간섭 검출기(605)는 콘텐츠 요소들 중 하나에 대응하는 이진 시퀀스의 부분에 액세스할 수 있다. 일부 구현예에서, 간섭 검출기(605)는 추가 분석될 요소 유형과 매칭하는 것으로 식별된 콘텐츠 요소의 서브세트에 대응하는 이진 시퀀스의 부분을 액세스할 수 있다. 일부 구현예에서, 간섭 검출기(605)는 정보 리소스, 콘텐츠 요소 및 대응하는 이진 시퀀스에 대한 데이터베이스(615)에 액세스할 수 있다.
정보 리소스 상에서 식별된 콘텐츠 요소를 이용하여, 간섭 검출기(605)는 정보 리소스 상의 제 1 콘텐츠 요소의 렌더링에 대한 임의의 간섭을 결정할 수 있다. 제 1 콘텐츠 요소의 렌더링에 대한 간섭은, 클라이언트 디바이스(125) 상의 방식으로 콘텐츠 요소의 디스플레이 또는 프리젠테이션을 디스에이블, 금지, 또는 수정하는 것을 포함할 수 있다. 이러한 간섭은, 클라이언트 디바이스(125), 프록시 디바이스(145), 또는 원격 콘텐츠 제한기 디바이스(150) 상에서 실행되는 프리젠테이션 제한기(165)로 인한 것일 수 있다. 간섭 검출기(605)는 프리젠테이션 제한기(165)에 의한 그러한 간섭의 발생을 결정하기 위해 임의의 수 또는 조합의 기술을 이용할 수 있다.
콘텐츠 요소의 전송 시간 및 임의의 확인 응답 시간을 이용하여, 간섭 검출기(605)는 정보 리소스 상의 콘텐츠 요소의 렌더링에 대한 간섭을 결정할 수 있다. 각각의 정보 리소스는 정보 리소스 내에 콘텐츠 삽입을 요청하기 위한 요청 스크립트를 포함할 수 있다. 정보 리소스를 수신함에 응답하여, 요청 스크립트는 클라이언트 디바이스(125)로 하여금 콘텐츠에 대한 요청을 데이터 프로세싱 시스템(110)으로 전송하게 할 수 있다. 각 콘텐츠 요소는 확인 응답 스크립트(acknowledgement response script)를 포함할 수 있다. 콘텐츠 요소를 수신하면, 확인 응답 스크립트는 어플리케이션(160)을 실행하는 클라이언트 디바이스(125)로 하여금, 확인 응답(예컨대, 핑백(pingback))을 데이터 프로세싱 시스템(110) 또는 콘텐츠 제공자 디바이스(115)로 다시 전송하게 한다. 콘텐츠 요소의 전송 시간 및 콘텐츠에 대한 요청의 수신 시간 또는 임의의 확인 응답들은 데이터베이스(140) 또는 데이터베이스(615)에 저장될 수 있다.
콘텐츠 요소의 클라이언트 디바이스(125)로의 송신 시간의 임의의 불규칙성, 클라이언트 디바이스(125)로부터 콘텐츠 요소와 연관된 콘텐츠 요청의 수신 시간, 및 클라이언트 디바이스(125)로부터의 임의의 확인 응답의 수신 시간은, 클라이언트 디바이스(125)에서의 프리젠테이션 제한기(165)의 실행을 나타낼 수 있다. 클라이언트 디바이스(125) 상에서 프리젠테이션 제한기(165)의 기능을 수행하는 것은, 프리젠테이션 제한기(165)가 없는 경우에 비하여, 임의의 확인 응답의 수신에 더 긴 시간이 걸리게 할 수 있다. 간섭 검출기(605)는 콘텐츠 요소의 렌더링이 간섭받았는지 여부를 결정함에 있어서, 콘텐츠 요소 및 정보 리소스의 전송 및 콘텐츠 요소와 관련된 임의의 확인 응답의 수신과 관련된 다양한 시간들을 비교할 수 있다. 이러한 비교는 실시간으로 또는 지정된 시간 간격으로 수행될 수 있다. 일부 구현예에서, 제 1 콘텐츠 요소의 응답은 콘텐츠 발행자 디바이스(125)에 연동되어(tied to) 다음 정보 리소스를 이용가능하게하여, 응답을 보내기 전에 악의적인 클라이언트 렌더러(예를 들어, 프리젠테이션 제한기 165)가 임의의 시간 동안 대기하는 것을 방지한다. 결과적으로, 해시-기반 접근법을 이용하는 악의적 렌더러는 간섭 검출기(605)에 의한 탐지를 피하기 위해 해시 기반이 아닌 "무차별 대입(brute force)" 접근법만큼 느리고 비효율적이 될 수 있다.
일부 구현예들에서, 간섭 검출기(605)는, 콘텐츠 요청의 수신 부족(lack of receipt of the request for content) 또는 클라이언트 디바이스(125)로부터의 제 1 콘텐츠 요소에 대한 확인 응답의 수신 부족으로부터, 정보 리소스 상의 제 1 콘텐츠 요소의 렌더링에 대한 간섭의 발생을 결정할 수 있다. 콘텐츠 요청에 대한 수신 부족 또는 클라이언트 디바이스(125)로부터의 제 1 콘텐츠 요소에 대한 확인 응답의 수신 부족은, 프리젠테이션 제한기(165)가 제 1 콘텐츠 요소 또는 정보 리소스의 동작을 변경했다는 것을 나타낼 수 있다. 이를 위해, 각각의 콘텐츠 요소에 대하여, 간섭 검출기(605)는 데이터베이스(615)에 액세스하여, 정보 리소스가 클라이언트 디바이스(125)로 전송되었는지 또는 클라이언트 디바이스(125)에 제공되었는지의 여부를 결정할 수 있다. 간섭 검출기(605)는 제 1 콘텐츠 요소와 관련된 콘텐츠 요청이 클라이언트 디바이스(125)로부터 수신되었는지의 여부를 결정할 수 있다. 콘텐츠 요청이 클라이언트 디바이스(125)로부터 수신되었다면, 간섭 검출기(605)는 다른 팩터들 중에서도 특히, 상기 요청의 수신 시간을 분석하여, 제 1 콘텐츠 요소의 간섭을 결정할 수 있다. 콘텐츠 요청이 클라이언트 디바이스(125)로부터 수신되지 않았다면, 간섭 검출기(605)는 클라이언트 디바이스 상의 정보 리소스 상의 제 1 콘텐츠 요소의 렌더링에 대한 간섭의 발생을 결정할 수 있다. 각각의 콘텐츠 요소에 대하여, 간섭 검출기(605)는 또한 데이터베이스(615)에 액세스하여, 제 1 콘텐츠 요소와 관련된 확인 응답이 클라이언트 디바이스(125)로부터 수신되었는지 여부를 결정할 수 있다. 확인 응답이 클라이언트 디바이스(125)로부터 수신되었다면, 간섭 검출기(605)는 다른 팩터들 중에서도 특히, 확인 응답 시간을 분석하여, 제 1 콘텐츠 요소의 간섭을 결정할 수 있다. 확인 응답이 클라이언트 디바이스(125)로부터 수신되지 않았다면, 간섭 검출기(605)는 클라이언트 디바이스 상의 정보 리소스 상의 제 1 콘텐츠 요소의 렌더링에 대한 간섭의 발생을 결정할 수 있다.
일부 구현예에서, 간섭 검출기(605)는 클라이언트 디바이스(125)로 제 1 콘텐츠 요소를 전송한 시간과 클라이언트 디바이스(125)로부터 제 1 콘텐츠 요소에 대한 확인 응답을 수신한 시간 사이에 경과된 시간을 비교하여 간섭의 발생을 결정한다. 간섭 검출기(605)는 전송 시간 및 확인 응답의 수신 시간에 대하여 데이터베이스(140) 또는 데이터베이스(615)에 액세스한다. 간섭 검출기(605)는 클라이언트 디바이스(125)로 제 1 콘텐츠 요소를 전송한 시간을 식별할 수 있다. 제 1 콘텐츠 요소의 전송 시간은 데이터 프로세싱 시스템(110) 또는 콘텐츠 제공자 디바이스(115)가 클라이언트 디바이스(125)로 제 1 콘텐츠 요소를 전송하거나 그렇지 않으면 제 1 콘텐츠 요소를 제공한 시간에 대응할 수 있다. 간섭 검출기(605)는 확인 응답의 수신 시간을 식별할 수 있다. 확인 응답의 수신 시간은 제 1 콘텐츠 요소를 프로세싱하는 클라이언트 디바이스(125)가 데이터 프로세싱 시스템(110) 또는 콘텐츠 제공자 디바이스(115)로 확인 응답을 다시 전송한 시간에 대응할 수 있다. 간섭 검출기(605) 제 1 콘텐츠 요소의 전송 시간과 확인 응답의 수신 시간 사이에 경과된 시간을 계산할 수 있다. 간섭 검출기(605)는 계산된 경과 시간을 미리결정된 임계값(예를 들어, 마이크로 초 내지 밀리 초 범위)과 비교할 수 있다. 계산된 경과 시간이 미리 결정된 임계값보다 크거나 같다라고 간섭 검출기(605)가 결정하면, 간섭 검출기(605)는 정보 리소스 상의 제 1 콘텐츠 요소의 렌더링에 대한 간섭의 발생을 결정할 수 있다. 계산된 경과 시간이 미리 결정된 임계값보다 작다라고 간섭 검출기(605)가 결정하면, 간섭 검출기(605)는 정보 리소스 상의 제 1 콘텐츠 요소의 렌더링에 대한 간섭이 없다(lack)라고 결정할 수 있다.
일부 구현예들에서, 간섭 검출기(605)는 다수의 클라이언트 디바이스들(125)로 제 1 콘텐츠 요소를 전송한 시간들과 클라이언트 디바이스들로부터 확인 응답들을 수신한 시간들 사이의 평균 경과 시간을 비교하여, 간섭의 발생을 결정할 수 있다. 간섭 검출기(605)는 전송 시간들 및 각각의 클라이언트 디바이스(125)에 대한 확인 응답의 수신 시간들에 대하여 데이터베이스(140) 또는 데이터베이스(615)에 액세스할 수 있다. 간섭 검출기(605)는 제 1 콘텐츠 요소의 전송 시간들과 복수의 클라이언트 디바이스들(125)에 대한 확인 응답들의 수신 시간들 사이의 평균 경과 시간을 계산할 수 있다. 간섭 검출기(605)는 계산된 평균 경과 시간을 미리결정된 임계값(예를 들어, 마이크로 초 내지 밀리 초 범위)과 비교할 수 있다. 계산된 평균 경과 시간이 미리 결정된 임계값보다 크거나 같다라고 간섭 검출기(605)가 결정하면, 간섭 검출기(605)는 다수의 클라이언트 디바이스들(125)에 대한 정보 리소스 상의 제 1 콘텐츠 요소의 렌더링에 간섭이 발생했다라고 결정할 수 있다. 계산된 평균 경과 시간이 미리 결정된 임계값보다 작다라고 간섭 검출기(605)가 결정하면, 간섭 검출기(605)는 다수의 클라이언트 디바이스들(125)에 대한 정보 리소스 상의 제 1 콘텐츠 요소의 렌더링에 대해 간섭이 없다(lack)라고 결정할 수 있다.
일부 구현예에서, 간섭 검출기(605)는 제 1 콘텐츠 요소의 제 1 전송 및 제 2 전송 사이의 제 1 경과 시간과 제 1 콘텐츠 요소에 대한 확인 응답의 제 1 수신 및 제 2 수신 사이의 제 2 경과 시간을 비교할 수 있다. 제 1 경과 시간과 제 2 경과 시간 간의 차이값은, 정보 리소스 상에 제 1 콘텐츠 요소를 렌더링 또는 삽입하는 것을 프리젠테이션 제한기(165)가 방해하고 있음을 나타낼 수 있다. 프리젠테이션 제한기(165)는 제 1 콘텐츠 요소의 제 1 수신시에 콘텐츠 제한 정책을 콘텐츠 요소에 적용할지 여부를 결정하기 위해 제 1 콘텐츠 요소를 분석하도록 렌더링-기반 제한 정책(예를 들어, 이미지 프로세싱 기술)을 이용했을 수 있다. 후속하여, 프리젠테이션 제한기(165)는 제 1 콘텐츠 요소가 제한된 콘텐츠 데이터베이스(예를 들어, 로컬 제한된 콘텐츠 데이터베이스 240 또는 원격 제한된 콘텐츠 데이터베이스 245) 상의 요소 식별자에 대응하는지 여부를 식별하기 위하여, 해싱 함수를 이용했을 수 있다. 이미지 프로세싱 알고리즘의 성능은 해시 값들의 계산보다 더 많은 시간을 소비할 수 있다.
제 1 콘텐츠 요소의 전송과 확인 응답의 수신 시간 사이의 간격에서의 차이값들을 식별하기 위해, 간섭 검출기(605)는 클라이언트 디바이스(125)로의 제 1 콘텐츠 요소의 제 1 전송 시간을 식별할 수 있다. 간섭 검출기(605)는 클라이언트 디바이스(125)로부터의 제 1 콘텐츠 요소에 대한 제 1 확인 응답의 제 1 수신 시간을 식별할 수 있다. 간섭 검출기(605)는 클라이언트 디바이스(125)로의 제 1 콘텐츠 요소의 제 1 전송 시간과 콘텐츠 요소에 대한 제 1 확인 응답의 제 1 수신 시간 사이의 제 1 경과 시간을 계산할 수 있다. 간섭 검출기(605)는 클라이언트 디바이스(125)로의 제 1 콘텐츠 요소의 제 2 전송 시간을 식별할 수 있다. 간섭 검출기(605)는 클라이언트 디바이스(125)로부터 제 1 콘텐츠 요소에 대한 제 2 확인 응답의 제 2 수신 시간을 식별할 수 있다. 간섭 검출기(605)는 클라이언트 디바이스(125)로의 제 1 콘텐츠 요소의 제 2 전송 시간과 클라이언트 디바이스(125)로부터의 콘텐츠 요소에 대한 제 2 확인 응답의 제 2 수신 시간 사이의 제 2 경과 시간을 계산할 수 있다. 일부 실시예에서, 제 1 경과 시간 및 제 2 경과 시간은 제 1 콘텐츠 요소의 전송 시간들 및 복수의 클라이언트 디바이스(125)들에 대한 확인 응답들의 수신 시간을 이용하여 계산될 수 있다. 간섭 검출기(605)는 제 1 경과 시간과 제 2 경과 시간 사이의 차이를 계산할 수 있다. 간섭 검출기(605)는 상기 차이를 소정의 임계값과 비교할 수 있다. 만일, 간섭 검출기(605)가 상기 차이가 소정의 임계값보다 크거나 같은 것으로 결정하면, 간섭 검출기(605)는 정보 리소스 상의 제 1 콘텐츠 요소의 렌더링에 간섭이 발생했음을 결정할 수 있다. 만일, 간섭 검출기(605)가 상기 차이가 소정의 임계값보다 작은 것으로 결정하면, 간섭 검출기(605)는 정보 리소스 상의 제 1 콘텐츠 요소의 렌더링에 대한 간섭이 없다(lack)라고 결정할 수 있다.
일부 구현예에서, 상기 간섭 검출기(605)는 제 1 콘텐츠 요소에 대한 요청의 예측된 수신 시간과 제 1 콘텐츠 요소에 대한 요청의 실제 수신 시간을 비교하여, 제 1 콘텐츠 요소의 렌더링에 대한 간섭을 결정할 수 있다. 클라이언트 디바이스(125) 상에서 실행되는 프리젠테이션 제한기(165)는 콘텐츠 요소 또는 정보 리소스의 행동을 변경했을 수 있다. 결과적으로, 클라이언트 디바이스(125)는 프리젠테이션 제한기(165)가 없는 경우보다 나중의 시간에서 정보 리소스를 수신한 후에 제 1 콘텐츠 요소에 대한 요청을 전송하게 될 수 있다. 행동의 변경을 설명하기 위해, 간섭 검출기(605)는 클라이언트 디바이스(125)로부터 제 1 콘텐츠 요소를 정보 리소스에 삽입하도록 콘텐츠 요청에 대한 실제 수신 시간을 식별하기 위해 데이터베이스(615)에 액세스할 수 있다. 간섭 검출기(605) 또한, 클라이언트 디바이스(125)로의 정보 리소스의 전송과 클라이언트 디바이스(125)로부터의 콘텐츠 요청의 수신 사이의 실제 경과 시간을 식별할 수 있다. 간섭 검출기(605)는 클라이언트 디바이스(125)로부터의 콘텐츠 요소와 관련된 콘텐츠에 대한 요청의 예측된 수신 시간을 임의의 개수의 팩터를 이용하여 결정 또는 계산할 수 있다. 이러한 팩터들은 특히 네트워크(105)의 네트워크 대역폭, 네트워크(105)에 대한 네트워크 대기 시간, 클라이언트 디바이스(125)에 대한 디바이스 유형 및 클라이언트 디바이스(125)의 디바이스 설정 파라미터들을 포함할 수 있다. 또한, 간섭 검출기(605)는 클라이언트 디바이스(125)로 정보 리소스를 전송하는 것과 클라이언트 디바이스(125)로부터 콘텐츠 요청을 수신하는 것 사이의 예상 경과 시간을 결정하거나 계산할 수 있다. 간섭 검출기(605)는 예상 시간과 콘텐츠 요청의 실제 수신 시간을 비교할 수 있다. 일부 구현예에서, 간섭 검출기(605)는 예상 시간과 콘텐츠 요청의 실제 수신 시간 간의 차이를 계산할 수 있다. 간섭 검출기(605)가 상기 차이가 소정의 임계값보다 크거나 같은 것으로 결정하면, 간섭 검출기(605)는 정보 리소스 상의 제 1 콘텐츠 요소의 렌더링에 간섭이 발생했음을 결정할 수 있다. 간섭 검출기(605)가 상기 차이가 소정의 임계값보다 작은 것으로 결정하면, 간섭 검출기(605)는 정보 리소스 상의 1 콘텐츠 요소의 렌더링에 대한 간섭이 없다라고 결정할 수 있다.
일부 구현예에서, 상기 간섭 검출기(605)는, 제 1 콘텐츠 요소에 대한 확인 응답의 실제 수신 시간과 제 1 콘텐츠 요소에 대한 확인 응답의 예측된 수신 시간을 비교하여, 제 1 콘텐츠 요소의 렌더링에 대한 간섭을 결정할 수 있다. 클라이언트 디바이스(125) 상에서 실행되는 프리젠테이션 제한기(165)는 콘텐츠 요소 또는 정보 리소스의 행동을 변경했을 수도 있다. 결과적으로, 클라이언트 디바이스(125)는 프리젠테이션 제한기(165)가 없는 경우보다 더 늦은 시간에서 콘텐츠 요소를 수신한 후에 제 1 콘텐츠 요소에 대한 확인 응답을 전송하게 될 수 있다. 행동의 변경을 설명하기 위해, 간섭 검출기(605)는 데이터베이스(615)에 액세스하여, 클라이언트 디바이스(125)로부터의 제 1 콘텐츠 요소에 대한 확인 응답의 실제 수신 시간을 식별할 수 있다. 간섭 검출기(605) 또한, 클라이언트 디바이스(125)로의 정보 리소스의 전송과 클라이언트 디바이스(125)로부터의 확인 응답의 수신 사이의 실제 경과 시간을 식별할 수 있다. 간섭 검출기(605)는 클라이언트 디바이스(125)로부터의 확인 응답의 예측된 수신 시간을 임의의 개수의 팩터를 이용하여 결정 또는 계산할 수 있다. 이러한 팩터들은 특히 네트워크(105)의 네트워크 대역폭, 네트워크(105)에 대한 네트워크 대기 시간, 클라이언트 디바이스(125)에 대한 디바이스 유형 및 클라이언트 디바이스(125)의 디바이스 설정 파라미터들을 포함할 수 있다. 또한, 간섭 검출기(605)는 클라이언트 디바이스(125)로 정보 리소스를 전송하는 것과 클라이언트 디바이스(125)로부터 확인 응답을 수신하는 것 사이의 예상 경과 시간을 결정하거나 계산할 수 있다. 간섭 검출기(605)는 상기 예상 시간과, 제 1 콘텐츠 요소에 대한 확인 응답의 실제 시간을 비교할 수 있다. 일부 구현예에서, 간섭 검출기(605)는 상기 예상 시간과 제 1 콘텐츠 요소에 대한 확인 응답의 실제 수신 시간 사이의 차이값을 계산할 수 있다. 간섭 검출기(605)가 상기 차이값이 소정의 임계값보다 크거나 같은 것으로 결정하면, 간섭 검출기(605)는 정보 리소스 상의 제 1 콘텐츠 요소의 렌더링에 간섭이 발생했음을 결정할 수 있다. 간섭 검출기(605)가 상기 차이값이 소정의 임계값보다 작은 것으로 결정하면, 간섭 검출기(605)는 정보 리소스 상의 1 콘텐츠 요소의 렌더링에 대한 간섭이 없다라고 결정할 수 있다.
일부 구현예에서, 간섭 검출기(605)는 클라이언트 디바이스들(125)의 서브세트들로부터 제 1 콘텐츠 요소와 관련된 행동에서의 차이점들을 식별하여, 정보 리소스 상의 제 1 콘텐츠 요소에 대한 간섭을 결정할 수 있다. 클라이언트 디바이스들(125)의 제 1 서브세트는 프리젠테이션 제한기(165)를 실행할 수 있거나, 또는 정보 리소스 및 정보 리소스 상의 콘텐츠 요소를 프로세싱함에 있어서 프리젠테이션 제한기(165)에 의해 영향을 받을 수 있다. 다른 한편으로, 클라이언트 디바이스들(125)의 제 2 서브세트는 프리젠테이션 제한기(165)를 실행하지 않을 수 있다. 이와 같이, 클라이언트 디바이스들(125)의 제 1 서브세트는, 콘텐츠 요소를 프로세싱하고 분석하는데 있어서, 클라이언트 디바이스들(125)의 제 2 서브세트와는 상이한 시간량을 소비할 수 있다. 행동에서의 차이들을 설명하기 위해, 각각의 클라이언트 디바이스(125)에 대하여, 간섭 검출기(605)는 제 1 콘텐츠 요소의 전송 시간, 콘텐츠 요청의 수신 시간 및 확인 응답의 수신 시간을 식별할 수 있다. 식별된 값을 파라미터로서 이용하여, 간섭 검출기(605)는 클라이언트 디바이스들(125)의 서브세트들을 식별하기 위해, 클러스터링 알고리즘(예를 들어, k-최근접 알고리즘(k-nearest neighbor algorithm), 기대-최대화(expectation-maximization), 기타 등등)을 적용할 수 있다. 각각의 서브세트에 대하여, 간섭 검출기(605)는 제 1 콘텐츠 요소의 전송 시간, 콘텐츠 요청의 수신 시간, 및 확인 응답의 수신 시간에 대한 평균값(mean value)을 계산할 수 있다. 간섭 검출기(605)는 클러스터링 알고리즘을 이용하여 식별된 클라이언트 디바이스들(125)의 서브세트들에 대하여, 평균값의 차이를 계산할 수 있다. 간섭 검출기(605)는 상기 차이를 미리 결정된 마진과 비교할 수 있다. 간섭 검출기(605)가 상기 차이가 미리 결정된 마진보다 크거나 같은 것으로 결정하면, 간섭 검출기(605)는 정보 리소스 상의 제 1 콘텐츠 요소의 렌더링에 대한 간섭이 발생했다라고 결정할 수 있다. 간섭 검출기(605)가 상기 차이가 미리 결정된 마진보다 작다고 결정하면, 간섭 검출기(605)는 정보 리소스 상의 제 1 콘텐츠 요소의 렌더링에 대한 간섭이 없다라고 결정할 수 있다.
정보 리소스 상의 제 1 콘텐츠 요소의 렌더링에 대한 간섭을 검출하는 것에 응답하여, 콘텐츠 수정기(610)는 제 1 콘텐츠 요소에 기초하여 후속 정보 리소스에 대한 제 2 콘텐츠 요소를 생성할 수 있다. 제 2 콘텐츠 요소는 제 1 비트 스트림과 상이한 제 2 비트 스트림에 대응할 수 있다. 프리젠테이션 제한기(165)가 비트 스트림들의 해시 값을 계산하여 각 콘텐츠 요소에 대한 요소 식별자를 생성하기 때문에, 제 1 비트 스트림과는 다른 제 2 비트 스트림은 프리젠테이션 제한기(165)로 하여금 제 2 콘텐츠 요소를 분석하도록 렌더링 기반 제한 정책(예컨대, 이미지 프로세싱 알고리즘을 이용하여)을 재실행하게 할 수 있다. 상이한 비트 스트림들을 갖는 다양한 콘텐츠 요소들에 콘텐츠 제한 정책을 적용할지의 여부를 결정하기 위해 렌더링 기반 제한 정책을 반복적으로 적용하는 것은, 프리젠테이션 제한기(165)를 실행하는 디바이스의 성능을 저하시킬 수 있다. 이를 위해, 콘텐츠 수정기(610)는 콘텐츠 수정 정책에 따른 임의 개수 및 조합의 기술들을 이용하여, 상기 제 1 비트 스트림과 다른 제 2 비트 스트림을 구비한 제 2 콘텐츠 요소를 생성하도록 제 1 콘텐츠 요소를 수정할 수 있다.
콘텐츠 수정기(610)에 의해 생성된 제 2 콘텐츠 요소는 제 1 콘텐츠 요소와 시각적으로는 비유사하게 보일 수 있지만 동일한 정보(예컨대, 다른 배경색을 갖는 동일한 텍스트 또는 다른 테두리의 폭을 갖는 동일한 이미지)를 전달하며, 이는 제 1 비트 스트림으로부터 제 2 비트 스트림으로의 변경을 야기할 수 있다. 일부 구현예에서, 콘텐츠 수정기(610)는 제 1 콘텐츠 요소의 시각적 특성들(예를 들어 폰트, 폰트 크기, 배경색, 경계 폭, 치수, 정보 리소스상의 위치 등)을 수정하여 제 2 콘텐츠 요소를 생성할 수 있다. 시각적 특성의 수정은 제 1 비트 스트림으로부터 제 2 비트 스트림으로의 변경을 초래할 수 있다. 콘텐츠 수정기(610)는 제 1 콘텐츠 요소의 시각적 특성을 데이터베이스(615)로부터 식별할 수 있다. 콘텐츠 수정기(610)는 콘텐츠 수정 정책에 따라 제 1 콘텐츠 요소의 시각적 특성을 디폴트 값과 다른 값으로 설정할 수 있다. 콘텐츠 수정 정책은 시각적 특성들의 어떤 값들이 디폴트 값에 근거하여 설정되는지를 지정할 수 있다(예컨대, 배경색을 밝은 녹색으로부터 밝은 파란색으로 변경함).
콘텐츠 수정기(610)에 의해 생성된 제 2 콘텐츠 요소는 제 1 콘텐츠 요소와 시각적으로는 유사하게 보일 수 있으며, 다른 기능 행동(function behavior)을 갖는 동일한 정보를 전달하여, 제 1 비트 스트림으로부터 제 2 비트 스트림으로의 변경을 야기할 수 있다. 일부 실시예에서, 콘텐츠 수정기(610)는 제 1 콘텐츠 요소의 파일 경로명(file pathname)을 수정하여 제 2 콘텐츠 요소를 생성할 수 있다. 파일 경로명은 제 1 콘텐츠 요소의 소스 어드레스에 대응할 수 있다. 주소와 일치할 수 있다. 파일 경로 이름은 프로토콜(예: http, https, ftp 등), 호스트명(예: www.example.com) 및 파일명(예: /samplecontent.html)을 포함할 수 있다. 콘텐츠 수정기(610)는 파일 경로명으로부터 프로토콜, 호스트명 및 파일명을 식별할 수 있다. 일부 구현예에서, 콘텐츠 수정기(610)는 호스트명 및 파일명 중 하나를 수정하여 제 2 콘텐츠 요소를 생성할 수 있다. 콘텐츠 수정기(610)는 제 2 콘텐츠 요소를 생성하기 위해 수정된 파일 경로명을 갖는 제 1 콘텐츠 요소를 재생 또는 재생성한다. 일부 구현예에서, 콘텐츠 수정기(610)는 제 1 콘텐츠 요소의 리다이렉트 링크를 수정하여 제 2 콘텐츠 요소를 생성할 수 있다. 리다이렉트 링크는 제 1 콘텐츠 요소에 포함된 소스 어드레스를 포함할 수 있고, 클라이언트 디바이스(125) 상에서 동작하는 어플리케이션(160)이 소스 어드레스에 대응하는 콘텐츠를 검색하게하도록 구성될 수 있다. 콘텐츠 수정기(610)는 제 1 콘텐츠 요소의 리다이렉트 링크를 식별할 수 있다. 콘텐츠 수정기(610)는 제 2 콘텐츠 요소를 생성하기 위해 수정된 리다이렉트 링크로 제 1 콘텐츠 요소를 재생 또는 재생할 수 있다.
콘텐츠 수정기(610)에 의해 생성된 제 2 콘텐츠 요소는 제 1 콘텐츠 요소의 코드 또는 마크업과 상이한 코드 또는 마크업에 해당할 수 있으며, 이는 제 1 비트 스트림으로부터 제 2 비트 스트림으로의 변경을 초래한다. 콘텐츠 수정기(610)는 제 1 콘텐츠 요소 또는 제 1 콘텐츠 요소와 연관된 정보 리소스에 대응하는 코드 세그먼트를 수정하여 제 2 콘텐츠 요소를 생성할 수 있다. 코드 세그먼트는 제 1 콘텐츠 요소와 연관된 하나 이상의 스크립트를 포함할 수 있다. 콘텐츠 수정기(610)는 제 1 콘텐츠 요소의 수정들로 코드 세그먼트를 재생 또는 재생하여 제 2 콘텐츠 요소를 생성할 수 있다.
일부 구현예에서, 콘텐츠 수정기(610)는 제 1 콘텐츠 요소의 코드 세그먼트로부터 확인 응답 코드를 식별할 수 있다. 콘텐츠 수정기(610)는 제 1 콘텐츠 요소의 코드 세그먼트로부터 확인 응답 코드를 수정하여, 제 2 콘텐츠 요소를 생성할 수 있다. 클라이언트 디바이스(125)에 의해 수신되고 클라이언트 디바이스(125) 상에서 실행되는 어플리케이션(160)에 의해 프로세싱되면, 확인 응답 코드는 클라이언트 디바이스(125)로 하여금 확인 응답(예를 들어, 핑백)을 데이터 프로세싱 시스템(110) 또는 콘텐츠 제공자 디바이스(115)로 전송하게할 수 있다.
일부 구현예에서, 콘텐츠 수정기(610)는 정보 리소스의 코드 세그먼트로부터의 콘텐츠 요청 코드를 식별할 수 있다. 콘텐츠 수정기(610)는 정보 리소스의 코드 세그먼트로부터 콘텐츠 요청 코드를 수정하여 제 2 콘텐츠 요소를 생성할 수 있다. 클라이언트 디바이스(125)에 의해 일단 수신되고 클라이언트 디바이스(125) 상에서 실행되는 어플리케이션(160)에 의해 프로세싱되면, 콘텐츠 요청 코드는 클라이언트 디바이스(125)로 하여금 정보 리소스에 콘텐츠 요소를 삽입하도록 콘텐츠 요청을 데이터 프로세싱 시스템(110) 또는 콘텐츠 제공자 디바이스(115)로 전송하게 할 수 있다.
일부 구현예에서, 콘텐츠 수정기(610)는 제 1 콘텐츠 요소의 코드 세그먼트에 부속 코드(appendage code)를 추가, 삽입, 첨부하여 제 2 콘텐츠 요소를 생성할 수 있다. 부속 코드는 제 1 콘텐츠 요소에 대해 제 2 콘텐츠 요소의 행동을 변경하거나 바꾸지 않는 비기능적 코드(nonfunctional code)일 수 있다. 부속 코드는 제 1 비트 스트림으로부터 제 2 비트 스트림으로의 변경을 유발할 수 있다.
실제로, 비트 스트림이 변경되었는지의 여부를 확인하기 위해, 콘텐츠 수정기(610)는 제 2 콘텐츠 요소에 대한 제 2 비트 스트림이 제 1 콘텐츠 요소에 대한 제 1 비트 스트림과 다른지를 판단할 수 있다. 콘텐츠 수정기(610)는 제 1 콘텐츠 요소에 대응하는 제 1 비트 스트림을 식별할 수 있다. 콘텐츠 수정기(610)는 제 2 콘텐츠 요소에 대응하는 제 2 비트 스트림을 식별할 수 있다. 콘텐츠 수정기(610)는 제 1 비트 스트림과 제 2 비트 스트림 사이의 상이한 비트들의 개수를 식별하거나 결정할 수 있다. 콘텐츠 수정기(610)는 상이한 비트들의 개수를 임계 개수와 비교할 수 있다. 만일, 콘텐츠 수정기(610)가 상이한 비트들의 개수가 임계 개수보다 크거나 같다고 결정하면, 콘텐츠 수정기(610)는 클라이언트 디바이스(125)로의 제 2 콘텐츠 요소의 전송 또는 제공을 허용할 수 있다. 만일, 콘텐츠 수정기(610)가 상이한 비트들의 개수가 임계 개수보다 작다라고 결정하면, 콘텐츠 수정기(610) 클라이언트 디바이스(125)로의 제 2 콘텐츠 요소의 전송 또는 제공을 제한할 수 있다. 콘텐츠 수정기(610)는 또한, 제 1 콘텐츠 요소의 변경을 재실행(re-run)하여 다른 콘텐츠 요소를 생성할 수 있다.
일부 구현예에서, 콘텐츠 수정기(610)는 제 1 비트 스트림과 제 2 비트 스트림 사이의 상이한 비트들의 분포를 식별할 수 있다. 콘텐츠 수정기(610)는 상이한 비트들의 분포를 미리 결정된 임계값과 비교할 수 있다. 콘텐츠 수정기(610)가 상이한 비트들의 분포가 미리 결정된 임계값보다 크거나 같은 것으로 결정하면, 콘텐츠 수정기(610)는 클라이언트 디바이스(125)로의 제 2 콘텐츠 요소의 전송 또는 제공을 허용할 수 있다. 콘텐츠 수정기(610)가 상이한 비트의 분포가 미리 결정된 임계값보다 작다라고 결정하면, 콘텐츠 수정기(610)는 제 2 콘텐츠 요소의 클라이언트 디바이스(125)로의 제공 또는 전송을 제한할 수 있다. 콘텐츠 수정기(610)는 또한, 제 1 콘텐츠 요소의 변경을 재실행(re-run)하여 다른 콘텐츠 요소를 생성할 수 있다.
제 2 콘텐츠 요소가 생성되면, 콘텐츠 수정기(610)는 제 2 콘텐츠 요소를 포함하는 후속 정보 리소스를 클라이언트 디바이스(125)로 전송할 수 있다 일부 구현예에서, 데이터 프로세싱 시스템(110)은 정보 리소스에 대한 요청을 클라이언트 디바이스(125)로부터 수신할 수 있다. 상기 요청을 수신하는 것에 응답에서, 데이터 프로세싱 시스템(110)은 상기 후속 정보 리소스를 전송할 수 있다. 일부 실시예에서, 데이터 프로세싱 시스템(110)은 정보 리소스에 삽입하기 위한 콘텐츠 요청을 클라이언트 디바이스(125)로부터 수신할 수 있다. 콘텐츠 요청에 응답하여, 콘텐츠 수정기(610)는 상기 후속 정보 리소스에 포함된 제 2 콘텐츠 요소를 클라이언트 디바이스(125)에 전송할 수 있다. 제 2 비트 스트림에 대응하는 제 2 콘텐츠 요소가 제 1 비트 스트림과 다르기 때문에, 클라이언트 디바이스(125)에 의한 제 2 콘텐츠 요소의 수신은, 클라이언트 디바이스(125)상에서 실행되는 프리젠테이션 제한기(165)로 하여금 렌더링 기반 제한 정책을 적용하게 할 수 있다.
이제 도 7을 참조하면, 도 7은 예시적인 실시예에 따라, 정보 리소스의 무결성을 간섭하는 스크립트에 대한 대비책을 배치하기 위해 시스템(600)에 의해 수정된 정보 리소스의 콘텐츠 요소의 플로우 프로세스(700)를 도시한 블록도이다. 도 7의 플로우 프로세스(700)에 도시된 바와 같이, 정보 리소스(205)는 제 1 콘텐츠 요소(210A), 제 2 콘텐츠 요소(210B) 및 제 3 콘텐츠 요소(210C)를 포함할 수 있다. 제 1 콘텐츠 요소(210A), 제 2 콘텐츠 요소(210B), 및 제 3 콘텐츠 요소(210C) 각각은 이진 시퀀스 또는 비트 스트림(16 진법으로 도시됨)에 대응할 수 있다. 제 1 콘텐츠 요소(210A)는 비트 스트림(705)(예를 들어, "xA86D")에 대응할 수 있다.
도 6의 문맥에서, 프레젠테이션 제한기(165)는 제 1 콘텐츠 요소(210A)에 콘텐츠 제한 정책을 적용할 수 있으며, 따라서 클라이언트 디바이스(125)에서 정보 리소스(205) 상의 제 1 콘텐츠 요소(210A)의 렌더링을 간섭할 수 있다. 본 발명의 기술들을 이용하여, 간섭 검출기(605)는 제 1 콘텐츠 요소(210A)의 렌더링에 대한 간섭을 검출할 수 있다. 제 1 콘텐츠 요소(210A)에 대한 간섭을 검출하면, 콘텐츠 수정기(610)는 제 1 콘텐츠 요소(210A)를 수정하여 콘텐츠 요소(210A')의 다른 버전을 생성할 수 있다. 콘텐츠 요소(210A)의 수정은 비트 스트림(705)에 대한 변경을 초래할 수 있다. 제 1 콘텐츠 요소(210A)에 대응하는 비트 스트림(705)("xA86D")은 수정된 콘텐츠 요소(210A')에 대응하는 다른 비트 스트림(705')("xA863")으로 변경될 수 있다. 콘텐츠 요소(210A)에 대한 비트 스트림(705)의 변경은 클라이언트 디바이스(125) 상에서 실행되는 프리젠테이션 제한기(165)로 하여금 렌더링-기반 제한 정책(예를 들어, 이미지 프로세싱 알고리즘)을 재실행하게할 수 있다. 따라서, 이는 클라이언트 디바이스(125) 및 프리젠테이션 제한기(165)의 성능을 감소시킬 수 있다.
도 8을 참조하면, 도 8은 예시적인 실시예에 따라, 정보 리소스의 무결성을 간섭하는 스크립트들에 대한 대비책 방법(800)을 도시하는 흐름도이다. 방법(800)과 관련하여 본 명세서에서 설명된 기능들은 도 1에 도시된 시스템(100), 도 6에 도시된 시스템(600) 또는 도 10에 도시된 컴퓨팅 디바이스 또는 이들의 임의의 조합에 의해 수행되거나 달리 실행될 수 있다. 요약하면, 데이터 프로세싱 시스템은 클라이언트 디바이스로 이전에 전송된 정보 리소스 상의 제 1 콘텐츠 요소를 식별할 수 있다(블록 805). 제 1 콘텐츠 요소는 제 1 비트 스트림을 가질 수 있다. 데이터 프로세싱 시스템은 정보 리소스 상의 제 1 콘텐츠 요소의 렌더링에 대한 간섭을 결정할 수 있다(블록 810). 정보 리소스 상의 제 1 콘텐츠 요소의 렌더링에 대한 간섭을 결정하는 것에 응답하여, 데이터 프로세싱 시스템은 제 1 콘텐츠 요소에 기초하여 후속 정보 리소스에 대한 제 2 콘텐츠 요소를 생성할 수 있다(블록 815). 제 2 콘텐츠 요소는 제 1 비트 스트림과 상이한 제 2 비트 스트림을 가질 수 있다. 데이터 프로세싱 시스템은 상기 제 2 콘텐츠 요소를 포함하는 후속 정보 리소스를 클라이언트 디바이스로 전송할 수 있다(블록 820). 제 2 콘텐츠 요소의 수신은 클라이언트 디바이스 상에서 실행되는 콘텐츠 제한 스크립트로 하여금 제 1 비트 스트림과 상이한 제 2 비트 스트림에 응답하여 렌더링-기반 제한 정책을 적용하게할 수 있다.
보다 상세하게는, 데이터 프로세싱 시스템은 클라이언트 디바이스로 이전에 전송된 정보 리소스 상의 제 1 콘텐츠 요소를 식별할 수 있다(블록 805). 제 1 콘텐츠 요소는 제 1 비트 스트림을 가질 수 있다. 정보 리소스들의 무결성을 보존하기 위하여, 데이터 프로세싱 시스템은 정보 리소스 상의 제 1 콘텐츠 요소를 식별할 수 있다. 정보 리소스 및 제 1 콘텐츠 요소는 네트워크에 연결된 클라이언트 디바이스로 이전에 전송되거나 제공되었을 수 있다. 정보 리소스는 이진 시퀀스에 대응할 수 있다. 제 1 콘텐츠는 제 1 비트 스트림에 대응할 수 있다. 클라이언트 디바이스, 프록시 디바이스 또는 원격 콘텐츠 제한기 디바이스에서 실행되는 프리젠테이션 제한기(또는 임의의 다른 콘텐츠 제어 모듈)는 정보 리소스 상의 제 1 콘텐츠 요소의 프리젠테이션 또는 포함을 간섭했을 수 있다. 일부 구현예에서, 프리젠테이션 제한기는 섹션 B에 설명된 바와 같이 정보 리소스 상의 제 1 콘텐츠 요소에 콘텐츠 제한 정책을 적용할 수 있다.
일부 구현예에서, 데이터 프로세싱 시스템은 추가 분석을 위해서, 정보 리소스에 포함된 콘텐츠의 요소들의 서브세트를 식별할 수 있다. 데이터 프로세싱 시스템은 정보 리소스에 포함된 각 콘텐츠 요소에 대한 요소 유형을 식별할 수 있다. 요소 유형은 본문(body), 단락, 구분(division), 섹션, 인라인 프레임(inline frame), 이미지, 캔버스, 어플릿, 스크립트, 오디오, 비디오, 테이블, 및 리스트 등을 포함한다. 요소 유형은 HTML 태그(예: 인라인 프레임의 경우 "<iframe>")에 대응할 수 있다. 일부 구현예에서, 추가로 분석될 요소 유형들은 프리젠테이션 제한기에 의해 수정될 가능성이 가장 높은 것들을 포함할 수 있다(예를 들어, 인라인 프레임, 이미지, 어플릿 등). 데이터 프로세싱 시스템은 요소 유형과 매칭되는 콘텐츠 요소들의 서브세트를 식별할 수 있다. 이러한 방식으로, 데이터 프로세싱 시스템은 프로세싱될 콘텐츠 요소들의 개수를 프리젠테이션 제한기에 의해 수정될 가능성이 가장 높은 것들로 감소시킬 수 있으며, 따라서 데이터 프로세싱 시스템을 위한 컴퓨팅 리소스를 해방시킬 수 있다.
일부 구현예에서, 데이터 프로세싱 시스템은 정보 리소스에 포함된 제 1 콘텐츠 요소에 대응하는 비트 스트림을 식별할 수 있다. 정보 리소스는 이진 시퀀스(예: 바이트 어레이 또는 바이트 스트림)에 해당할 수 있다. 정보 리소스에 포함된 각 콘텐츠 요소는 이진 시퀀스의 일부에 대응할 수 있다. 일부 구현예에서, 데이터 프로세싱 시스템은 정보 리소스에 대응하는 이진 시퀀스에 액세스할 수 있다. 일부 구현예에서, 데이터 프로세싱 시스템은 콘텐츠 요소들 중 하나에 대응하는 이진 시퀀스의 부분에 액세스할 수 있다. 일부 구현예에서, 데이터 프로세싱 시스템은 추가로 분석될 요소 유형과 매칭하는 것으로 식별된 콘텐츠 요소들의 서브세트에 대응하는 이진 시퀀스의 부분에 액세스할 수 있다. 일부 구현예에서, 데이터 프로세싱 시스템은 정보 리소스 및 콘텐츠 요소에 대한 데이터베이스 및 대응하는 이진 시퀀스에 액세스할 수 있다.
데이터 프로세싱 시스템은 정보 리소스 상의 제 1 콘텐츠의 요소의 렌더링에 대한 간섭을 결정할 수 있다(블록 810). 정보 리소스 상에 식별된 콘텐츠 요소로, 데이터 프로세싱 시스템은 정보 리소스 상의 제 1 콘텐츠 요소의 렌더링에 대한 간섭을 결정할 수 있다. 제 1 콘텐츠 요소의 렌더링에 대한 간섭은 클라이언트 디바이스에서의 콘텐츠 요소의 디스플레이 또는 프리젠테이션을 임의의 방식으로 디스에이블, 금지 또는 변경하는 것을 포함할 수 있다. 간섭은 클라이언트 디바이스, 프록시 디바이스 또는 원격 콘텐츠 제한 디바이스(150) 상에서 실행되는 프리젠테이션 제한기로 인한 것일 수 있다. 데이터 프로세싱 시스템은 프리젠테이션 제한기에 의한 이러한 간섭의 발생을 결정하기 위해 임의의 개수의 기술들 또는 이들의 조합을 이용할 수 있다.
콘텐츠 요소의 전송 시간 및 임의의 확인 응답들의 시간을 이용하여, 데이터 프로세싱 시스템은, 정보 리소스 상의 콘텐츠 요소의 렌더링에 대한 간섭을 결정할 수 있다. 각각의 정보 리소스는 정보 리소스 내에 콘텐츠의 삽입을 요청하기 위한 요청 스크립트를 포함할 수 있다. 정보 리소스를 수신하는 것에 응답하여, 요청 스크립트는 클라이언트 디바이스로 하여금 콘텐츠에 대한 요청을 데이터 프로세싱 시스템으로 전송하게 할 수 있다. 각 콘텐츠 요소에는 확인 응답 스크립트가 포함될 수 있다. 콘텐츠 요소를 수신하면, 확인 응답 스크립트는 어플리케이션(160)을 실행하는 클라이언트 디바이스로 하여금 확인 응답(예를 들어, 핑백)을 데이터 프로세싱 시스템 또는 콘텐츠 제공자 디바이스로 전송 또는 반송(send back)하게 할 수 있다. 콘텐츠 요소의 전송 시간 및 콘텐츠 요청 또는 임의의 확인 응답들의 수신 시간은 데이터베이스에 저장될 수 있다.
클라이언트 디바이스로의 콘텐츠 요소의 전송 시간, 클라이언트 디바이스로부터의 콘텐츠 요소와 관련된 콘텐츠 요청의 수신 시간, 및 클라이언트 디바이스로부터의 임의의 확인 응답들의 수신 시간에서의 임의의 불규칙성(irregularity)은, 클라이언트 디바이스에서의 프리젠테이션 제한기의 실행을 나타낼 수 있다. 클라이언트 디바이스에서 프리젠테이션 제한기의 기능들을 수행하는 경우, 프리젠테이션 제한기가 없는 경우보다 확인 응답을 수신하는데 더 긴 시간이 소요될 수 있다. 데이터 프로세싱 시스템은, 콘텐츠 요소의 렌더링이 간섭되었는지 여부를 결정함에 있어서, 콘텐츠 요소와 정보 리소스의 전송 및 콘텐츠 요소와 관련된 임의의 확인 응답들의 수신에 관한 다양한 시간들을 비교할 수 있다. 이러한 비교는 실시간으로 또는 지정된 시간 간격으로 수행될 수 있다.
일부 구현예에서, 데이터 프로세싱 시스템은, 콘텐츠 요청의 수신이 없음(lack) 또는 클라이언트 디바이스로부터의 제 1 콘텐츠 요소에 대한 확인 응답의 수신이 없음으로부터, 정보 리소스 상의 제 1 콘텐츠 요소의 렌더링에 대한 간섭의 발생을 결정할 수 있다. 콘텐츠 요청의 수신이 없다는 것 또는 클라이언트 디바이스로부터의 제 1 콘텐츠 요소에 대한 확인 응답의 수신이 없다는 것은, 프리젠테이션 제한기가 제 1 콘텐츠 요소 또는 정보 리소스의 행동을 변경했음을 나타낼 수 있다. 이를 위해, 각각의 콘텐츠 요소에 대하여, 데이터 프로세싱 시스템은 데이터베이스에 액세스하여, 정보 리소스가 클라이언트 디바이스로 전송 또는 제공되었는지의 여부를 결정할 수 있다. 데이터 프로세싱 시스템은 제 1 콘텐츠 요소와 관련된 콘텐츠 요청이 클라이언트 디바이스로부터 수신되었는지의 여부를 결정할 수 있다. 콘텐츠 요청이 클라이언트 디바이스로부터 수신되었다면, 데이터 프로세싱 시스템은 다른 팩터들 중에서도 특히, 상기 요청의 수신 시간을 분석하여, 제 1 콘텐츠 요소의 간섭을 결정할 수 있다. 콘텐츠 요청이 클라이언트 디바이스로부터 수신되지 않았다면, 데이터 프로세싱 시스템은 클라이언트 디바이스 상의 정보 리소스 상의 제 1 콘텐츠 요소의 렌더링에 대한 간섭의 발생을 결정할 수 있다. 각각의 콘텐츠 요소에 대하여, 데이터 프로세싱 시스템은 또한 데이터베이스에 액세스하여, 제 1 콘텐츠 요소와 관련된 확인 응답이 클라이언트 디바이스로부터 수신되었는지 여부를 결정할 수 있다. 확인 응답이 클라이언트 디바이스로부터 수신되었다면, 데이터 프로세싱 시스템은 다른 팩터들 중에서도 특히, 확인 응답 시간을 분석하여, 제 1 콘텐츠 요소의 간섭을 결정할 수 있다. 확인 응답이 클라이언트 디바이스로부터 수신되지 않았다면, 데이터 프로세싱 시스템은 클라이언트 디바이스 상의 정보 리소스 상의 제 1 콘텐츠 요소의 렌더링에 대한 간섭의 발생을 결정할 수 있다.
일부 구현예에서, 데이터 프로세싱 시스템은 클라이언트 디바이스로 제 1 콘텐츠 요소를 전송한 시간과 클라이언트 디바이스로부터 제 1 콘텐츠 요소에 대한 확인 응답을 수신한 시간 사이에 경과된 시간을 비교하여 간섭의 발생을 결정할 수 있다. 데이터 프로세싱 시스템은 전송 시간 및 확인 응답의 수신 시간에 대하여 데이터베이스에 액세스한다. 데이터 프로세싱 시스템은 클라이언트 디바이스로 제 1 콘텐츠 요소를 전송한 시간을 식별할 수 있다. 제 1 콘텐츠 요소의 전송 시간은 데이터 프로세싱 시스템 또는 콘텐츠 제공자 디바이스가 클라이언트 디바이스로 제 1 콘텐츠 요소를 전송하거나 그렇지 않으면 제 1 콘텐츠 요소를 제공한 시간에 대응할 수 있다. 데이터 프로세싱 시스템은 확인 응답의 수신 시간을 식별할 수 있다. 확인 응답의 수신 시간은 제 1 콘텐츠 요소를 프로세싱하는 클라이언트 디바이스가 데이터 프로세싱 시스템 또는 콘텐츠 제공자 디바이스로 확인 응답을 다시 전송한 시간에 대응할 수 있다. 데이터 프로세싱 시스템은 제 1 콘텐츠 요소의 전송 시간과 확인 응답의 수신 시간 사이에 경과된 시간을 계산할 수 있다. 데이터 프로세싱 시스템은 계산된 경과 시간을 미리결정된 임계값(예를 들어, 마이크로 초 내지 밀리 초 범위)과 비교할 수 있다. 계산된 경과 시간이 미리 결정된 임계값보다 크거나 같다라고 데이터 프로세싱 시스템이 결정하면, 데이터 프로세싱 시스템은 정보 리소스 상의 제 1 콘텐츠 요소의 렌더링에 대한 간섭이 발생했다라고 결정할 수 있다. 계산된 경과 시간이 미리 결정된 임계값보다 작다라고 데이터 프로세싱 시스템이 결정하면, 데이터 프로세싱 시스템은 정보 리소스 상의 제 1 콘텐츠 요소의 렌더링에 대한 간섭이 없었다라고 결정할 수 있다.
일부 구현예들에서, 데이터 프로세싱 시스템은 다수의 클라이언트 디바이스들로 제 1 콘텐츠 요소를 전송한 시간들과 클라이언트 디바이스들로부터 확인 응답들을 수신한 시간들 사이의 평균 경과 시간을 비교하여, 간섭의 발생을 결정할 수 있다. 데이터 프로세싱 시스템은 전송 시간들 및 각각의 클라이언트 디바이스에 대한 확인 응답의 수신 시간들에 대하여 데이터베이스에 액세스할 수 있다. 데이터 프로세싱 시스템은 제 1 콘텐츠 요소의 전송 시간들과 복수의 클라이언트 디바이스들에 대한 확인 응답들의 수신 시간들 사이의 평균 경과 시간을 계산할 수 있다. 데이터 프로세싱 시스템은 계산된 평균 경과 시간을 미리결정된 임계값(예를 들어, 마이크로 초 내지 밀리 초 범위)과 비교할 수 있다. 계산된 평균 경과 시간이 미리 결정된 임계값보다 크거나 같다라고 데이터 프로세싱 시스템이 결정하면, 데이터 프로세싱 시스템은 다수의 클라이언트 디바이스들에 대한 정보 리소스 상의 제 1 콘텐츠 요소의 렌더링에 간섭이 발생했다라고 결정할 수 있다. 계산된 평균 경과 시간이 미리 결정된 임계값보다 작다라고 데이터 프로세싱 시스템이 결정하면, 데이터 프로세싱 시스템은 다수의 클라이언트 디바이스들에 대한 정보 리소스 상의 제 1 콘텐츠 요소의 렌더링에 대해 간섭이 없다(lack)라고 결정할 수 있다.
일부 구현예에서, 데이터 프로세싱 시스템은 제 1 콘텐츠 요소의 제 1 전송 및 제 2 전송 사이의 제 1 경과 시간과 제 1 콘텐츠 요소에 대한 확인 응답의 제 1수신 및 제 2 수신 사이의 제 2 경과 시간을 비교할 수 있다. 제 1 경과 시간과 제 2 경과 시간 간의 차이값은, 정보 리소스 상에 제 1 콘텐츠 요소를 렌더링 또는 삽입하는 것을 프리젠테이션 제한기가 방해하고 있을 수도 있음을 나타낼 수 있다. 프리젠테이션 제한기는 제 1 콘텐츠 요소의 제 1 수신시에 콘텐츠 제한 정책을 콘텐츠 요소에 적용할지 여부를 결정하기 위해 제 1 콘텐츠 요소를 분석하도록 렌더링-기반 제한 정책(예를 들어, 이미지 프로세싱 기술)을 이용했을 수 있다. 후속하여, 프리젠테이션 제한기는 제 1 콘텐츠 요소가 제한된 콘텐츠 데이터베이스 상의 요소 식별자에 대응하는지 여부를 식별하기 위하여, 해싱 함수를 이용했을 수 있다. 이미지 프로세싱 알고리즘의 성능은 해시 값들의 계산보다 더 많은 시간을 소비할 수 있다.
제 1 콘텐츠 요소의 전송과 확인 응답의 수신 시간 사이의 간격에서의 차이값들을 식별하기 위해, 데이터 프로세싱 시스템은 클라이언트 디바이스로의 제 1 콘텐츠 요소의 제 1 전송 시간을 식별할 수 있다. 데이터 프로세싱 시스템은 클라이언트 디바이스로부터의 제 1 콘텐츠 요소에 대한 제 1 확인 응답의 제 1 수신 시간을 식별할 수 있다. 데이터 프로세싱 시스템은 클라이언트 디바이스로의 제 1 콘텐츠 요소의 제 1 전송 시간과 콘텐츠 요소에 대한 제 1 확인 응답의 제 1 수신 시간 사이의 제 1 경과 시간을 계산할 수 있다. 데이터 프로세싱 시스템은 클라이언트 디바이스로의 제 1 콘텐츠 요소의 제 2 전송 시간을 식별할 수 있다. 데이터 프로세싱 시스템은 클라이언트 디바이스로부터 제 1 콘텐츠 요소에 대한 제 2 확인 응답의 제 2 수신 시간을 식별할 수 있다. 데이터 프로세싱 시스템은 클라이언트 디바이스로의 제 1 콘텐츠 요소의 제 2 전송 시간과 클라이언트 디바이스로부터의 콘텐츠 요소에 대한 제 2 확인 응답의 제 2 수신 시간 사이의 제 2 경과 시간을 계산할 수 있다. 일부 실시예에서, 제 1 경과 시간 및 제 2 경과 시간은 제 1 콘텐츠 요소의 전송 시간들 및 복수의 클라이언트 디바이스들에 대한 확인 응답들의 수신 시간을 이용하여 계산될 수 있다. 데이터 프로세싱 시스템은 제 1 경과 시간과 제 2 경과 시간 사이의 차이를 계산할 수 있다. 데이터 프로세싱 시스템은 상기 차이를 소정의 임계값과 비교할 수 있다. 만일, 데이터 프로세싱 시스템이 상기 차이가 소정의 임계값보다 크거나 같은 것으로 결정하면, 데이터 프로세싱 시스템은 정보 리소스 상의 제 1 콘텐츠 요소의 렌더링에 간섭이 발생했음을 결정할 수 있다. 만일, 데이터 프로세싱 시스템이 상기 차이가 소정의 임계값보다 작은 것으로 결정하면, 데이터 프로세싱 시스템은 정보 리소스 상의 제 1 콘텐츠 요소의 렌더링에 대한 간섭이 없다(lack)라고 결정할 수 있다.
일부 구현예에서, 데이터 프로세싱 시스템은 제 1 콘텐츠 요소에 대한 요청의 예측된 수신 시간과 제 1 콘텐츠 요소에 대한 요청의 실제 수신 시간을 비교하여, 제 1 콘텐츠 요소의 렌더링에 대한 간섭을 결정할 수 있다. 클라이언트 디바이스(125) 상에서 실행되는 프리젠테이션 제한기는 콘텐츠 요소 또는 정보 리소스의 행동을 변경했을 수 있다. 결과적으로, 클라이언트 디바이스는 프리젠테이션 제한기가 없는 경우보다 나중의 시간에서 정보 리소스를 수신한 후에 제 1 콘텐츠 요소에 대한 요청을 전송하게 될 수 있다. 행동의 변경을 설명하기 위해, 데이터 프로세싱 시스템은 클라이언트 디바이스로부터 제 1 콘텐츠 요소를 정보 리소스에 삽입하도록 콘텐츠 요청에 대한 실제 수신 시간을 식별하기 위해 데이터베이스에 액세스할 수 있다. 데이터 프로세싱 시스템은 또한, 클라이언트 디바이스로의 정보 리소스의 전송과 클라이언트 디바이스로부터의 콘텐츠 요청의 수신 사이의 실제 경과 시간을 식별할 수 있다. 데이터 프로세싱 시스템은 클라이언트 디바이스로부터의 콘텐츠 요소와 관련된 콘텐츠에 대한 요청의 예측된 수신 시간을 임의의 개수의 팩터를 이용하여 결정 또는 계산할 수 있다. 이러한 팩터들은 특히 네트워크의 네트워크 대역폭, 네트워크에 대한 네트워크 대기 시간, 클라이언트 디바이스에 대한 디바이스 유형 및 클라이언트 디바이스의 디바이스 설정 파라미터들을 포함할 수 있다. 또한, 데이터 프로세싱 시스템은 클라이언트 디바이스로 정보 리소스를 전송하는 것과 클라이언트 디바이스로부터 콘텐츠 요청을 수신하는 것 사이의 예상 경과 시간을 결정하거나 계산할 수 있다. 데이터 프로세싱 시스템은 예상 시간과 콘텐츠 요청의 실제 수신 시간을 비교할 수 있다. 일부 구현예에서, 데이터 프로세싱 시스템은 예상 시간과 콘텐츠 요청의 실제 수신 시간 간의 차이를 계산할 수 있다. 데이터 프로세싱 시스템이 상기 차이가 소정의 임계값보다 크거나 같은 것으로 결정하면, 데이터 프로세싱 시스템은 정보 리소스 상의 제 1 콘텐츠 요소의 렌더링에 간섭이 발생했음을 결정할 수 있다. 데이터 프로세싱 시스템이 상기 차이가 소정의 임계값보다 작은 것으로 결정하면, 데이터 프로세싱 시스템은 정보 리소스 상의 1 콘텐츠 요소의 렌더링에 대한 간섭이 없다라고 결정할 수 있다.
일부 구현예에서, 데이터 프로세싱 시스템은 제 1 콘텐츠 요소에 대한 확인 응답의 실제 수신 시간과 제 1 콘텐츠 요소에 대한 확인 응답의 예측된 수신 시간을 비교하여, 제 1 콘텐츠 요소의 렌더링에 대한 간섭을 결정할 수 있다. 클라이언트 디바이스 상에서 실행되는 프리젠테이션 제한기는 콘텐츠 요소 또는 정보 리소스의 행동을 변경했을 수도 있다. 결과적으로, 클라이언트 디바이스는 프리젠테이션 제한기가 없는 경우보다 더 늦은 시간에서 콘텐츠 요소를 수신한 후에 제 1 콘텐츠 요소에 대한 확인 응답을 전송하게 될 수 있다. 행동의 변경을 설명하기 위해, 데이터 프로세싱 시스템은 데이터베이스에 액세스하여, 클라이언트 디바이스로부터의 제 1 콘텐츠 요소에 대한 확인 응답의 실제 수신 시간을 식별할 수 있다. 데이터 프로세싱 시스템은 또한, 클라이언트 디바이스로의 정보 리소스의 전송과 클라이언트 디바이스로부터의 확인 응답의 수신 사이의 실제 경과 시간을 식별할 수 있다. 데이터 프로세싱 시스템은 클라이언트 디바이스로부터의 확인 응답의 예측된 수신 시간을 임의의 개수의 팩터를 이용하여 결정 또는 계산할 수 있다. 이러한 팩터들은 특히 네트워크의 네트워크 대역폭, 네트워크에 대한 네트워크 대기 시간, 클라이언트 디바이스에 대한 디바이스 유형 및 클라이언트 디바이스의 디바이스 설정 파라미터들을 포함할 수 있다. 또한, 데이터 프로세싱 시스템은 클라이언트 디바이스로 정보 리소스를 전송하는 것과 클라이언트 디바이스로부터 확인 응답을 수신하는 것 사이의 예상 경과 시간을 결정하거나 계산할 수 있다. 데이터 프로세싱 시스템은 상기 예상 시간과, 제 1 콘텐츠 요소에 대한 확인 응답의 실제 시간을 비교할 수 있다. 일부 구현예에서, 데이터 프로세싱 시스템은 상기 예상 시간과 제 1 콘텐츠 요소에 대한 확인 응답의 실제 수신 시간 사이의 차이값을 계산할 수 있다. 데이터 프로세싱 시스템이 상기 차이값이 소정의 임계값보다 크거나 같은 것으로 결정하면, 데이터 프로세싱 시스템은 정보 리소스 상의 제 1 콘텐츠 요소의 렌더링에 간섭이 발생했음을 결정할 수 있다. 데이터 프로세싱 시스템이 상기 차이값이 소정의 임계값보다 작은 것으로 결정하면, 데이터 프로세싱 시스템은 정보 리소스 상의 1 콘텐츠 요소의 렌더링에 대한 간섭이 없다라고 결정할 수 있다.
일부 구현예에서, 데이터 프로세싱 시스템은 클라이언트 디바이스들의 서브세트들로부터 제 1 콘텐츠 요소와 관련된 행동에서의 차이점들을 식별하여, 정보 리소스 상의 제 1 콘텐츠 요소에 대한 간섭을 결정할 수 있다. 클라이언트 디바이스들의 제 1 서브세트는 프리젠테이션 제한기를 실행할 수 있거나, 또는 정보 리소스 및 정보 리소스 상의 콘텐츠 요소를 프로세싱함에 있어서 프리젠테이션 제한기에 의해 영향을 받을 수 있다. 다른 한편으로, 클라이언트 디바이스들의 제 2 서브세트는 프리젠테이션 제한기를 실행하지 않을 수 있다. 이와 같이, 클라이언트 디바이스들의 제 1 서브세트는, 콘텐츠 요소를 프로세싱하고 분석하는데 있어서, 클라이언트 디바이스들의 제 2 서브세트와는 상이한 시간량을 소비할 수 있다. 행동에서의 차이들을 설명하기 위해, 각각의 클라이언트 디바이스에 대하여, 데이터 프로세싱 시스템은 제 1 콘텐츠 요소의 전송 시간, 콘텐츠 요청의 수신 시간 및 확인 응답의 수신 시간을 식별할 수 있다. 식별된 값을 파라미터로서 이용하여, 데이터 프로세싱 시스템은 클라이언트 디바이스들의 서브세트들을 식별하기 위해, 클러스터링 알고리즘(예를 들어, k-최근접 알고리즘(k-nearest neighbor algorithm), 기대-최대화(expectation-maximization), 기타 등등)을 적용할 수 있다. 각각의 서브세트에 대하여, 데이터 프로세싱 시스템은 제 1 콘텐츠 요소의 전송 시간, 콘텐츠 요청의 수신 시간, 및 확인 응답의 수신 시간에 대한 평균값(mean value)을 계산할 수 있다. 데이터 프로세싱 시스템은 클러스터링 알고리즘을 이용하여 식별된 클라이언트 디바이스들의 서브세트들에 대하여, 평균값의 차이를 계산할 수 있다. 데이터 프로세싱 시스템은 상기 차이를 미리 결정된 마진과 비교할 수 있다. 데이터 프로세싱 시스템이 상기 차이가 미리 결정된 마진보다 크거나 같은 것으로 결정하면, 데이터 프로세싱 시스템은 정보 리소스 상의 제 1 콘텐츠 요소의 렌더링에 대한 간섭이 발생했다라고 결정할 수 있다. 데이터 프로세싱 시스템이 상기 차이가 미리 결정된 마진보다 작다고 결정하면, 데이터 프로세싱 시스템은 정보 리소스 상의 제 1 콘텐츠 요소의 렌더링에 대한 간섭이 없다라고 결정할 수 있다.
정보 리소스 상의 제 1 콘텐츠 요소의 렌더링에 대한 간섭을 결정함에 응답하여, 데이터 프로세싱 시스템은 제 1 콘텐츠 요소에 기초하여 후속 정보 리소스에 대한 제 2 콘텐츠 요소를 생성할 수 있다(블록 815). 제 2 콘텐츠 요소는 제 1 비트 스트림과 상이한 제 2 비트 스트림을 가질 수 있다. 정보 리소스 상의 제 1 콘텐츠 요소의 렌더링에 대한 간섭을 검출하는 것에 응답하여, 데이터 프로세싱 시스템은 제 1 콘텐츠 요소에 기초하여 후속 정보 리소스에 대한 제 2 콘텐츠 요소를 생성할 수 있다. 제 2 콘텐츠 요소는 제 1 비트 스트림과 상이한 제 2 비트 스트림에 대응할 수 있다. 프리젠테이션 제한기가 비트 스트림들의 해시 값을 계산하여 각 콘텐츠 요소에 대한 요소 식별자를 생성하기 때문에, 제 1 비트 스트림과는 다른 제 2 비트 스트림은 프리젠테이션 제한기로 하여금 제 2 콘텐츠 요소를 분석하도록 렌더링 기반 제한 정책(예컨대, 이미지 프로세싱 알고리즘을 이용하여)을 재실행하게 할 수 있다. 상이한 비트 스트림들을 갖는 다양한 콘텐츠 요소들에 콘텐츠 제한 정책을 적용할지의 여부를 결정하기 위해 렌더링 기반 제한 정책을 반복적으로 적용하는 것은, 프리젠테이션 제한기를 실행하는 디바이스의 성능을 저하시킬 수 있다. 이를 위해, 데이터 프로세싱 시스템은 콘텐츠 수정 정책에 따른 임의 개수의 기술들 및 이들의 조합을 이용하여, 상기 제 1 비트 스트림과 다른 제 2 비트 스트림을 구비한 제 2 콘텐츠 요소를 생성하도록 제 1 콘텐츠 요소를 수정할 수 있다.
데이터 프로세싱 시스템에 의해 생성된 제 2 콘텐츠 요소는 제 1 콘텐츠 요소와 시각적으로는 비유사하게 보일 수 있지만 동일한 정보(예컨대, 다른 배경색을 갖는 동일한 텍스트 또는 다른 테두리의 폭을 갖는 동일한 이미지)를 전달하며, 이는 제 1 비트 스트림으로부터 제 2 비트 스트림으로의 변경을 야기할 수 있다. 일부 구현예에서, 데이터 프로세싱 시스템은 제 1 콘텐츠 요소의 시각적 특성들(예를 들어 폰트, 폰트 크기, 배경색, 경계 폭, 치수, 정보 리소스상의 위치 등)을 수정하여 제 2 콘텐츠 요소를 생성할 수 있다. 시각적 특성의 수정은 제 1 비트 스트림으로부터 제 2 비트 스트림으로의 변경을 초래할 수 있다. 데이터 프로세싱 시스템은 제 1 콘텐츠 요소의 시각적 특성을 데이터베이스로부터 식별할 수 있다. 데이터 프로세싱 시스템은 콘텐츠 수정 정책에 따라 제 1 콘텐츠 요소의 시각적 특성을 디폴트 값과 다른 값으로 설정할 수 있다. 콘텐츠 수정 정책은 시각적 특성들의 어떤 값들이 디폴트 값에 근거하여 설정되는지를 지정할 수 있다(예컨대, 배경색을 밝은 녹색으로부터 밝은 파란색으로 변경함).
데이터 프로세싱 시스템에 의해 생성된 제 2 콘텐츠 요소는 제 1 콘텐츠 요소와 시각적으로는 유사하게 보일 수 있으며, 다른 기능 행동(function behavior)을 갖는 동일한 정보를 전달하여, 제 1 비트 스트림으로부터 제 2 비트 스트림으로의 변경을 야기할 수 있다. 일부 실시예에서, 데이터 프로세싱 시스템은 제 1 콘텐츠 요소의 파일 경로명(file pathname)을 수정하여 제 2 콘텐츠 요소를 생성할 수 있다. 파일 경로명은 제 1 콘텐츠 요소의 소스 어드레스에 대응할 수 있다. 주소와 일치할 수 있다. 파일 경로 이름은 프로토콜(예: http, https, ftp 등), 호스트명(예: www.example.com) 및 파일명(예: /samplecontent.html)을 포함할 수 있다. 데이터 프로세싱 시스템은 파일 경로명으로부터 프로토콜, 호스트명 및 파일명을 식별할 수 있다. 일부 구현예에서, 데이터 프로세싱 시스템은 호스트명 및 파일명 중 하나를 수정하여 제 2 콘텐츠 요소를 생성할 수 있다. 데이터 프로세싱 시스템은 제 2 콘텐츠 요소를 생성하기 위해 수정된 파일 경로명을 갖는 제 1 콘텐츠 요소를 재생 또는 재생성한다. 일부 구현예에서, 데이터 프로세싱 시스템은 제 1 콘텐츠 요소의 리다이렉트 링크를 수정하여 제 2 콘텐츠 요소를 생성할 수 있다. 리다이렉트 링크는 제 1 콘텐츠 요소에 포함된 소스 어드레스를 포함할 수 있고, 클라이언트 디바이스 상에서 동작하는 어플리케이션이 소스 어드레스에 대응하는 콘텐츠를 검색하게하도록 구성될 수 있다. 데이터 프로세싱 시스템은 제 1 콘텐츠 요소의 리다이렉트 링크를 식별할 수 있다. 데이터 프로세싱 시스템은 제 2 콘텐츠 요소를 생성하기 위해 수정된 리다이렉트 링크로 제 1 콘텐츠 요소를 재생 또는 재생성할 수 있다.
데이터 프로세싱 시스템에 의해 생성된 제 2 콘텐츠 요소는 제 1 콘텐츠 요소의 코드 또는 마크업과 상이한 코드 또는 마크업에 해당할 수 있으며, 이는 제 1 비트 스트림으로부터 제 2 비트 스트림으로의 변경을 초래한다. 데이터 프로세싱 시스템은 제 1 콘텐츠 요소 또는 제 1 콘텐츠 요소와 연관된 정보 리소스에 대응하는 코드 세그먼트를 수정하여 제 2 콘텐츠 요소를 생성할 수 있다. 코드 세그먼트는 제 1 콘텐츠 요소와 연관된 하나 이상의 스크립트를 포함할 수 있다. 데이터 프로세싱 시스템은 제 1 콘텐츠 요소의 수정들로 코드 세그먼트를 재생 또는 재생성하여 제 2 콘텐츠 요소를 생성할 수 있다.
일부 구현예에서, 데이터 프로세싱 시스템은 제 1 콘텐츠 요소의 코드 세그먼트로부터 확인 응답 코드를 식별할 수 있다. 데이터 프로세싱 시스템은 제 1 콘텐츠 요소의 코드 세그먼트로부터 확인 응답 코드를 수정하여, 제 2 콘텐츠 요소를 생성할 수 있다. 클라이언트 디바이스에 의해 수신되고 클라이언트 디바이스 상에서 실행되는 어플리케이션(160)에 의해 프로세싱되면, 확인 응답 코드는 클라이언트 디바이스로 하여금 확인 응답(예를 들어, 핑백)을 데이터 프로세싱 시스템 또는 콘텐츠 제공자 디바이스로 전송하게 할 수 있다.
일부 구현예에서, 데이터 프로세싱 시스템은 정보 리소스의 코드 세그먼트로부터의 콘텐츠 요청 코드를 식별할 수 있다. 데이터 프로세싱 시스템은 정보 리소스의 코드 세그먼트로부터 콘텐츠 요청 코드를 수정하여 제 2 콘텐츠 요소를 생성할 수 있다. 클라이언트 디바이스에 의해 일단 수신되고 클라이언트 디바이스 상에서 실행되는 어플리케이션(160)에 의해 프로세싱되면, 콘텐츠 요청 코드는 클라이언트 디바이스로 하여금 정보 리소스에 콘텐츠 요소를 삽입하도록 콘텐츠 요청을 데이터 프로세싱 시스템 또는 콘텐츠 제공자 디바이스로 전송하게 할 수 있다.
일부 구현예에서, 데이터 프로세싱 시스템은 제 1 콘텐츠 요소의 코드 세그먼트에 부속 코드(appendage code)를 추가, 삽입, 첨부하여 제 2 콘텐츠 요소를 생성할 수 있다. 부속 코드는 제 1 콘텐츠 요소에 대해 제 2 콘텐츠 요소의 행동을 변경하거나 바꾸지 않는 비기능적 코드(nonfunctional code)일 수 있다. 부속 코드는 제 1 비트 스트림으로부터 제 2 비트 스트림으로의 변경을 유발할 수 있다.
실제로, 비트 스트림이 변경되었는지의 여부를 확인하기 위해, 데이터 프로세싱 시스템은 제 2 콘텐츠 요소에 대한 제 2 비트 스트림이 제 1 콘텐츠 요소에 대한 제 1 비트 스트림과 다른지를 판단할 수 있다. 데이터 프로세싱 시스템은 제 1 콘텐츠 요소에 대응하는 제 1 비트 스트림을 식별할 수 있다. 데이터 프로세싱 시스템은 제 2 콘텐츠 요소에 대응하는 제 2 비트 스트림을 식별할 수 있다. 데이터 프로세싱 시스템은 제 1 비트 스트림과 제 2 비트 스트림 사이의 상이한 비트들의 개수를 식별하거나 결정할 수 있다. 데이터 프로세싱 시스템은 상이한 비트들의 개수를 임계 개수와 비교할 수 있다. 만일, 데이터 프로세싱 시스템이 상이한 비트들의 개수가 임계 개수보다 크거나 같다고 결정하면, 데이터 프로세싱 시스템은 클라이언트 디바이스로의 제 2 콘텐츠 요소의 전송 또는 제공을 허용할 수 있다. 만일, 데이터 프로세싱 시스템이 상이한 비트들의 개수가 임계 개수보다 작다라고 결정하면, 데이터 프로세싱 시스템은 클라이언트 디바이스로의 제 2 콘텐츠 요소의 전송 또는 제공을 제한할 수 있다. 데이터 프로세싱 시스템은 또한, 제 1 콘텐츠 요소의 변경을 재실행(re-run)하여 다른 콘텐츠 요소를 생성할 수 있다.
일부 구현예에서, 데이터 프로세싱 시스템은 제 1 비트 스트림과 제 2 비트 스트림 사이의 상이한 비트들의 분포를 식별할 수 있다. 데이터 프로세싱 시스템은 상이한 비트들의 분포를 미리 결정된 임계값과 비교할 수 있다. 데이터 프로세싱 시스템이 상이한 비트들의 분포가 미리 결정된 임계값보다 크거나 같은 것으로 결정하면, 데이터 프로세싱 시스템은 클라이언트 디바이스로의 제 2 콘텐츠 요소의 전송 또는 제공을 허용할 수 있다. 데이터 프로세싱 시스템이 상이한 비트의 분포가 미리 결정된 임계값보다 작다라고 결정하면, 데이터 프로세싱 시스템은 제 2 콘텐츠 요소의 클라이언트 디바이스로의 제공 또는 전송을 제한할 수 있다. 데이터 프로세싱 시스템은 또한, 제 1 콘텐츠 요소의 변경을 재실행(re-run)하여 다른 콘텐츠 요소를 생성할 수 있다.
데이터 프로세싱 시스템은 제 2 콘텐츠 요소를 포함하는 후속 정보 리소스를 클라이언트 디바이스로 전송할 수 있다(블록 820). 제 2 콘텐츠 요소의 수신은 클라이언트 디바이스 상에서 실행되는 콘텐츠 제한 스크립트로 하여금 제 1 비트 스트림과 상이한 제 2 비트 스트림에 응답하여 렌더링-기반 제한 정책을 적용하게할 수 있다. 생성된 제 2 콘텐츠 요소로, 데이터 프로세싱 시스템은 제 2 콘텐츠 요소를 포함하는 후속 정보 리소스를 클라이언트 디바이스로 전송할 수 있다. 일부 구현예에서, 데이터 프로세싱 시스템은 클라이언트 디바이스로부터 정보 리소스에 대한 요청을 수신할 수 있다. 요청의 수신에 응답하여, 데이터 프로세싱 시스템은 후속 정보 리소스를 전송할 수 있다. 일부 구현예에서, 데이터 프로세싱 시스템은 클라이언트 디바이스로부터 정보 리소스에 삽입하기 위한 콘텐츠 요청을 수신할 수 있다. 콘텐츠 요청에 응답하여, 데이터 프로세싱 시스템은 후속 정보 리소스에 포함된 제 2 콘텐츠 요소를 클라이언트 디바이스로 전송할 수 있다. 제 1 비트 스트림과 상이한 제 2 비트 스트림에 대응하는 제 2 콘텐츠 요소의 경우, 클라이언트 디바이스에 의한 제 2 콘텐츠 요소의 수신은 클라이언트 디바이스에서 실행되는 프리젠테이션 제한기로 하여금 렌더링 기반 제한 정책을 적용하게 할 수 있다.
이제 도 9를 참조하면, 도 9는 예시적인 실시예에 따라 정보 리소스의 무결성을 간섭하는 스크립트에 대한 대책의 방법(900)을 도시하는 흐름도이다. 방법(900)과 관련하여 본 명세서에 설명된 기능은 도 1에 도시된 시스템(100), 도 6에 도시된 시스템(600) 또는 도 10에 도시된 컴퓨팅 디바이스 또는 이들의 임의의 조합에 의해 수행되거나 실행될 수 있다. 개관으로서, 데이터 프로세싱 시스템은 정보 리소스 상의 콘텐츠 요소를 식별할 수 있다(블록 905). 데이터 프로세싱 시스템은 콘텐츠에 대한 요청이 수신되었는지 여부를 결정할 수 있다(블록 910). 콘텐츠에 대한 요청이 수신되었으면, 데이터 프로세싱 시스템은 콘텐츠 요소에 대한 확인 응답이 수신되었는지를 결정할 수 있다(블록 915). 확인 응답이 수신되었으면, 데이터 프로세싱 시스템은 클라이언트 디바이스로의 콘텐츠 요소의 전송 시간을 식별할 수 있다(블록 920). 데이터 프로세싱 시스템은 클라이언트 디바이스로부터 콘텐츠 요소에 대한 제 1 확인 응답의 시간을 식별할 수 있다(블록 925). 데이터 프로세싱 시스템은 제 1 확인 응답의 시간과 전송 시간 간의 차이가 임계값보다 큰지의 여부를 결정할 수 있다(블록 930). 제 1 확인 응답의 시간과 전송 시간 간의 차이가 임계값보다 작은 경우, 데이터 프로세싱 시스템은 클라이언트 디바이스로부터 콘텐츠 요소에 대한 제 2 확인 응답의 시간을 식별할 수 있다.(블록 935). 데이터 프로세싱 시스템은 제 1 확인 응답 시간과 전송 시간 사이의 경과 시간이 제 2 응답 시간과 전송 시간 사이의 경과 시간보다 소정의 마진만큼 큰지를 결정할 수 있다(블록 940). 제 1 확인 응답 시간과 전송 시간 사이의 경과 시간이 제 2 확인 응답 시간과 전송 시간 사이의 경과 시간 보다 소정의 마진만큼 크지 않은 경우, 데이터 프로세싱 시스템은 간섭이 없다라고 결정할 수 있다(블록 945).
이와 달리, 콘텐츠에 대한 요청이 수신되지 않은 경우, 콘텐츠 요소에 대한 확인 응답이 수신되지 않은 경우, 제 1 확인 응답 시간과 전송 시간 사이의 차이값이 임계값보다 큰 경우, 또는 제 1 확인 응답 시간과 전송 시간 사이의 경과 시간이 제 2 확인 응답 시간과 전송 시간 사이의 경과 시간보다 소정 마진보다 큰 경우, 데이터 프로세싱 시스템은 콘텐츠 요소에 대한 간섭이 발생했다고 결정할 수 있다(블록 945). 데이터 프로세싱 시스템은 간섭의 발생을 검출할 수 있다(블록 950). 데이터 프로세싱 시스템은 콘텐츠 요소의 속성을 식별할 수 있다(블록 955). 데이터 프로세싱 시스템은 초기 콘텐츠 요소의 식별된 특성들로부터 새로운 콘텐츠 요소를 생성할 수 있다(블록 960). 데이터 프로세싱 시스템은 콘텐츠에 대한 다른 요청에 응답하여 새로운 콘텐츠 요소를 전송할 수 있다(블록 965).
D. 컴퓨팅 시스템 아키텍처
도 10은 일부 구현예들에 따라 본 명세서에서 논의된 임의의 컴퓨터 시스템들(데이터 프로세싱 시스템(110), 콘텐츠 요청 모듈(130), 리소스 어셈블러 모듈(135), 간섭 검출기(605), 콘텐츠 수정기(610), 어플리케이션(160)과 그 모듈들, 프리젠테이션 제한기(165) 및 그 구성요소들, 리소스 파서(215), 요소 해셔(220), 콘텐츠 제한기(225) 및 렌더링 제한기(230)를 포함하는)을 구현하기 위해 채용될 수 있는 예시적인 컴퓨터 시스템(1000)의 일반적인 아키텍처를 도시한다. 컴퓨터 시스템(1000)은 디스플레이를 위해 네트워크(105)를 통해 정보를 제공하는데 사용될 수 있다. 도 10의 컴퓨터 시스템(1000)은 메모리(1025)에 통신가능하게 결합된 하나 이상의 프로세서(1020), 하나 이상의 통신 인터페이스(1005), 및 하나 이상의 출력 디바이스(1010)(예를 들어, 하나 이상의 디스플레이 디바이스) 및 하나 이상의 입력 디바이스(1015)를 포함한다. 프로세서(1020)는 데이터 프로세싱 시스템(110)에 포함되거나 또는 콘텐츠 요청 모듈(130), 리소스 어셈블러 모듈(135), 간섭 검출기(605), 콘텐츠 수정기(610) 등과 같은 시스템(110)의 다른 구성요소들에 포함될 수 있다. 프로세서는 클라이언트 디바이스(125), 프록시 디바이스(145), 원격 콘텐츠 제한기 디바이스(155) 또는 어플리케이션(160) 및 프리젠테이션 제한기(165)와 그 구성요소들, 리소스 파서(215), 요소 해셔(220), 콘텐츠 제한기(225) 및 렌더링 제한기(230)에 포함할 수 있다.
도 10의 컴퓨터 시스템(1000)에서, 메모리(1025)는 임의의 컴퓨터 판독가능한 저장 매체를 포함할 수 있고, 그리고 각각의 시스템에 대하여 본 명세서에서 설명된 다양한 기능을 구현하기 위한 프로세서-실행가능한 명령들과 같은 컴퓨터 명령들을 저장할 수 있을 뿐만 아니라, 통신 인터페이스(들) 또는 입력 디바이스(들)(만일, 있다면)과 관련되거나, 이에 의해 생성되거나 혹은 이를 통해 수신되는 임의의 데이터를 저장할 수 있다. 다시 도 1의 시스템(110)을 참조하면, 데이터 프로세싱 시스템(110)은 하나 이상의 콘텐츠 유닛들의 인벤토리의 가용성, 하나 이상의 콘텐츠 유닛들의 예약 등과 관련된 정보를 저장하는 메모리(1025)를 포함할 수 있다. 메모리(1025)는 데이터베이스(140)를 포함할 수 있다. 도 10에 도시된 프로세서(1020)는 메모리(1025)에 저장된 명령들을 실행하는데 사용될 수 있고, 그렇게함으로써, 명령들의 실행에 따라 프로세싱된 및/또는 생성된 다양한 정보를 메모리로부터 판독하거나 메모리에 기록할 수 있다.
도 10에 도시된 컴퓨터 시스템(1000)의 프로세서(1020)는 또한 명령들의 실행에 따라 다양한 정보를 송신 또는 수신하도록 통신 인터페이스(들)(1005)에 통신가능하게 연결되거나 이를 제어할 수 있다. 예를 들어, 통신 인터페이스(들)(1005)는 유선 또는 무선 네트워크, 버스, 또는 다른 통신 수단에 연결될 수 있으며, 따라서 컴퓨터 시스템(1000)이 다른 디바이스들(예를 들어, 다른 컴퓨터 시스템들)로/로부터 정보를 송/수신하게 할 수 있다. 비록, 도 1 혹은 도 6의 시스템에서는 명시적으로 도시되지는 않았지만, 하나 이상의 통신 인터페이스들은 시스템(1000)의 구성요소들 간의 정보 흐름을 용이하게 한다. 일부 구현예에서, 통신 인터페이스(들)는 컴퓨터 시스템(1000)의 적어도 일부 양태들에 대한 액세스 포털로서 웹 사이트를 제공하도록 구성될 수 있다(예를 들어, 다양한 하드웨어 구성 요소 또는 소프트웨어 구성 요소를 통해). 통신 인터페이스(1005)의 일례들은 사용자가 데이터 프로세싱 시스템(1000)과 통신할 수 있는 인터페이스들(예를 들어, 웹 페이지)을 포함할 수 있다.
도 10에 도시된 컴퓨터 시스템(1000)의 출력 디바이스(1010)는 예를 들어, 명령들의 실행과 관련하여 다양한 정보가 보여지거나 인지될 수 있게 하도록 제공될 수 있다. 입력 디바이스(들)(1015)는 예를 들어, 사용자가 수동 조작을 하거나, 선택을하거나, 데이터를 입력하거나, 또는 명령의 실행 동안 프로세서와 다양한 방식으로 상호작용할 수 있도록 제공될 수 있다. 본 명세서에 논의된 다양한 시스템에 사용될 수 있는 일반적인 컴퓨터 시스템 아키텍처에 관한 추가 정보가 본 명세서에서 더 제공된다.
본 명세서에서 설명된 본 발명의 주제 및 동작들의 실시예는 디지털 전자 회로, 또는 본 명세서에 개시된 구조들 및 이들의 구조적 등가물들을 포함하는 컴퓨터 소프트웨어, 펌웨어 또는 하드웨어로 또는 이들의 하나 이상의 조합들로 구현될 수 있다. 본 명세서에서 설명된 본 발명의 실시예는 하나 이상의 컴퓨터 프로그램들, 즉, 데이터 처리 장치에 의해 실행되거나 데이터 처리 장치의 동작을 제어하기 위해 컴퓨터 저장 매체 상에 인코딩된 컴퓨터 프로그램 명령의 하나 이상의 모듈로서 구현될 수 있다. 프로그램 명령들은 예컨대, 머신-생성된 전기, 광학 또는 전자기 신호 등과 같은 인위적으로 생성된 전파 신호에 인코딩될 수 있으며, 이는 데이터 처리 장치에 의해 실행되도록 적절한 수신기 장치로의 전송을 위해 정보를 인코딩하도록 생성된다. 컴퓨터 저장 매체는 컴퓨터 판독가능 저장 디바이스, 컴퓨터 판독가능 저장 기판, 랜덤 또는 직렬 액세스 메모리 어레이 또는 디바이스, 또는 이들 중 하나 이상의 조합일 수 있거나 이에 포함될 수 있다. 또한, 컴퓨터 저장 매체는 전파 신호가 아니지만, 컴퓨터 저장 매체는 인위적으로 생성된 전파 신호에 인코딩된 컴퓨터 프로그램 명령의 소스 또는 목적지를 포함할 수 있다. 또한, 컴퓨터 저장 매체는 하나 이상의 개별적인 물리적 구성 요소 또는 매체(예를 들어, 다수의 CD, 디스크 또는 다른 저장 디바이스)일 수 있거나 이에 포함될 수 있다.
본원에 개시된 피처들은 스마트 텔레비전 모듈(또는 연결된 텔레비전 모듈, 하이브리드 텔레비전 모듈 등) 상에서 구현될 수 있으며, 이는 더 전통적인 텔레비전 프로그램 소스들(예컨대, 케이블, 위성, 공중파 또는 기타 신호들을 통해 수신된)과 인터넷 연결을 통합하도록 구성된 프로세싱 모듈을 포함할 수 있다. 스마트 텔레비전 모듈은 텔레비전 세트에 물리적으로 통합될 수 있거나 또는 셋톱 박스, 블루 레이 또는 다른 디지털 미디어 플레이어, 게임 콘솔, 호텔 텔레비전 시스템 및 다른 컴패니언 디바이스와 같은 별도의 디바이스를 포함할 수 있다. 스마트 TV 모듈은 시청자가 웹, 로컬 케이블 TV 채널, 위성 TV 채널 또는 로컬 하드 드라이브에 저장된 비디오, 영화, 사진 및 기타 콘텐츠를 검색하고 찾을 수 있도록 구성될 수 있다. 셋톱 박스(STB) 또는 셋탑 유닛(STU)는 정보 어플라이언스 디바이스를 포함할 수 있는바, 이는 튜너를 포함할 수 있으며 그리고 텔레비전 세트 및 외부 신호 소스에 연결될 수 있어, 신호를 텔레비전 스크린 혹은 다른 디스플레이 디바이스 상에 디스플레이되는 콘텐츠로 변환할 수 있다. 스마트 텔레비전 모듈은 웹 브라우저 및 복수의 스트리밍 미디어 서비스들, 연결된 케이블 또는 위성 미디어 소스, 다른 웹 "채널들" 등과 같은 복수의 상이한 어플리케이션들에 대한 아이콘들을 포함하는 홈 스크린 또는 최상위 레벨 스크린을 제공하도록 구성될 수 있다. 또한, 스마트 텔레비전 모듈은 사용자에게 전자 프로그램 가이드를 제공하도록 구성될 수 있다. 스마트 텔레비전 모듈에 대한 동반 어플리케이션은 모바일 컴퓨팅 디바이스 상에서 동작하여, 이용가능한 프로그램에 관한 추가 정보를 사용자에게 제공하거나, 사용자가 스마트 텔레비전 모듈 등을 제어할 수 있게 한다. 대안적인 구현예에서, 이러한 피처들은 랩탑 컴퓨터 또는 다른 개인용 컴퓨터, 스마트폰, 다른 휴대 전화, 휴대용 컴퓨터, 태블릿 PC 또는 다른 컴퓨팅 디바이스 상에 구현될 수 있다.
본 명세서에서 설명된 동작들은 하나 이상의 컴퓨터 판독가능한 저장 디바이스에 저장되거나 다른 소스로부터 수신된 데이터에 대하여 데이터 프로세싱 디바이스에 의해 수행되는 동작으로서 구현될 수 있다.
"데이터 프로세싱 장치", "데이터 프로세싱 시스템", "사용자 디바이스" 또는 "컴퓨팅 디바이스" 라는 용어들은, 데이터를 처리하기 위한 모든 종류의 장치들, 디바이스들, 및 머신들을 포함하는바, 예를 들어 프로그램가능 프로세서, 컴퓨터, 시스템 온 칩, 또는 전술한 것들의 조합을 포함할 수 있다. 상기 장치는 특수 목적 논리 회로를 포함할 수 있는바, 예를 들어 FPGA(필드 프로그램가능 게이트 어레이) 또는 ASIC(주문형 집적 회로)를 포함할 수 있다. 또한, 상기 장치는 하드웨어 이외에도 컴퓨터 프로그램을 위한 실행 환경을 생성하는 코드 예컨대, 프로세서 펌웨어를 구성하는 코드, 프로토콜 스택, 데이터베이스 관리 시스템, 운영 체제, 크로스-플랫폼 런타임(cross-platform runtime) 환경, 가상 머신, 또는 이들의 조합을 포함할 수 있다. 상기 장치 및 실행 환경은 웹 서비스, 분산 컴퓨팅 및 그리드 컴퓨팅 인프라스트럭처와 같은 다양한 컴퓨팅 모델 인프라스트럭처를 구현할 수 있다. 콘텐츠 요청 모듈(130), 리소스 어셈블러 모듈(135), 간섭 검출기(605) 및 콘텐츠 수정기(610)는 하나 이상의 데이터 프로세싱 장치, 컴퓨팅 디바이스 또는 프로세서를 포함하거나 공유할 수 있다. 어플리케이션(160), 프리젠테이션 제한기(165) 및 그 모듈들, 리소스 파서(215), 요소 해셔(220), 콘텐츠 제한기(225) 및 렌더링 제한기(230)는 하나 이상의 데이터 프로세싱 장치, 컴퓨팅 디바이스 또는 프로세서를 포함하거나 공유할 수 있다.
컴퓨터 프로그램(프로그램, 소프트웨어, 소프트웨어 어플리케이션, 스크립트 또는 코드로도 알려져 있음)은 컴파일 또는 해석 언어, 선언 또는 절차 언어를 포함하는 임의의 형태의 프로그래밍 언어로 기록될 수 있으며, 독립형 프로그램 또는 모듈, 구성 요소, 서브 루틴, 객체 또는 컴퓨팅 환경에서 사용하기에 적합한 기타 유닛을 포함하는 임의의 형식으로 전개될 수 있다. 컴퓨터 프로그램은 파일 시스템의 파일에 대응할 수 있지만 반드시 그런 것은 아니다. 프로그램은 다른 프로그램이나 데이터(예컨대, 마크업 언어 문서에 저장된 하나 이상의 스크립트들)를 갖는 파일의 일부에 저장되거나, 문제의 프로그램 전용인 하나의 파일에 저장되거나 또는 여러 개의 조정 파일들(예컨대, 하나 이상의 모듈들, 서브 프로그램들 또는 코드의 일부분들을 저장하는 파일들)에 저장될 수 있다. 컴퓨터 프로그램은 하나의 컴퓨터에서 실행되거나 또는 한 사이트에 있거나 여러 사이트에 분산되어 있으며 통신 네트워크로 상호연결된 여러 컴퓨터들에서 실행되도록 배치될 수 있다.
본 명세서에서 설명되는 프로세스 및 논리 흐름은 입력 데이터를 조작하고 출력을 생성함으로써 동작을 수행하는 하나 이상의 컴퓨터 프로그램을 실행하는 하나 이상의 프로그램가능 프로세서들에 의해 수행될 수 있다. 프로세스 및 논리 흐름은 또한 FPGA(필드 프로그램가능 게이트 어레이) 또는 ASIC(주문형 집적 회로)과 같은 특수 목적의 논리 회로에 의해 수행될 수 있고, 장치는 또한 특수 목적 논리 회로로서 구현될 수 있다.
컴퓨터 프로그램의 실행에 적합한 프로세서는 예를 들어, 범용 및 특수 목적 마이크로 프로세서와 임의의 종류의 디지털 컴퓨터의 임의의 하나 이상의 프로세서를 포함한다. 일반적으로, 프로세서는 판독 전용 메모리 또는 랜덤 액세스 메모리 또는 이들 둘다로부터 명령 및 데이터를 수신할 것이다. 컴퓨터의 필수 구성 요소는 명령들에 따라 동작들을 수행하는 프로세서 및 명령들과 데이터를 저장하기 위한 하나 이상의 메모리 디바이스들이다. 일반적으로, 컴퓨터는 또한, 예컨대, 자기 디스크, 광 자기 디스크 또는 광학 디스크와 같은, 데이터를 저장하기 위한 하나 이상의 대용량 저장 디바이스를 포함하거나 또는 이에 동작가능하게 연결될 것인바, 이는 이러한 대용량 저장 디바이스와 데이터를 송수신하기 위함이다. 하지만, 컴퓨터는 이러한 디바이스들을 가질 필요가 없을 수도 있다. 또한, 컴퓨터는 다른 디바이스, 예를 들어, 이동 전화기, 개인 휴대 정보 단말기(PDA), 모바일 오디오 또는 비디오 플레이어, 게임 콘솔, GPS 수신기 또는 휴대용 저장 디바이스(예: 범용 직렬 버스(USB) 플래시 드라이브) 등에 내장될 수 있다. 컴퓨터 프로그램 명령 및 데이터를 저장하기에 적합한 디바이스는 모든 형태의 비휘발성 메모리, 매체 및 메모리 디바이스를 포함하는바, 예를 들어, EPROM, EEPROM 및 플래시 메모리 디바이스와 같은 반도체 메모리 디바이스, 내장 하드 디스크 또는 착탈식 디스크와 같은 자기 디스크, 자기-광학 디스크, CD-ROM 및 DVD-ROM 디스크를 포함할 수 있다. 프로세서 및 메모리는 특수 목적 논리 회로에 의해 보충되거나 그 안에 포함될 수 있다.
사용자와의 상호작용을 제공하기 위해, 본 명세서에서 설명된 본 발명의 실시예들은 사용자에게 정보를 디스플레이하는 디스플레이 디바이스(예를 들어, CRT(음극선 관) 또는 LCD(액정 디스플레이) 모니터), 및 사용자가 컴퓨터에 입력을 제공할 수 있는 키보드 및 포인팅 디바이스, 예를 들어, 마우스 또는 트랙볼을 포함하는 컴퓨터 상에서 구현될 수 있다. 다른 종류의 디바이스가 사용자와의 상호작용을 제공하는데 사용될 수 있는바, 예를 들면, 사용자에게 제공되는 피드백은 시각 피드백, 청각 피드백 또는 촉각 피드백과 같은 임의의 형태의 감각 피드백일 수 있으며, 사용자로부터의 입력은 음향, 음성 또는 촉각 입력을 포함하는 임의의 형태로 수신될 수 있다. 또한 컴퓨터는 사용자가 사용하는 디바이스와 문서를 주고 받음으로써 사용자와 상호작용할 수 있다. 예를 들어, 웹 브라우저로부터 수신된 요청에 응답하여 사용자의 클라이언트 디바이스 상의 웹 브라우저에 웹 페이지를 전송할 수 있다.
본 명세서에서 설명된 실시예는 컴퓨팅 시스템에서 구현될 수 있는데, 컴퓨팅 시스템은 데이터 서버와 같은 백-엔드 구성 요소 또는 어플리케이션 서버와 같은 미들웨어 구성 요소 또는 본 명세서에 기술된 주제의 구현예와 사용자가 상호작용할 수 있게 하는 그래픽 사용자 인터페이스 또는 웹 브라우저를 갖는 클라이언트 컴퓨터와 같은 프런트-엔드 구성 요소를 포함하거나 혹은 이들 백-엔드, 미들웨어 또는 프런트-엔드 구성 요소들 중 하나 이상의 임의의 조합을 포함할 수 있다. 시스템의 구성 요소들은 임의의 형태 또는 매체의 디지털 데이터 통신, 예를 들어 통신 네트워크에 의해 상호접속될 수 있다. 통신 네트워크의 예는 근거리 통신망("LAN") 및 광역 통신망("WAN"), 인터-네트워크(예 : 인터넷) 및 피어 투 피어 네트워크(예 : 애드혹 피어 투 피어 네트워크)를 포함한다.
시스템(1000) 또는 시스템(110)과 같은 컴퓨팅 시스템은 클라이언트 및 서버를 포함할 수 있다. 예를 들어, 데이터 프로세싱 시스템(110)은 하나 이상의 데이터 센터들 혹은 서버 팜들에 있는 하나 이상의 서버들을 포함할 수 있다. 클라이언트와 서버는 일반적으로 서로 멀리 떨어져 있으며 일반적으로 통신 네트워크를 통해 상호 작용한다. 클라이언트와 서버의 관계는 각각의 컴퓨터에서 실행되고 서로 클라이언트-서버 관계를 갖는 컴퓨터 프로그램으로 인하여 발생한다. 일부 실시예에서, 서버는(예를 들어, 클라이언트 디바이스와 상호작용하는 사용자에게 데이터를 디스플레이하고 사용자 입력을 수신하기 위한 목적으로) 클라이언트 디바이스에 데이터(예를 들어, HTML 페이지)를 송신한다. 클라이언트 디바이스에서 생성된 데이터(예를 들어, 사용자 상호작용의 결과)는 클라이언트 디바이스로부터 서버에서 수신될 수 있다.
본 명세서는 다수의 세부적인 특정 구현예들을 포함하지만, 이들은 임의의 발명 또는 청구될 수도 있는 임의의 범위에 대한 제한으로서 해석되어서는 안되며, 오히려 여기에 서술된 시스템들 및 방법들의 특정 실시예에 특별한 피처들에 대한 설명으로 해석되어야 한다. 개별적인 실시예들로서 본 명세서에서 설명된 특정한 특징들은 또한 하나의 실시예에서 조합되어 구현될 수도 있다. 반대로, 하나의 실시예로서 설명된 다양한 특징들은 또한 다수의 실시예들에서 별도로 또는 임의의 적합한 서브 조합으로 구현될 수 있다. 또한, 비록 특징들이 소정의 조합으로 작용하는 것으로 앞서 설명되었을 수도 있으며 심지어 처음에는 이와 같이 청구되었을 수도 있지만, 청구된 조합의 하나 이상의 특징들은 일부 실시예에서 이러한 조합으로부터 삭제될 수 있으며, 그리고 청구된 조합은 서브조합 혹은 서브조합의 변형예에 관한 것일 수도 있다.
이와 유사하게, 동작들이 특정 순서로 도면들에 도시되어 있지만, 이는 바람직한 결과를 얻기 위하여 그러한 동작들이 도시된 특정 순서대로 또는 순차적인 순서대로 수행되거나, 예시된 모든 동작들이 수행될 것을 요구하는 것으로 이해되어서는 안된다. 일부 경우들에서, 청구범위에 기술된 동작들은 다른 순서대로 수행될 수도 있으며 여전히 바람직한 결과를 획득할 수 있다. 또한, 첨부된 도면들에 도시된 프로세스들은 바람직한 결과를 얻기 위해, 도시된 특정 순서 또는 순차적인 순서를 반드시 요구하는 것은 아니다.
소정 상황들에서는, 멀티 태스킹 및 병렬 프로세싱이 유리할 수 있다. 또한, 전술한 실시예들에서 다양한 시스템 구성요소들의 분리는 모든 실시예에서 그러한 분리를 요구하는 것으로 이해되어서는 안되며, 서술된 프로그램 구성 요소 및 시스템은 일반적으로 단일 소프트웨어 제품으로 함께 통합되거나 여러 소프트웨어 제품으로 패키지될 수도 있다. 예를 들어, 콘텐츠 요청 모듈(130), 리소스 어셈블러 모듈(135), 간섭 검출기(605), 및 콘텐츠 수정기(610)는 데이터 프로세싱 시스템(110), 단일 모듈, 하나 이상의 프로세싱 모듈들을 갖는 로직 디바이스, 하나 이상의 서버의 일부일 수 있으며, 또는 검색 엔진의 일부일 수 있다. 또한, 어플리케이션(160) 및 프리젠테이션 제한기(165)의 리소스 파서(215), 요소 해셔(220), 콘텐츠 제한기(225) 및 렌더링 제한기(230)는 클라이언트 디바이스(125), 프록시 디바이스(145) 및 원격 콘텐츠 제한기 디바이스(150), 단일 모듈, 또는 하나 이상의 프로세싱 모듈을 갖는 로직 디바이스를 포함하거나 그 일부분이 될 수 있다. 프리젠테이션 제한기(165)의 리소스 파서(215), 요소 해셔(220), 콘텐츠 제한기(225) 및 렌더링 제한기(230)는 하나 이상의 데이터 프로세싱 장치, 컴퓨팅 디바이스 또는 프로세서들을 포함하거나 공유할 수 있으며 그리고 클라이언트 디바이스(125), 프록시 디바이스(145), 및 원격 콘텐츠 제한기 디바이스(150), 단일 모듈, 또는 하나 이상의 프로세싱 모듈을 갖는 로직 디바이스를 포함할 수 있다.
지금까지 일부 예시적인 구현예들이 설명되었지만, 전술한 일례들은 제한적인 것이 아니라 예시로서 제시된 것이 명백하다. 특히, 본 명세서에 제시된 많은 일례들은 방법 동작들 또는 시스템 요소들의 특정 조합들을 포함하지만, 그러한 동작들 및 요소들은 동일한 목적을 달성하기 위해 다른 방식으로 결합될 수 있다. 하나의 구현예와 관련해서만 논의된 동작들, 요소들 및 특징들은 다른 구현예들에서의 유사한 역할로부터 배제되지 않는다.
본 명세서에서 사용되는 표현들 및 용어들은 설명을 위한 것이며 제한으로 간주되어서는 안된다. "포함하는(including)" , "포함하는(comprising)" , "갖는(having)" , "포함하는(containing)" , "포함하는(involving)" , "특징으로 하는(characterized by)" , "특징으로 하는(characterized in that)" 라는 용어 및 이들의 변형예들의 사용은, 그 이후에 열거된 항목들, 그 등가물들 및 추가 항목들을 포괄하는 것을 의미할 뿐만 아니라 그 이후에 배타적으로 나열된 항목들로 구성된 대안 구현예들도 포괄함을 의미한다.
단수형으로 지칭되는 본 발명의 시스템들 및 방법들의 구현예들 혹은 구성요소들 혹은 동작들에 대한 참조들은 이들 구성요소들의 복수형을 포함하는 구현예들도 또한 포괄하며, 그리고 본원의 임의의 구현예 혹은 구성요소 혹은 동작에 대한 복수형 참조들은 오직 하나의 구성요소를 포함하는 구현예들도 또한 포괄한다. 단수형 혹은 복수형의 참조들은 현재 개시된 시스템들 또는 방법들, 구성요소들, 동작들 또는 요소들을 단일 구성 또는 복수 구성만으로 제한하려는 것이 아니다. 임의의 정보, 동작 또는 요소에 기초하는 임의의 동작 또는 요소에 대한 참조들은 이러한 동작 또는 요소가 임의의 정보, 동작 또는 요소에 적어도 일부 기초하는 구현예들을 포함할 수 있다.
본 명세서에 개시된 임의의 구현예는 임의의 다른 구현예와 조합될 수 있으며, 그리고 "구현예", "몇몇 구현예들", "대안적인 구현예", "다양한 구현예들", "일 구현예" 등에 대한 참조는, 반드시 상호 배타적일 필요는 없으며, 그리고 구현예와 관련되어 서술된 특정 피처들, 구조들 혹은 특징들이 적어도 하나의 구현예에 포함될 수도 있다는 점을 나타내기 위한 것이다. 본 명세서에 사용된 이러한 용어들은 반드시 모두 동일한 구현예를 지칭하는 것은 아니다. 임의의 구현예는 본원에 개시된 양태들 및 구현예들과 일치하는 임의의 방식으로 다른 구현예들과 포괄적으로 또는 배타적으로 조합될 수 있다.
"또는(or)" 에 대한 언급들은 포괄적으로 해석될 수 있고, 따라서 "또는" 을 이용하여 서술된 임의의 용어들은 서술된 용어들 중 하나, 둘 이상, 및 전부 중 임의의 것을 나타낼 수 있다.
도면들, 상세한 설명 또는 청구항들의 기술적 피처들 뒤에 참조 부호가 후속되는 경우, 이러한 참조 부호는 도면들, 상세한 설명 및 청구항들에서 명료성을 증가시키기 위한 목적으로만 포함된 것이다. 따라서, 참조 부호들의 존재 또는 부재는 청구항들의 범위에 어떠한 제한적인 효과도 갖지 않는다.
본원에 기재된 시스템들 및 방법들은, 그 특성으로부터 벗어남이 없이 다른 특정 형태로 구현될 수 있다. 비록, 본 명세서에서 제공된 일례들은 키워드들의 의미론적 관련성을 측정하는 것에 관한 것이지만, 본 명세서에서 설명된 시스템들 및 방법들은 다른 환경에도 적용될 수 있다. 전술한 구현예들은 설명된 시스템 및 방법을 제한하기 보다는 예시적인 것이다. 따라서, 본 명세서에 설명된 시스템 및 방법의 범위는 전술한 설명보다는 첨부된 청구 범위에 의해 표시되며, 청구항들의 등가물의 의미 및 범위 내에 속하는 변경들이 본 명세서에 포함된다.

Claims (34)

  1. 삭제
  2. 삭제
  3. 정보 리소스에 삽입된 콘텐츠를 제한하는 방법으로서,
    하나 이상의 프로세서를 갖는 컴퓨팅 디바이스에 의해, 콘텐츠 요소의 프리젠테이션을 수정하기 위한 콘텐츠 제한 정책이 적용될 정보 리소스에 포함된 콘텐츠 요소를 식별하는 단계;
    상기 컴퓨팅 디바이스에 의해, 상기 정보 리소스에 포함된 콘텐츠 요소에 대응하는 비트 스트림을 상기 정보 리소스의 이진 시퀀스로부터 식별하는 단계;
    상기 컴퓨팅 디바이스에 의해, 상기 정보 리소스의 이진 시퀀스로부터 식별된 비트 스트림을 해싱하여 상기 콘텐츠 요소에 대응하는 요소 식별자를 생성하는 단계;
    상기 컴퓨팅 디바이스에 의해, 제한된 콘텐츠 데이터베이스에 상기 요소 식별자를 이용하여 액세스하는 단계; 및
    상기 컴퓨팅 디바이스에 의해, 상기 제한된 콘텐츠 데이터베이스 내에서 상기 요소 식별자를 찾아내는 것에 응답하여, 상기 콘텐츠 제한 정책에 따라 상기 정보 리소스 상의 상기 콘텐츠 요소의 프리젠테이션을 수정하는 단계를 포함하며,
    상기 제한된 콘텐츠 데이터베이스에 액세스하는 단계는,
    상기 컴퓨팅 디바이스에 의해, 상기 컴퓨팅 디바이스에 저장된 로컬 제한된 콘텐츠 데이터베이스에 상기 요소 식별자를 이용하여 액세스하는 단계;
    상기 컴퓨팅 디바이스에 의해, 상기 로컬 제한된 콘텐츠 데이터베이스 내에서 상기 요소 식별자를 찾지 못함에 응답하여, 상기 콘텐츠 요소 및 상기 정보 리소스의 렌더링 속성들에 기초하는 콘텐츠 렌더링 제한 확장에 따라 상기 콘텐츠 요소가 수정되어야 하는지를 결정하는 단계; 및
    상기 컴퓨팅 디바이스에 의해, 상기 콘텐츠 렌더링 제한 확장에 따라 상기 콘텐츠 제한 정책이 상기 콘텐츠 요소에 적용될 것이라는 결정에 응답하여, 상기 요소 식별자를 상기 로컬 제한된 콘텐츠 데이터베이스에 삽입하는 단계
    를 더 포함하는 것을 특징으로 하는 콘텐츠를 제한하는 방법.
  4. 정보 리소스에 삽입된 콘텐츠를 제한하는 방법으로서,
    하나 이상의 프로세서를 갖는 컴퓨팅 디바이스에 의해, 콘텐츠 요소의 프리젠테이션을 수정하기 위한 콘텐츠 제한 정책이 적용될 정보 리소스에 포함된 콘텐츠 요소를 식별하는 단계;
    상기 컴퓨팅 디바이스에 의해, 상기 정보 리소스에 포함된 콘텐츠 요소에 대응하는 비트 스트림을 상기 정보 리소스의 이진 시퀀스로부터 식별하는 단계;
    상기 컴퓨팅 디바이스에 의해, 상기 정보 리소스의 이진 시퀀스로부터 식별된 비트 스트림을 해싱하여 상기 콘텐츠 요소에 대응하는 요소 식별자를 생성하는 단계;
    상기 컴퓨팅 디바이스에 의해, 제한된 콘텐츠 데이터베이스에 상기 요소 식별자를 이용하여 액세스하는 단계; 및
    상기 컴퓨팅 디바이스에 의해, 상기 제한된 콘텐츠 데이터베이스 내에서 상기 요소 식별자를 찾아내는 것에 응답하여, 상기 콘텐츠 제한 정책에 따라 상기 정보 리소스 상의 상기 콘텐츠 요소의 프리젠테이션을 수정하는 단계를 포함하며,
    상기 제한된 콘텐츠 데이터베이스에 액세스하는 단계는,
    상기 컴퓨팅 디바이스에 의해, 상기 컴퓨팅 디바이스에 저장된 로컬 제한된 콘텐츠 데이터베이스에 상기 요소 식별자를 이용하여 액세스하는 단계;
    상기 컴퓨팅 디바이스에 의해, 상기 로컬 제한된 콘텐츠 데이터베이스 내에서 상기 요소 식별자를 찾지 못함에 응답하여, 원격 디바이스와 관련된 원격 제한된 콘텐츠 데이터베이스 상에서 상기 요소 식별자를 찾으라는 요청을 상기 원격 디바이스로 전송하는 단계, 상기 요청의 수신은 상기 원격 디바이스로 하여금:
    상기 요소 식별자를 이용하여 상기 원격 제한된 콘텐츠 데이터베이스에 액세스하고,
    상기 원격 제한된 콘텐츠 데이터베이스 내에서 상기 요소 식별자를 찾지 못함에 응답하여, 상기 콘텐츠 요소 및 상기 정보 리소스의 렌더링 속성들에 기초하는 콘텐츠 렌더링 제한 확장에 따라 상기 콘텐츠 요소가 수정되어야 하는지를 결정하고,
    상기 콘텐츠 렌더링 제한 확장에 따라 상기 콘텐츠 제한 정책이 상기 콘텐츠 요소에 적용될 것이라는 결정에 응답하여, 상기 요소 식별자를 상기 원격 제한된 콘텐츠 데이터베이스에 삽입하도록 트리거링하며; 그리고
    상기 컴퓨팅 디바이스에 의해, 상기 원격 디바이스와 관련된 원격 제한된 콘텐츠 데이터베이스 상에 상기 요소 식별자가 있음을 나타내는 응답을 상기 원격 디바이스로부터 수신하는 단계
    를 더 포함하는 것을 특징으로 하는 콘텐츠를 제한하는 방법.
  5. 정보 리소스에 삽입된 콘텐츠를 제한하는 방법으로서,
    하나 이상의 프로세서를 갖는 컴퓨팅 디바이스에 의해, 콘텐츠 요소의 프리젠테이션을 수정하기 위한 콘텐츠 제한 정책이 적용될 정보 리소스에 포함된 콘텐츠 요소를 식별하는 단계;
    상기 컴퓨팅 디바이스에 의해, 상기 정보 리소스에 포함된 콘텐츠 요소에 대응하는 비트 스트림을 상기 정보 리소스의 이진 시퀀스로부터 식별하는 단계;
    상기 컴퓨팅 디바이스에 의해, 상기 정보 리소스의 이진 시퀀스로부터 식별된 비트 스트림을 해싱하여 상기 콘텐츠 요소에 대응하는 요소 식별자를 생성하는 단계;
    상기 컴퓨팅 디바이스에 의해, 제한된 콘텐츠 데이터베이스에 상기 요소 식별자를 이용하여 액세스하는 단계; 및
    상기 컴퓨팅 디바이스에 의해, 상기 제한된 콘텐츠 데이터베이스 내에서 상기 요소 식별자를 찾아내는 것에 응답하여, 상기 콘텐츠 제한 정책에 따라 상기 정보 리소스 상의 상기 콘텐츠 요소의 프리젠테이션을 수정하는 단계를 포함하며,
    상기 방법은,
    상기 컴퓨팅 디바이스에 의해, 상기 컴퓨팅 디바이스에 저장된 로컬 제한된 콘텐츠 데이터베이스에 상기 요소 식별자를 이용하여 액세스하는 단계;
    상기 컴퓨팅 디바이스에 의해, 상기 로컬 제한된 콘텐츠 데이터베이스 내에서 상기 요소 식별자를 찾지 못함에 응답하여, 원격 디바이스와 관련된 원격 제한된 콘텐츠 데이터베이스에 대한 요청을 상기 원격 디바이스로 전송하는 단계, 상기 요청의 수신은 상기 원격 디바이스로 하여금:
    상기 콘텐츠 요소 및 상기 정보 리소스의 렌더링 속성들에 기초하는 콘텐츠 렌더링 제한 확장에 따라 상기 콘텐츠 요소가 수정되어야 하는지를 결정하도록 트거링하며; 그리고
    상기 컴퓨팅 디바이스에 의해, 상기 콘텐츠 요소가 수정되어함을 나타내는 응답을 상기 원격 디바이스로부터 수신하는 단계
    를 더 포함하는 것을 특징으로 하는 콘텐츠를 제한하는 방법.
  6. 제5항에 있어서,
    상기 요청의 수신은 또한, 상기 원격 디바이스로 하여금:
    상기 콘텐츠 요소에 대응하는 요소 식별자를 생성하고; 그리고
    상기 콘텐츠 렌더링 제한 확장에 따라 상기 콘텐츠 제한 정책이 상기 콘텐츠 요소에 적용될 것이라는 결정에 응답하여, 상기 요소 식별자를 상기 원격 제한된 콘텐츠 데이터베이스에 삽입하도록 트리거링하는 것을 특징으로 하는 콘텐츠를 제한하는 방법.
  7. 정보 리소스에 삽입된 콘텐츠를 제한하는 방법으로서,
    하나 이상의 프로세서를 갖는 컴퓨팅 디바이스에 의해, 콘텐츠 요소의 프리젠테이션을 수정하기 위한 콘텐츠 제한 정책이 적용될 정보 리소스에 포함된 콘텐츠 요소를 식별하는 단계;
    상기 컴퓨팅 디바이스에 의해, 상기 정보 리소스에 포함된 콘텐츠 요소에 대응하는 비트 스트림을 상기 정보 리소스의 이진 시퀀스로부터 식별하는 단계;
    상기 컴퓨팅 디바이스에 의해, 상기 정보 리소스의 이진 시퀀스로부터 식별된 비트 스트림을 해싱하여 상기 콘텐츠 요소에 대응하는 요소 식별자를 생성하는 단계;
    상기 컴퓨팅 디바이스에 의해, 제한된 콘텐츠 데이터베이스에 상기 요소 식별자를 이용하여 액세스하는 단계; 및
    상기 컴퓨팅 디바이스에 의해, 상기 제한된 콘텐츠 데이터베이스 내에서 상기 요소 식별자를 찾아내는 것에 응답하여, 상기 콘텐츠 제한 정책에 따라 상기 정보 리소스 상의 상기 콘텐츠 요소의 프리젠테이션을 수정하는 단계를 포함하며,
    상기 방법은,
    상기 컴퓨팅 디바이스에 의해, 상기 제한된 콘텐츠 데이터베이스 내에서 상기 요소 식별자를 찾지 못함에 응답하여, 상기 정보 리소스 상의 상기 콘텐츠 요소의 제 1 포함(first inclusion) 동안 상기 콘텐츠 요소의 속성들을 디폴트 값들로 설정하는 단계;
    상기 컴퓨팅 디바이스에 의해, 상기 콘텐츠 요소의 상기 제 1 포함 이후에, 상기 콘텐츠 요소 및 상기 정보 리소스의 렌더링 속성들에 기초하는 콘텐츠 렌더링 제한 확장에 따라 상기 콘텐츠 요소가 수정될 것으로 결정하는 단계; 및
    상기 컴퓨팅 디바이스에 의해, 상기 콘텐츠 렌더링 제한 확장에 따라 상기 콘텐츠 제한 정책이 상기 콘텐츠 요소에 적용되어야한다고 결정한 것에 응답하여, 상기 요소 식별자를 상기 제한된 콘텐츠 데이터베이스에 삽입하는 단계
    를 더 포함하며,
    상기 콘텐츠 요소의 프리젠테이션을 수정하는 단계는, 상기 콘텐츠 제한 정책에 의해 지정된 바와 같이 상기 제 1 포함 이후의 상기 콘텐츠 요소의 제 2 포함 동안 상기 정보 리소스 또는 제 2 정보 리소스 중 적어도 하나로부터 상기 콘텐츠 요소를 삭제하는 단계를 더 포함하는 것을 특징으로 하는 콘텐츠를 제한하는 방법.
  8. 제3항에 있어서,
    상기 콘텐츠 요소의 프리젠테이션을 수정하는 단계는,
    상기 컴퓨팅 디바이스에 의해, 상기 콘텐츠 요소에 대한 핑백(pingback)을 원격 서버로 전송하는 것을 허용하는 단계; 및
    상기 컴퓨팅 디바이스에 의해, 상기 콘텐츠 요소에 대한 핑백의 원격 서버로의 전송에 후속하여 상기 정보 리소스로부터 상기 콘텐츠 요소를 삭제하는 단계
    를 더 포함하는 것을 특징으로 하는 콘텐츠를 제한하는 방법.
  9. 제3항에 있어서,
    상기 콘텐츠 요소의 프리젠테이션을 수정하는 단계는,
    상기 콘텐츠 제한 정책에 의해 지정된 바와 같이 상기 정보 리소스 상에서 상기 콘텐츠 요소 위에 위치된 제 2 콘텐츠 요소를 삽입하는 단계를 더 포함하는 것을 특징으로 하는 콘텐츠를 제한하는 방법.
  10. 제3항에 있어서,
    상기 콘텐츠 요소의 프리젠테이션을 수정하는 단계는,
    상기 콘텐츠 제한 정책에 의해 지정된 바와 같이 상기 정보 리소스로부터 상기 콘텐츠 요소를 제거하는 단계를 더 포함하는 것을 특징으로 하는 콘텐츠를 제한하는 방법.
  11. 제3항에 있어서,
    상기 콘텐츠 요소의 프리젠테이션을 수정하는 단계는,
    상기 콘텐츠 요소의 가시성(visibility) 속성을 상기 콘텐츠 제한 정책에 의해 지정된 바와 같이 널(null)로 설정하는 단계를 더 포함하는 것을 특징으로 하는 콘텐츠를 제한하는 방법.
  12. 제3항에 있어서,
    상기 비트 스트림을 식별하는 단계는, 상기 컴퓨팅 디바이스에 의해, 상기 콘텐츠 요소를 나타내는 이진 시퀀스의 부분으로부터 상기 콘텐츠 요소의 일부분에 대응하는 비트 스트림을 식별하는 단계를 더 포함하는 것을 특징으로 하는 콘텐츠를 제한하는 방법.
  13. 컴퓨터 시스템으로서,
    프로세서 판독가능 명령들을 저장하는 메모리; 및
    하나 이상의 프로세서들을 포함하고,
    상기 하나 이상의 프로세서들은 상기 메모리에 저장된 프로세서 판독가능 명령들을 판독하고 실행하며, 상기 프로세서 판독가능 명령들은 제3항 내지 제12항 중 어느 한 항에 따른 방법을 수행하도록 상기 컴퓨터 시스템을 제어하는 명령들을 포함하는 것을 특징으로 하는 컴퓨터 시스템.
  14. 제3항 내지 제12항 중 어느 한 항에 따른 방법을 컴퓨터가 수행하게하는 컴퓨터 판독가능 명령들을 포함하는 컴퓨터 프로그램을 저장한 컴퓨터 판독가능 매체.
  15. 삭제
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
  21. 삭제
  22. 삭제
  23. 삭제
  24. 삭제
  25. 삭제
  26. 삭제
  27. 삭제
  28. 삭제
  29. 삭제
  30. 삭제
  31. 삭제
  32. 삭제
  33. 삭제
  34. 삭제
KR1020197015208A 2016-12-30 2017-01-24 정보 리소스들 상에서의 해시 기반 동적 제한 KR102262480B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201662440792P 2016-12-30 2016-12-30
US62/440,792 2016-12-30
PCT/US2017/014786 WO2018125266A1 (en) 2016-12-30 2017-01-24 Hash-based dynamic restriction of content on information resources

Publications (2)

Publication Number Publication Date
KR20190072619A KR20190072619A (ko) 2019-06-25
KR102262480B1 true KR102262480B1 (ko) 2021-06-08

Family

ID=57966187

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020197015208A KR102262480B1 (ko) 2016-12-30 2017-01-24 정보 리소스들 상에서의 해시 기반 동적 제한

Country Status (6)

Country Link
US (2) US11645368B2 (ko)
EP (1) EP3408762A1 (ko)
JP (1) JP6867482B2 (ko)
KR (1) KR102262480B1 (ko)
CN (2) CN108701158B (ko)
WO (1) WO2018125266A1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10615966B2 (en) 2017-05-12 2020-04-07 International Business Machines Corporation Selective content security using visual hashing
JP7177152B2 (ja) * 2019-12-11 2022-11-22 グーグル エルエルシー ターゲティングおよびその他の設定を改善するためのコンテンツプロバイダの推薦
US11899617B2 (en) * 2020-12-14 2024-02-13 Verizon Patent And Licensing Inc. Systems and methods for dynamic content optimization at the network edge using shared customizable functions

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050187971A1 (en) * 2004-02-19 2005-08-25 Hassan Ahmed E. System and method for searching a remote database
US20050259819A1 (en) 2002-06-24 2005-11-24 Koninklijke Philips Electronics Method for generating hashes from a compressed multimedia content
US20130013705A1 (en) * 2011-07-08 2013-01-10 Image Vision Labs, Inc. Image scene recognition

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6457030B1 (en) 1999-01-29 2002-09-24 International Business Machines Corporation Systems, methods and computer program products for modifying web content for display via pervasive computing devices
US20020016910A1 (en) 2000-02-11 2002-02-07 Wright Robert P. Method for secure distribution of documents over electronic networks
US20030182420A1 (en) 2001-05-21 2003-09-25 Kent Jones Method, system and apparatus for monitoring and controlling internet site content access
US7650420B2 (en) 2001-12-28 2010-01-19 The Directv Group, Inc. System and method for content filtering
US8041719B2 (en) * 2003-05-06 2011-10-18 Symantec Corporation Personal computing device-based mechanism to detect preselected data
US7673344B1 (en) 2002-09-18 2010-03-02 Symantec Corporation Mechanism to search information content for preselected data
CA2499508A1 (en) * 2002-09-18 2004-04-01 Vontu, Inc. Detection of preselected data
JP4300292B2 (ja) 2003-10-03 2009-07-22 独立行政法人産業技術総合研究所 ピア・ツウ・ピアネットワークにおける分散情報共有・検索方法及びそのシステム
CA2560395C (en) 2004-04-02 2014-06-17 Matsushita Electric Industrial Co., Ltd. Unauthorized contents detection system
GB2422455A (en) 2005-01-24 2006-07-26 Hewlett Packard Development Co Securing the privacy of sensitive information in a data-handling system
US20070201502A1 (en) 2006-02-28 2007-08-30 Maven Networks, Inc. Systems and methods for controlling the delivery behavior of downloaded content
CN101335762A (zh) * 2007-06-25 2008-12-31 株式会社日立制作所 反映网页的历史使用行为的方法,及服务器、终端和系统
US20090300671A1 (en) * 2008-05-30 2009-12-03 At&T Knowledge Ventures, L.P. Controlling Access to Multimedia Content
US9068837B2 (en) 2010-01-29 2015-06-30 Here Global B.V. Method of operating a navigation system
CN102340529B (zh) * 2010-07-21 2014-09-03 中国移动通信集团福建有限公司 一种基于wap平台的页面生成系统及页面生成方法
BR112013004345B1 (pt) * 2010-08-25 2020-12-08 Lookout, Inc. sistema e método para evitar malware acoplado a um servidor
DE102012007217A1 (de) 2012-04-11 2013-10-17 Torsten Schmale IT-Verfahren für den sicheren Umgang mit Sensitiven Daten im Kontext des Cloud Computings
CN103913174B (zh) 2012-12-31 2016-10-19 深圳先进技术研究院 一种导航信息的生成方法和系统及移动客户端和服务器端
US8869281B2 (en) 2013-03-15 2014-10-21 Shape Security, Inc. Protecting against the introduction of alien content
US9473516B1 (en) 2014-09-29 2016-10-18 Amazon Technologies, Inc. Detecting network attacks based on a hash
US20170059347A1 (en) 2015-08-28 2017-03-02 Google Inc. Determining Improved Pick-Up Locations
US10126141B2 (en) 2016-05-02 2018-11-13 Google Llc Systems and methods for using real-time imagery in navigation
US10024683B2 (en) 2016-06-06 2018-07-17 Uber Technologies, Inc. User-specific landmarks for navigation systems
CN106403971B (zh) 2016-08-25 2021-10-08 北京小米移动软件有限公司 信息交互方法及装置
US10458802B2 (en) 2017-06-13 2019-10-29 Gt Gettaxi Limited System and method for navigating drivers to dynamically selected drop-off locations for shared rides
CN109040960A (zh) 2018-08-27 2018-12-18 优视科技新加坡有限公司 一种实现位置服务的方法和装置
CN109357673A (zh) 2018-10-30 2019-02-19 上海仝物云计算有限公司 基于图像的视觉导航方法和装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050259819A1 (en) 2002-06-24 2005-11-24 Koninklijke Philips Electronics Method for generating hashes from a compressed multimedia content
US20050187971A1 (en) * 2004-02-19 2005-08-25 Hassan Ahmed E. System and method for searching a remote database
US20130013705A1 (en) * 2011-07-08 2013-01-10 Image Vision Labs, Inc. Image scene recognition

Also Published As

Publication number Publication date
CN108701158A (zh) 2018-10-23
CN108701158B (zh) 2023-03-10
US20190130079A1 (en) 2019-05-02
CN116244480A (zh) 2023-06-09
US11797653B2 (en) 2023-10-24
KR20190072619A (ko) 2019-06-25
JP6867482B2 (ja) 2021-04-28
WO2018125266A1 (en) 2018-07-05
JP2020504354A (ja) 2020-02-06
US20210349976A1 (en) 2021-11-11
US11645368B2 (en) 2023-05-09
EP3408762A1 (en) 2018-12-05

Similar Documents

Publication Publication Date Title
US11907360B2 (en) Systems and methods for deploying countermeasures against unauthorized scripts interfering with the rendering of content elements on information resources
US10079854B1 (en) Client-side protective script to mitigate server loading
CN106095869B (zh) 广告信息处理方法、用户设备、后台服务器及系统
US11797653B2 (en) Hash-based dynamic restriction of content on information resources
US9208316B1 (en) Selective disabling of content portions
US10474729B2 (en) Delayed encoding of resource identifiers
US11886546B2 (en) Systems and methods for dynamically restricting the rendering of unauthorized content included in information resources
US20130074160A1 (en) Method of controlling information processing system, computer-readable recording medium storing program for controlling apparatus
JP2017532615A (ja) クラウドサフィックスプロキシおよびその方法
US11314834B2 (en) Delayed encoding of resource identifiers
CN109891421B (zh) 部署对信息资源上的内容元素的基于散列的动态限制的对策
CN117909603A (zh) 防止干扰在信息资源上渲染内容元素的系统和方法

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant