KR20220000899A - 웹뷰 내에서 콘텐츠 및 상호작용들을 확인 - Google Patents

웹뷰 내에서 콘텐츠 및 상호작용들을 확인 Download PDF

Info

Publication number
KR20220000899A
KR20220000899A KR1020217025344A KR20217025344A KR20220000899A KR 20220000899 A KR20220000899 A KR 20220000899A KR 1020217025344 A KR1020217025344 A KR 1020217025344A KR 20217025344 A KR20217025344 A KR 20217025344A KR 20220000899 A KR20220000899 A KR 20220000899A
Authority
KR
South Korea
Prior art keywords
content
webview
content provider
digital component
data
Prior art date
Application number
KR1020217025344A
Other languages
English (en)
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 KR20220000899A publication Critical patent/KR20220000899A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/14Tree-structured 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/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/958Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking
    • 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/904Browsing; Visualisation therefor
    • 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]
    • G06F16/9566URL specific, e.g. using aliases, detecting broken or misspelled links
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/554Detecting local intrusion or implementing counter-measures involving event detection and direct action
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security
    • 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
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/134Hyperlinking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Computational Linguistics (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Artificial Intelligence (AREA)
  • Computing Systems (AREA)
  • Bioethics (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

컴퓨터 저장 매체에 인코딩된 컴퓨터 프로그램을 포함하는 방법들, 시스템들 및 장치들로서, 웹뷰 내에서 디스플레이하기 위해 제공된 콘텐츠 및 이러한 콘텐츠와의 상호작용을 확인하기 위한 것이다. 방법들은 클라이언트 디바이스 상에서 시작된 애플리케이션의 일부에서 실행되는 웹뷰 내에, 디지털 컴포넌트를 포함하는 제1 콘텐츠 페이지를 제공하는 단계와; 그리고 웹뷰 내에서 실행하는 스크립트에 의해, 상호작용 신호들의 세트를 검출하는 단계를 포함할 수 있다. 상호작용 신호들의 세트의 검출 후, 신호들은, 통신 브리지를 통해, 웹뷰로부터 기본 계층 내에 상주하는 소프트웨어 라이브러리로 전송될 수 있다. 소프트웨어 라이브러리는 제1 콘텐츠 제공자에게 상호작용 신호들의 세트를 전송하고, 이는 상호작용 신호들이 자동화된 상호작용들과 반대로 실제 인간 사용자에 의한 상호작용들을 나타내는지를 결정할 수 있다. 그런 다음 소프트웨어 라이브러리는 디지털 컴포넌트에 의해 링크된 제2 콘텐츠 페이지를 시작한다.

Description

웹뷰 내에서 콘텐츠 및 상호작용들을 확인
본 명세서는 일반적으로 네이티브 애플리케이션 내에서 실행되는 웹뷰 내에서 디스플레이를 위해 제공된 데이터 처리 및 콘텐츠 확인과 웹뷰 내 콘텐츠와의 상호작용에 관한 것이다.
클라이언트 디바이스는, 예를 들어, 상업용 웹 브라우저 내에서 또는 웹뷰를 실행하는 네이티브 애플리케이션(상업용 웹 브라우저가 아님)을 통해 하나 이상의 콘텐츠 제공자에 의해 제공되는 디지털 웹 콘텐츠를 디스플레이할 수 있다. 본 명세서에서 사용된 바와 같이, 웹뷰는 (1) 웹 페이지들을 렌더링하고, (2) 그래픽 사용자 인터페이스들을 생성하기 위해 스크립트 및/또는 웹 코드(예를 들어, 자바스크립트, CSS(Cascading Style Sheet), XML(Extensible Markup Language) 등)를 읽고, 컴파일하고, 그리고/또는 실행하며, 및/또는 (3) 서버(예를 들어, 콘텐츠 제공자들, 콘텐츠 플랫폼들 등)와의 통신을 가능하게 할 수 있는 네이티브 애플리케이션 내에 포함된 브라우저 엔진을 포함할 수 있다.
일반적으로, 본 명세서에서 서술된 주제의 하나의 혁신적인 양태는, 클라이언트 디바이스 상에서 시작된 애플리케이션의 일부에서 실행되는 웹뷰 내에, 디지털 컴포넌트를 포함하는 제1 콘텐츠 페이지를 제공하는 단계와; 상기 웹뷰 내에서 실행하는 스크립트에 의해, 상기 디지털 컴포넌트와의 하나 이상의 상호작용들을 나타내는 상호작용 신호들의 세트를 검출하는 단계와; 상기 애플리케이션의 기본 계층과 상기 웹뷰 사이의 통신 브리지를 통해, 상기 웹뷰로부터 상기 기본 계층 내에 상주하는 소프트웨어 라이브러리로 상호작용 신호들의 세트를 전송하는 단계와; 상기 소프트웨어 라이브러리에 의해, 상기 상호작용 신호들의 세트가 자동화된 상호작용 대신에 상기 디지털 컴포넌트와 상기 클라이언트 디바이스의 인간 사용자에 의한 상호작용들을 나타내는지의 평가를 위해 제1 콘텐츠 제공자에게 상호작용 신호들의 세트를 전송하는 단계와; 그리고 상기 디지털 컴포넌트와의 하나 이상의 상호작용들에 응답하여, 상기 디지털 컴포넌트에 의해 링크되고 상기 제1 콘텐츠 제공자에 의해 제공되는 제2 콘텐츠 페이지를 상기 소프트웨어 라이브러리에 의해 시작하는 단계의 동작들을 포함하는 방법들로 구현될 수 있다. 이 양태의 다른 실시예들은 컴퓨터 저장 디바이스들 상에 인코딩된, 방법들의 동작들을 수행하도록 구성된 대응하는 방법들, 장치, 및 컴퓨터 프로그램들을 포함한다.
이들 및 다른 실시예들은 각각 다음의 특징들 중 하나 이상을 선택적으로 포함할 수 있다.
방법들은, 상기 웹뷰 내에서 실행하는 스크립트에 의해, 디지털 콘텐츠에 대한 요청을 생성하는 단계 - 상기 요청은 상기 기본 계층에 의해 상기 웹뷰에 할당된 웹뷰에 대한 고유 식별자를 포함함 그리고 상기 디지털 콘텐츠에 대한 요청은 상기 환경 신뢰성 데이터 및 상기 고유 식별자를 암호화함으로써 생성되는 암호화된 데이터 세트를 포함함 - 와; 상기 디지털 콘텐츠에 대한 요청을 제2 콘텐츠 제공자에게 제공하는 단계 - 상기 제2 콘텐츠 제공자는 상기 제1 콘텐츠 제공자와 상이함 - 와; 상기 디지털 콘텐츠에 대한 요청을 제2 콘텐츠 제공자에게 제공하는 것에 응답하여, 상기 디지털 컴포넌트 및 상기 고유 식별자를 포함하는 데이터를 상기 제2 콘텐츠 제공자로부터 수신하는 단계와; 상기 콘텐츠 제공자로부터 수신된 데이터가 상기 고유 식별자를 포함하는지 확인하는 단계와; 상기 콘텐츠 제공자로부터 수신된 데이터가 상기 고유 식별자를 포함하는지 확인하는 것에 응답하여, 상기 웹뷰 내에 상기 디지털 컴포넌트를 제공하는 단계를 더 포함할 수 있다.
방법들은, 상기 스크립트에 의해, 환경 신뢰성 데이터에 대한 요청을 상기 통신 브리지를 통해 상기 소프트웨어 라이브러리에 전송하는 단계 - 상기 환경 신뢰성 데이터는 네이티브 애플리케이션 및 클라이언트 디바이스의 신뢰성을 평가하기 위한 상기 네이티브 애플리케이션 및 상기 클라이언트 디바이스에 대한 데이터를 포함함 - 와; 그리고 상기 소프트웨어 라이브러리로부터, 상기 환경 신뢰성 데이터를 상기 통신 브리지를 통해 수신하는 단계를 포함할 수 있다.
방법들에서, 상기 제2 콘텐츠 페이지를 시작하는 단계는 인간 사용자에 의한 상호작용을 나타내는 상기 상호작용 신호들의 평가에 응답하여 실행되는 것을 포함하고, 상기 제2 콘텐츠 페이지를 시작하는 단계는, 웹 브라우저 애플리케이션을 시작하는 단계 및 상기 웹 브라우저 애플리케이션 내의 상기 제2 콘텐츠 페이지에 대한 URL에 액세스하는 단계를 포함한다.
방법들은, 상기 소프트웨어 라이브러리에 의해, 상기 웹뷰의 고유 식별자가 상기 콘텐츠 제공자로부터 수신된 데이터에 포함된 고유 식별자와 일치하는지 결정하는 단계를 포함할 수 있다.
방법들에서, 상기 제1 콘텐츠 제공자에게 상호작용 신호들의 세트를 전송하는 단계는 상기 제1 콘텐츠 제공자에게 상기 환경 신뢰성 데이터를 제공하는 단계를 더 포함하고, 상기 제1 콘텐츠 제공자에게 상호작용 신호들의 세트를 전송하는 단계 및 상기 제1 콘텐츠 제공자에게 상기 환경 신뢰성 데이터를 제공하는 단계는, 상기 상호작용 신호들의 세트 및 상기 환경 신뢰성 데이터를 나타내는 데이터를 상기 제1 콘텐츠 제공자에 의해 제공되고 상기 디지털 컴포넌트에 의해 링크되는 제2 콘텐츠 페이지에 대한 URL(Uniform Resource Locator)에 추가하는 단계를 더 포함한다.
본 명세서에 서술된 주제의 특정 실시예들은 다음 이점들 중 하나 이상을 실현하도록 구현될 수 있다. 예를 들어, 본 명세서에 서술된 기술들은, 웹뷰 내에서 디스플레이를 위해 제공된 디지털 컴포넌트들(예를 들어, 디지털 미디어 아이템들, 디지털 광고들 또는 다른 콘텐츠 페이지들에 대한 링크들)과의 상호작용들이 자동화된 상호작용들(예를 들어, 소프트웨어 결함/버그로 인해 잘못 생성되었을 수 있는 상호작용들 및/또는 악성 코드/엔티티에 의해 인간 사용자에 의해 생성된 것으로 위조되었을 수 있는 상호작용들)이 아닌 실제 인간 사용자에 의한 상호작용들인지를 콘텐츠 제공자들이 확인할 수 있게 한다. 웹뷰들은 네이티브 애플리케이션 내에서 컨테이너 클래스로 구현되며 일반적으로 기본 네이티브 애플리케이션의 기본 계층에서 실행되는 리소스들에 액세스할 수 없다. 그 결과, 기본 계층의 상호작용 확인 리소스들은 웹뷰에 의해 접근할 수 없으며, 따라서, 이러한 리소스들은 기존 시스템들을 사용하여 웹뷰 내에서 디스플레이하기 위해 제공된 디지털 컴포넌트들과의 상호작용들을 확인하는 데 활용할 수 없다. 대조적으로, 본 명세서에서 서술되는 기술들은 기본 계층과 웹뷰 사이에 소프트웨어 브리지(예를 들어, 자바스크립트 브리지)를 구현하고, 웹뷰 내에서 디지털 컴포넌트들과의 상호작용의 확인을 지원하기 위해 기본 계층의 상호작용 확인 리소스들을 활용할 수 있다.
본 명세서에 서술된 기술들은 또한 웹뷰 내에서 악성 코드 또는 기타 원치 않는/요청되지 않은 코드의 실행을 방지한다. 웹뷰들은 네이티브 애플리케이션 내에서 컨테이너 클래스로 구현되기 때문에, 애플리케이션의 네이티브 계층은 일반적으로 웹뷰 내에서 수신 및 디스플레이되는 콘텐츠를 제어할 수 없다. 결과적으로, 웹뷰는 웹뷰(및/또는 웹뷰와 기본 계층 간의 상호 작용들), 기본 네이티브 애플리케이션 및/또는 클라이언트 디바이스를 손상시킬 수 있는 악성 코드 및/또는 콘텐츠를 수신할 수 있다. 예를 들어, 웹뷰가 한 콘텐츠 제공자로부터 콘텐츠를 요청하지만 대신 요청이 전송된 콘텐츠 제공자가 아닌 다른 엔티티(예를 들어, 악의적인 엔티티)로부터 콘텐츠/코드를 수신하는 경우에 발생할 수 있다. 이러한 문제들을 해결하기 위해, 본 명세서에서 서술되는 기술들은, 애플리케이션의 기본 계층에 있는 소프트웨어 리소스들을 활용하여 요청을 받은 콘텐츠 제공자가 콘텐츠를 받은 콘텐츠 제공자와 동일한지를 확인한다.
본 명세서에서 서술된 주제의 하나 이상의 실시예의 세부사항들은 첨부된 도면들 및 아래의 설명에서 서술된다. 주제의 다른 특징들, 양태들 및 이점들은 설명, 도면 및 청구범위로부터 명백해질 것이다.
도 1은 콘텐츠 페이지 및 디지털 컴포넌트들이 클라이언트 디바이스 상의 디스플레이를 위해 배포 및 제공되는 예시적인 환경(100)의 블록도이다.
도 2는 웹뷰 내에 제공된 디지털 컴포넌트들과의 상호작용들이 실제 인간 사용자에 의한 상호작용들인지를 확인할 때 도 1의 컴포넌트들에 의해 수행되는 동작들을 예시하는 블록도이다.
도 3은 웹뷰 내의 디스플레이를 위해 제공된 디지털 컴포넌트가 의도된 콘텐츠 제공자에 의해 제공되는지를 확인할 때 도 1의 컴포넌트들에 의해 수행되는 동작들을 예시하는 블록도이다.
도 4는 웹뷰 내에 제공된 디지털 컴포넌트들과의 상호작용이 실제 인간 사용자에 의한 상호작용들인지를 확인하기 위한 예시적인 프로세스의 흐름도이다.
도 5는 서술된 동작들을 수행하는 데 사용될 수 있는 예시적인 컴퓨터 시스템의 블록도이다.
본 명세서는 일반적으로 네이티브 애플리케이션 내에서 실행되는 웹뷰 내에서 디스플레이를 위해 제공된 콘텐츠 및 웹뷰 내 콘텐츠와의 상호작용을 확인하는 것에 관한 것이다.
콘텐츠 제공자는, 애플리케이션의 웹뷰 내에 디스플레이된 디지털 컴포넌트와의 상호작용이 인간 상호작용의 일부 위조된 표시가 아니라 클라이언트 디바이스의 실제 인간 사용자에 의해 수행된 상호작용임을 확인하기를 원할 수 있다. 아래에 요약되고 본 명세서 전체에 걸쳐 추가로 상세하게 설명된 바와 같이 본 명세서에 서술된 기술들은, 웹뷰에서 스크립트를 실행하여 디지털 컴포넌트들과의 상호작용 신호들을 검출하고 웹뷰와 애플리케이션의 기본 계층 사이의 통신 브리지를 사용하여 웹뷰로부터 애플리케이션의 기본 계층에 있는 소프트웨어 라이브러리로 상호작용 신호들을 전송함으로써 그러한 상호작용 확인을 가능하게 한다. 웹뷰로부터 상호작용 신호들을 수신한 후, 기본 계층의 소프트웨어 라이브러리는 상호작용 신호들(및/또는 추가 환경 신뢰성 데이터(본 명세서에서 추가 서술됨))을 콘텐츠 제공자에게 전송하고, 이는 클라이언트 디바이스의 실제 인간 사용자에 의한 상호작용들(예를 들어, 소프트웨어 결함들/버그들로 인해 잘못 생성되고 그리고/또는 악성 코드/엔티티에 의해 위조되는 자동화된 상호작용들과 반대임)을 나타내는지 여부를 평가할 수 있다.
본 명세서에서 사용되는 바와 같이, 통신 브리지는 네이티브 애플리케이션의 기본 계층과 네이티브 애플리케이션의 웹뷰를 연결하고, 웹뷰와 기본 계층 간의 통신 및 데이터 전송을 가능하게 하는 소프트웨어 브리지이다. 일부 구현들에서, 통신 브리지는 자바스크립트 브리지로 구현될 수 있다. 일부 구현들에서, 자바스크립트 브리지는 클라이언트 디바이스의 운영 체제(OS)에 의해 구현된다. 그러한 OS의 예들은 안드로이드 또는 iOS를 포함할 수 있다. 예를 들어, 자바스크립트 브리지는 OS에서 제공하는 API(Application Programming Interface)를 사용하여 구현할 수 있다.
웹뷰 내에서 상호작용들을 확인하는 것 외에도, 아래에 요약되고 본 명세서 전체에 걸쳐 서술된 기술들은 웹뷰 내에서 디스플레이하기 위해 제공된 콘텐츠가 실제로 그러한 콘텐츠가 요청된 콘텐츠 제공자에 의해 제공되었음을 확인한다. 이 확인은 웹뷰에 의해 원치 않는 그리고/또는 악성 코드의 수신을 방지하기 위해 시도하고, 이는 웹뷰, 네이티브 애플리케이션 및/또는 클라이언트 디바이스가 손상되는 것을 방지할 수 있다. 이러한 콘텐츠 확인을 가능하게 하려면, 애플리케이션의 기본 계층에 있는 소프트웨어 라이브러리는 고유 식별자를 웹뷰에 할당하고 이 고유 식별자를 웹뷰에 환경 신뢰성 데이터(본 명세서에 상세히 설명됨)와 함께 제공한다. 일부 구현들에서, 소프트웨어 라이브러리는 애플리케이션의 웹뷰로 전송하기 전에 고유 식별자 및 환경 신뢰성 데이터를 암호화할 수 있다. 이러한 구현들에서, 웹뷰는 콘텐츠 제공자에 대한 콘텐츠 요청과 함께 이 암호화된 고유 식별자 및 환경 신뢰성 데이터를 제공한다.
콘텐츠 요청을 수신하면, 콘텐츠 제공자는 암호화된 고유 식별자 및 환경 신뢰성을 해독하여 고유 식별자를 추출할 수 있다. 이후, 콘텐츠 제공자는 웹뷰로 전송되는 메시지에 데이터(예를 들어, 디지털 컴포넌트)와 함께 고유 식별자를 포함할 수 있다. 웹뷰 내에서 디스플레이를 위해 디지털 컴포넌트가 제공되기 전에, 웹뷰는 수신된 고유 식별자를 (통신 브리지를 통해) 소프트웨어 라이브러리로 전송하고, 이 소프트웨어 라이브러리는 수신된 고유 식별자가 웹뷰에 할당된 고유 식별자와 동일한지 여부를 확인한다. 수신된 고유 식별자가 웹뷰에 할당된 고유 식별자와 동일한 경우, 소프트웨어 라이브러리는 수신된 디지털 컴포넌트가 웹뷰 내에서 디스플레이를 위해 제공될 수 있다고 결정할 수 있고 디스플레이를 위해 디지털 컴포넌트를 제공하도록 웹뷰에 지시한다. 반면에, 수신된 고유 식별자가 웹뷰에 할당된 고유 식별자와 동일하지 않은 경우, 소프트웨어 라이브러리는 수신된 디지털 컴포넌트가 웹뷰 내에서 디스플레이를 위해 제공될 수 없다고 결정하고 이 디지털 컴포넌트를 디스플레이하지 않도록 웹뷰에 지시한다.
이러한 특징들 및 추가 특징들은 도 1 내지 도 4를 참조하여 아래에서 추가로 서술된다.
도 1은 콘텐츠 페이지들 및 디지털 컴포넌트들이 클라이언트 디바이스 상의 디스플레이를 위해 배포 및 제공되는 예시적인 환경(100)의 블록도이다. 예시적인 환경(100)은 네트워크(104)를 포함한다. 네트워크(104)는 근거리 통신망(LAN), 광역 통신망(WAN), 인터넷 또는 이들의 조합을 포함할 수 있다. 네트워크(104)는 또한 임의의 유형의 유선 및/또는 무선 네트워크, 위성 네트워크들, 케이블 네트워크들, Wi-Fi 네트워크들, 이동 통신 네트워크들(예를 들어, 3G, 4G 등) 또는 이들의 임의의 조합을 포함할 수 있다. 네트워크(104)는 인터넷 프로토콜(IP), 전송 제어 프로토콜(TCP), 사용자 데이터그램 프로토콜(UDP), 또는 다른 유형들의 프로토콜과 같은 패킷 기반 프로토콜 및/또는 데이터그램 기반 프로토콜을 포함하는 통신 프로토콜들을 이용할 수 있다. 네트워크(104)는 스위치들, 라우터들, 게이트웨이들, 액세스 포인트들, 방화벽들, 기지국들, 중계기들 또는 이들의 조합과 같은 네트워크 통신을 용이하게 하고 그리고/또는 네트워크들에 대한 하드웨어 기반을 형성하는 다수의 디바이스들을 더 포함할 수 있다. 네트워크(104)는 클라이언트 디바이스들(102), 콘텐츠 제공자들(106)을 연결한다. 예시적인 환경(100)은 많은 상이한 콘텐츠 플랫폼들(106), 콘텐츠 제공자들(108) 및 클라이언트 디바이스들(102)을 포함할 수 있다.
콘텐츠 플랫폼(106)은 콘텐츠의 배포를 가능하게 하는 컴퓨팅 플랫폼(예를 들어, 도 5를 참조하여 서술된 데이터 처리 장치)이다. 예시적인 콘텐츠 플랫폼들(106)은 검색 엔진들, 소셜 미디어 플랫폼들, 새로운 플랫폼들, 데이터 수집기 플랫폼들, 또는 다른 콘텐츠 공유 플랫폼들을 포함한다. 각각의 콘텐츠 플랫폼(106)은 콘텐츠 플랫폼 서비스 제공자에 의해 운영될 수 있다.
콘텐츠 플랫폼(106)은 자체 콘텐츠를 발행하고 이용 가능하게 할 수 있다. 예를 들어, 콘텐츠 플랫폼(106)은 자신의 뉴스 기사를 발행하는 뉴스 플랫폼일 수 있다. 콘텐츠 플랫폼(106)은 또한 콘텐츠 플랫폼(106)의 일부가 아닌 하나 이상의 콘텐츠 제공자(108)에 의해 제공되는 콘텐츠를 제공할 수 있다. 위의 예에서, 뉴스 플랫폼은 또한 하나 이상의 콘텐츠 제공자(108)에 의해 제공되는 제3자 콘텐츠를 제공할 수 있다. 다른 예로서, 콘텐츠 플랫폼(106)은 그 자신의 콘텐츠 중 어느 것도 발행하지 않지만, 상이한 콘텐츠 제공자들(108)에 의해 제공되는 제3자 콘텐츠를 집계하고 제시하는 데이터 수집기 플랫폼일 수 있다.
본 명세서에서 사용되는 바와 같이, 콘텐츠 제공자(108)는 데이터 처리 장치(도 5를 참조하여 설명됨)일 수 있고, 서버들, 저장소들, 또는 하나 이상의 엔티티에 의해 생성 및/또는 발행된 콘텐츠를 저장하고 이러한 엔티티들로부터의 콘텐츠에 대한 요청에 응답하여 콘텐츠 플랫폼들(106) 및/또는 클라이언트 디바이스들(102)에 콘텐츠를 제공하는 다른 저장 장치들을 포함할 수 있다.
클라이언트 디바이스(102)는 네트워크(104)를 통해 콘텐츠를 요청하고 수신할 수 있는 전자 디바이스이다. 예시적인 클라이언트 디바이스(102)는 개인용 컴퓨터들, 모바일 통신 디바이스들, 디지털 어시스턴트 디바이스들, 및 네트워크(104)를 통해 데이터를 송수신할 수 있는 다른 디바이스들을 포함한다.
예시적인 클라이언트 디바이스(102A)는 일반적으로 디바이스 스토리지(114)와 같은 디바이스 하드웨어 및 애플리케이션들과 같은 소프트웨어 리소스들을 관리하는 일을 주로 담당하는 운영 체제(112)를 포함한다. 클라이언트 디바이스(102A)는 일반적으로 네트워크(104)를 통해 데이터를 전송 또는 수신하고 클라이언트 디바이스(102)에 콘텐츠 페이지들을 표시하는 것을 용이하게 하기 위해 웹 브라우저(116)와 같은 애플리케이션을 포함하지만, 클라이언트 디바이스(102)에서 실행되는 네이티브 애플리케이션들(118)(웹 브라우저들이 아님)은 또한 네트워크(104)를 통해 데이터의 전송 또는 수신을 용이하게 하고, 예를 들어, 이러한 네이티브 애플리케이션들 내에서 실행되는 웹뷰들을 사용하여 클라이언트 디바이스에 콘텐츠 페이지들을 표시하는 것을 용이하게 할 수 있다.
일부 구현들에서, 클라이언트 디바이스(102) 상에서 실행되는 애플리케이션(118)은 기본 계층을 포함하고, 이 기본 계층은 클라이언트 디바이스(102) 상에서 실행을 위해 컴파일된(예를 들어, 운영 체제, 프로세서, 칩셋 등과 같은 클라이언트 디바이스(102A)의 소프트웨어 및 하드웨어 환경을 위해 컴파일된) 실행 가능한 객체일 수 있다. 일부 구현들에서, 기본 계층(122)은 소프트웨어 라이브러리(123)를 더 포함할 수 있다. 본 명세서 전반에 걸쳐 사용되는 바와 같이, 소프트웨어 라이브러리(123)는 하나 이상의 동작을 수행하는 것을 가능하게 하는 기본 네이티브 애플리케이션의 기본 계층에서 실행되는 컴퓨터 실행 가능한 리소스들을 포함할 수 있다. 예를 들어, 그리고 본 명세서 전반에 걸쳐 설명된 바와 같이, 소프트웨어 라이브러리(123)는 웹뷰들에서 제공되는 콘텐츠의 확인 및/또는 웹뷰에서 제공되는 콘텐츠와의 상호작용들을 가능하게 하고 그리고/또는 지원할 수 있다.
일부 구현들에서, 애플리케이션(118)은 또한 웹뷰(126)를 포함하도록 구성될 수 있다. 본 명세서에서 사용되는 것처럼, 웹뷰는, 그래픽 사용자 인터페이스들을 생성하고, 웹 서버들과 통신하며, 기타 웹 클라이언트 기능들을 수행하기 위해 자바스크립트, CSS(Cascading Style Sheet), XML(Extensible Markup Language) 등과 같은 웹 코드 및/또는 기술들을 읽고, 컴파일하고, 실행할 수 있다. 일부 구현들에서, 애플리케이션의 웹뷰는 콘텐츠 제공자들에 의해 제공되는 콘텐츠 페이지들과 함께 스크립트를 로드한다. 예를 들어, 스크립트(127)는 콘텐츠 페이지들과 함께 로드되고 애플리케이션(118)의 웹뷰(126) 내에서 실행되는 자바스크립트 코드일 수 있다.
웹뷰(126)는 콘텐츠 제공자와 통신하여 콘텐츠 제공자로부터 콘텐츠 페이지를 요청할 수 있고, 그러한 콘텐츠를 수신하면, 웹뷰는 디스플레이를 위해 이 콘텐츠를 제공할 수 있다. 클라이언트 디바이스(102A)의 사용자는 웹뷰 내의 수신된 콘텐츠 페이지에 제공된 하나 이상의 디지털 컴포넌트들과 상호작용할 수 있다.
상술한 바와 같이, 종래의 시스템들에서는, 웹뷰들 내에서 제공되는 컨텐츠 및 이러한 컨텐츠와의 상호작용들을 확인할 수 없다. 대조적으로, 도 2 및 3의 다음 서술들은, 웹뷰들 내에서 제공되는 콘텐츠의 확인 및 그러한 콘텐츠와의 상호작용의 확인을 가능하게 한다.
도 2는 웹뷰 내에서 제공되는 디지털 컴포넌트들과의 상호작용들이 실제 인간 사용자에 의한 상호작용들인지를 확인할 때 도 1의 컴포넌트들에 의해 수행되는 동작들을 예시하는 블록도(200)이다.
도 2에 도시된 바와 같이, 클라이언트 디바이스(102A)(예를 들어, 스마트폰)는 콘텐츠 제공자에 의해 제공되고 네이티브 애플리케이션(118)의 웹뷰(126) 내에 디스플레이를 위해 제공되는 제1 콘텐츠 페이지(202)에 액세스한다. 예를 들어, 제1 콘텐츠 페이지(202)는 상이한 콘텐츠 제공자들(108)에 의해 제공되는 뉴스 기사를 포함하는 뉴스 수집기 플랫폼에 의해 제공되는 콘텐츠 페이지일 수 있다. 다른 예로서, 제1 콘텐츠 페이지(202)는 하나 이상의 콘텐츠 제공자(108)에 의해 제공되는 미디어 아이템들을 제시하는 소셜 미디어 플랫폼에 의해 제공되는 콘텐츠 페이지일 수 있다. 도 2에 도시된 바와 같이, 제1 콘텐츠 페이지(202)는 또한 동일한 콘텐츠 제공자 또는 상이한 콘텐츠 제공자에 의해 제공될 수 있는 제2 콘텐츠 페이지에 링크되는 디지털 컴포넌트(204)를 포함할 수 있다. 본 명세서에서 사용된 바와 같이, 디지털 컴포넌트는 예를 들어, 비디오 클립, 오디오 클립, 멀티미디어 클립, 이미지, 텍스트, URL(Uniform Resource Locator) 또는 다른 콘텐츠 단위와 같은 디지털 콘텐츠 또는 디지털 정보의 개별 단위이다.
도 2는 네이티브 애플리케이션(118) 내에서 발생하는 동작들/상호작용들을 또한 도시하며, 특히, 기본 계층(122)과 웹뷰(126) 사이에서 발생하는 동작들/상호작용들을 도시한다. 기본 계층(122)은 클라이언트 디바이스(102A)에서 실행되도록 컴파일된 실행 가능한 객체이며, 운영 체제, 프로세서, 칩셋 등과 같은 클라이언트 디바이스(102A)의 소프트웨어 및 하드웨어 환경에 기반한다. 웹뷰는, 그래픽 사용자 인터페이스들을 생성하고, 웹 서버들과 통신하며, 기타 웹 클라이언트 기능들을 수행하기 위해 자바스크립트, CSS(Cascading Style Sheet), XML(Extensible Markup Language) 등과 같은 웹 코드 및/또는 기술들을 읽고, 컴파일하고, 실행할 수 있다. 위에서 설명한 것처럼, 웹뷰들은 기본 애플리케이션 내에서 컨테이너 클래스로 구현되며 기본 네이티브 애플리케이션의 기본 계층에서 실행되는 리소스에 직접 액세스할 수 없다. 따라서, 웹뷰가 기본 계층의 이러한 리소스들에 액세스하려면, 웹뷰와 기본 계층 간의 통신 브리지가 필요하다(위에서 설명하고 본 명세서 전체에서 더 자세히 설명함).
일부 구현들에서, 웹뷰(126)는 콘텐츠 제공자에 의해 제공되는 콘텐츠 페이지와 함께 스크립트를 로딩한다. 웹뷰는 클라이언트 디바이스(102A)에 콘텐츠 페이지들을 추가로 제시하고, 클라이언트 디바이스(102A)의 사용자가 콘텐츠 페이지에 포함된 디지털 컴포넌트들과 상호작용할 수 있게 한다.
사용자는 디지털 컴포넌트(204)와 상호작용(예를 들어, 클라이언트 디바이스(102A)의 터치 감지 스크린 상의 그/그녀의 손가락 및/또는 스타일러스(206)를 누름)할 수 있다. 이 상호작용에 응답하여, 웹뷰는 디지털 컴포넌트(204)에 의해 링크되는 제2 콘텐츠 페이지를 시작할 수 있다. 어떤 경우들에서, 디지털 컴포넌트(204)와 함께 기록된 상호작용들이 (예를 들어, 애플리케이션 및/또는 웹뷰의 소프트웨어 결함 또는 버그로 인해) 잘못 생성되었을 수 있거나 또는 애플리케이션 내에서 실행되는 악성 코드(예를 들어, 디지털 컴포넌트와의 상호 작용을 위조하기 위해 악의적인 엔터티가 삽입한 코드)에 의해 생성되었을 수 있다.
웹뷰 내의 디지털 컴포넌트(204)와의 상호작용이 클라이언트 디바이스(102A)의 실제 인간 사용자에 의해 수행되는지의 확인을 가능하게 하기 위해, 웹뷰 내에서 실행되는 스크립트는 디지털 컴포넌트와의 상호작용에 의해 생성된 상호작용 신호들의 세트를 검출한다. 스크립트에 의해 검출된 이러한 상호작용 신호들의 예에는 상호작용이 검출된 위치의 좌표들(예를 들어, 터치 감지 화면의 접촉 지점) 및 접촉이 수행된 시간이 포함될 수 있다. 예를 들어, 클라이언트 디바이스(102A)의 사용자가 스타일러스(206)를 사용하여 디지털 컴포넌트(204)와 상호작용하는 경우, 스크립트는 스타일러스(206)가 접촉한 위치의 좌표들 및 접촉이 수행된 시간의 양을 포함할 수 있는 상호작용 신호들을 검출할 수 있다.
상호작용 신호들의 세트를 검출한 후, 웹뷰(126)에서 실행되는 스크립트(127)는 통신 브리지를 통해 애플리케이션의 기본 계층에 있는 소프트웨어 라이브러리에 상호작용 신호들의 세트(210)를 전송한다. 예를 들어, 웹뷰(126)에서 실행 중인 스크립트(127)에 의해 상호작용 신호들(210)의 세트를 검출한 후, 스크립트(127)는 통신 브리지(120)를 통해 기본 계층(122)의 소프트웨어 라이브러리(123)에 상호 작용 신호들이 세트를 전송한다.
일부 구현들에서, 기본 계층(122)의 소프트웨어 라이브러리(123)는, 클라이언트 디바이스(102A) 및/또는 네이티브 애플리케이션(118)의 소프트웨어 및 하드웨어 환경에 관한 신호들을 수집하기 위해, 단독으로 또는 클라이언트 디바이스(102A)의 운영 체제와 함께 동작하도록 구성된다. 수집된 신호들의 예들은, 클라이언트 디바이스에서 실행되는 운영 체제 버전, 클라이언트 디바이스에서 사용되는 칩셋, 네이티브 애플리케이션의 식별자, 네이티브 애플리케이션의 버전, 네이티브 애플리케이션이 공식 애플리케이션 스토어에서 다운로드되었는지 여부, 클라이언트 디바이스의 유형, 클라이언트 디바이스의 모델, 디바이스가 루팅되었거나 탈옥되었는지 여부에 대한 증거, 클라이언트 디바이스의 운영 체제가 마지막으로 업데이트된 시기, 네이티브 애플리케이션(118)이 에뮬레이터에서 실행 중인지 여부 등을 포함하지만, 이에 한정되지 않는다. 신호들은 또한 클라이언트 디바이스(102A)에서 애플리케이션(118)의 실행을 담당할 수 있는 클라이언트 디바이스(102A)의 다른 하드웨어 및/또는 소프트웨어 리소스들에 관한 세부사항을 포함할 수 있다. 집합적으로 환경 신뢰성 데이터(212)로 지칭되는 이들 신호들은, 클라이언트 디바이스(102)의 신뢰성을 결정하기 위해 콘텐츠 제공자에 의해 사용될 수 있다.
일부 구현들에서, 웹뷰(126)로부터 상호작용 신호들의 세트를 수신한 후, 소프트웨어 라이브러리(123)는 상호작용 신호(210)들의 세트를 단독으로 또는 환경 신뢰성 데이터(212)와 조합하여 콘텐츠 제공자(108)에 전송한다. 일부 구현들에서, 소프트웨어 라이브러리는, 콘텐츠 제공자(108)에 의해 제공되고 디지털 컴포넌트(204)에 의해 링크되는 제2 콘텐츠 페이지에 대한 URL(Uniform Resource Locator)에 상호작용 신호들의 세트 및 환경 신뢰성 데이터를 나타내는 데이터를 추가한다.
일부 구현들에서, 소프트웨어 라이브러리는 별도의 웹 브라우저 애플리케이션(예를 들어, 애플리케이션(116))을 시작하고 이전 단락에서 참조된 URL에 액세스할 수 있다. 이 URL로 이동함으로써, 소프트웨어 라이브러리(123)는 콘텐츠 제공자(108)(및 콘텐츠 제공자(108)가 수신함)에게 상호작용 신호들의 세트 및 환경 신뢰성 데이터를 제공한다. 대안적으로, URL은 웹뷰(126) 내에서 시작될 수 있다.
수신된 상호작용 신호들(210) 및/또는 환경 신뢰성 데이터(212)(예를 들어, 콘텐츠 제공자(108)에 의해 제공되는 제2 콘텐츠 페이지에 액세스하는데 사용되는 URL에 포함됨)에 기초하여, 콘텐츠 제공자(108)는 웹뷰의 디지털 컴포넌트(204)와의 상호작용이 클라이언트 디바이스(102A)의 실제 인간 사용자에 의한 것인지를 확인할 수 있다.
콘텐츠 제공자(108)는, 웹뷰(126)에서 수행된 상호작용들이 클라이언트 디바이스(102A)의 실제 인간 사용자에 의해 생성되었는지를 결정하기 위해, 예를 들어, 기계 학습 모델, 규칙 기반 엔진, 또는 상호작용 신호들(210)의 세트 및/또는 환경 신뢰성 데이터(212)를 처리하는 다른 적절한 기술을 구현할 수 있다. 콘텐츠 제공자(108)가 규칙 기반 엔진을 포함하는 구현들에서, 이 엔진은 웹뷰 내의 상호작용들이 실제 인간 사용자에 의한 상호작용들인지 결정하기 위해 일련의 규칙들을 사용하여 상호작용 신호들 및/또는 환경 신뢰성 데이터를 분석할 수 있다. 대안적으로, 콘텐츠 제공자(108)가 기계 학습 모델(예를 들어, 지도 또는 비지도 학습 모델)을 포함하는 구현들에서, 이 모델은 환경 신뢰성 데이터 및/또는 상호작용 신호들을 입력으로 받아들이고 웹뷰 내의 상호작용이 실제 인간 사용자에 의해 수행되었는지에 대한 결정(예를 들어, 이진 결정 또는 가능성 평가)을 출력한다. 예를 들어, 기계 학습 모델은 여러 클라이언트 디바이스들에 대한 훈련 데이터를 사용하여 훈련되는 지도 모델(supervised model)일 수 있고, 여기에는 이러한 각 디바이스에 대한 상호 작용 신호들 및 환경 신뢰성 데이터 및 해당 장치에 대한 웹뷰 내 상호 작용이 실제 인간 사용자에 의한 것인지에 대한 알려진 해당 결정이 포함된다.
웹뷰에서 디지털 컴포넌트와의 상호작용이 실제 인간 사용자에 의한 상호작용인지에 대한 결정에 기초하여, 컨텐츠 제공자(108)는 적어도 다음의 액션들을 취할 수 있다. 콘텐츠 제공자(108)가 상호작용이 실제 인간 사용자에 의한 것이 아니라고 결정하면, 콘텐츠 제공자(108)는 디지털 컴포넌트(204)에 의해 링크된 제2 콘텐츠 페이지에 대한 액세스를 거부할 수 있다. 이것은, 잠재적으로 손상된 디바이스로 콘텐츠가 전달되는 것을 방지함으로써 서버 처리 능력 및 네트워크 대역폭과 같은 콘텐츠 제공자의 리소스를 절약할 수 있다. 서비스 거부, 하나 이상의 클라이언트 디바이스에서 시작되는 DoS 공격의 경우, 이것은 상당한 비용 절감이 될 수 있으며, 콘텐츠 제공자가 하나 이상의 클라이언트 디바이스(102A)로부터의 악의적인 요청들에 압도되는 것을 방지할 수도 있다. 다른 한편으로, 콘텐츠 제공자(108)가 상호작용이 실제 인간 사용자에 의한 것이라고 결정하면, 콘텐츠 제공자(108)는 디지털 컴포넌트(204)에 의해 링크되는 제2 콘텐츠 페이지에 대한 액세스를 허용할 수 있다. 일부 구현들에서, 콘텐츠 제공자(108)가 상호작용이 실제 인간 사용자에 의한 것이 아니라고 결정하면, 콘텐츠 제공자(108)는 그럼에도 불구하고 디지털 컴포넌트(204)에 의해 링크된 제2 콘텐츠 페이지에 대한 액세스를 허용할 수 있지만, 이전에 언급된 바와 같이 잠재적으로 손상된 클라이언트 디바이스(102A)로의 콘텐츠의 전달을 회피함으로써 해당 디바이스/애플리케이션으로 콘텐츠의 후속 전달을 방지하거나 제한하기 위해 클라이언트 장치(102A) 및/또는 상호작용이 시작된 애플리케이션(118)에 대한 세부사항들을 기록할 수 있다.
대안적으로, 웹뷰 내의 상호작용들이 실제 인간 사용자에 의한 상호작용들인지를 확인하는 콘텐츠 제공자(108) 대신에, 그러한 확인은 소프트웨어 라이브러리(123)에 의해 수행될 수 있다. 예를 들어, 네이티브 애플리케이션은 웹뷰에서 수행된 상호작용들이 클라이언트 디바이스의 실제 인간 사용자에 의해 생성되었는지를 결정하기 위한 특정 프레임워크들(이전 단락에서 콘텐츠 제공자(108)를 참조하여 설명됨)을 포함하도록 구성될 수 있다. 그러한 구현들에서, 소프트웨어 라이브러리(123)가 상호작용이 실제 인간 사용자에 의한 것이 아니라고 결정하면, 소프트웨어 라이브러리(123)는 별도의 브라우저 애플리케이션(예를 들어, 애플리케이션(116))을 시작하는 것을 거부할 수 있고 그리고/또는 이 애플리케이션(116) 내의 디지털 컴포넌트(204)에 의해 링크되는 제2 콘텐츠 페이지에 대한 액세스를 방지할 수 있다. 이것은 잠재적으로 손상된 클라이언트 디바이스(102A)의 처리 능력, 메모리 사용, 네트워크 사용 및 배터리 전원과 같은 자원들을 절약할 수 있다. 반면에, 소프트웨어 라이브러리(123)가 상호작용이 실제 인간 사용자에 의한 것이라고 결정하면, 소프트웨어 라이브러리(123)는 애플리케이션(116)을 시작하고 애플리케이션(116) 내의 제2 콘텐츠 페이지로 (예를 들어, 제2 콘텐츠 페이지에 대한 URL에 액세스함으로써) 탐색할 수 있다.
요약하면, 위의 서술은, 웹뷰들에서 디지털 컴포넌트들과의 상호작용들이 클라이언트 디바이스의 실제 인간 사용자들에 의한 상호작용들로서 어떻게 확인되는지를 서술한다. 도 3에 대한 다음 서술은 웹뷰 내에서 디스플레이하기 위해 제공된 디지털 컴포넌트가 의도된 콘텐츠 제공자(즉, 콘텐츠 요청이 전송된 콘텐츠 제공자)에 의해 제공되는 것으로 확인되는 방법을 서술한다.
도 3은 웹뷰 내의 디스플레이를 위해 제공된 디지털 컴포넌트가 의도된 콘텐츠 제공자에 의해 제공되는지를 검증할 때 도 1의 컴포넌트들에 의해 수행되는 동작들을 예시하는 블록도(300)이다.
도 2에서와 같이, 도 3은 네이티브 애플리케이션(118) 내에서 발생하는 동작들/상호작용들을 나타내고, 특히, 기본 계층(122) 및 웹뷰(126) 사이에서 발생하는 동작들/상호작용들을 나타낸다(둘 모두는 도 1 및 도 2를 참조하여 위에서 이미 서술되었다).
웹뷰(126)가 실행될 때, 웹뷰(126)(또는 대안적으로, 웹뷰(126) 내에서 실행되는 스크립트(327))는 콘텐츠 제공자(108)로부터 (요청(316)을 사용하여) 디지털 콘텐츠를 요청한다. 일부 구현들에서, 웹뷰에서 실행되는 스크립트에 의해 생성되는 디지털 콘텐츠에 대한 요청(간단히 "콘텐츠 요청"이라고도 함)은 헤더 및 페이로드 데이터를 포함하는 패킷화된 데이터 요청이다. 콘텐츠 페이지에 대한 요청은, 예를 들어, 디지털 컴포넌트가 요청되고 있는 콘텐츠 제공자의 이름(또는 네트워크 위치) 및 요청하는 디바이스(예를 들어, 클라이언트 디바이스(102))의 이름(또는 네트워크 위치)과 같은 특징들을 지정하는 이벤트 데이터를 포함할 수 있다. 일부 구현들에서, 이벤트 특징들을 지정하는 이벤트 데이터는 디지털 컴포넌트의 위치를 포함할 수 있다. 예를 들어, 애플리케이션(118)의 웹뷰(126)에서 실행되는 스크립트(327)에 의해 생성된 콘텐츠에 대한 요청은 URL 또는 디지털 컴포넌트의 다른 리소스 식별자를 포함할 수 있다.
일부 구현들에서, 스크립트(327)는 콘텐츠에 대한 요청, 웹뷰에 할당된 고유 식별자(UID) 및 환경 신뢰성 데이터를 포함할 수 있다. 이러한 구현들에서, 스크립트는 초기에 통신 브리지(120)를 통해 기본 계층(122)에 상주하는 소프트웨어 라이브러리(123)로 환경 신뢰성 데이터에 대한 요청을 전송한다. 이 요청은 웹뷰의 UID(314)를 포함할 수 있으며, 이는 (예를 들어, 기본 계층(122)에 저장된 웹뷰(126)의 UID를 수신된 UID와 비교함으로써) 환경 신뢰성 데이터에 대한 요청이 실제로 웹뷰(126)에서 비롯된 것인지 확인하기 위해 소프트웨어 라이브러리(123)에 의해 사용할 수 있다. 이러한 확인을 수행할 때, 소프트웨어 라이브러리(123)는 도 2를 참조하여 서술된 바와 같이 환경 신뢰성 데이터를 생성하고, 이 환경 신뢰성 데이터를 통신 브리지(120)를 통해 웹뷰에 제공한다.
일부 구현들에서, 소프트웨어 라이브러리(123)는 암호화된 데이터세트에서 환경 신뢰성 데이터 및 웹뷰 UID를 암호화하고, 소프트웨어 라이브러리(123)가 웹뷰(126)에 제공하는 응답(312)에 이 데이터세트를 포함한다. 소프트웨어 라이브러리는 예를 들어 비대칭 암호화 알고리즘을 사용하여 암호화된 데이터 세트를 생성할 수 있다. 이러한 암호화의 일부로 소프트웨어 라이브러리는 콘텐츠 제공자(108)의 공개 키를 사용하여 암호화된 데이터세트를 생성한다.
스크립트(327)는 콘텐츠(316)에 대한 요청과 함께 이 암호화된 데이터세트를 포함한다. 도면에는 도시되지 않았지만, 디지털 콘텐츠에 대한 요청(316)은 네트워크(104)를 통해 콘텐츠 제공자(108)로 전송된다.
콘텐츠(316)에 대한 요청을 수신하면, 콘텐츠 제공자(108)는 암호화되지 않은 고유 식별자(314a) 및 이벤트 신뢰성 데이터를 획득하기 위해 암호화된 데이터 세트(예를 들어, 콘텐츠 제공자의 개인 키를 사용하여 비대칭 암호화가 사용되는 경우)를 해독할 수 있다. 콘텐츠 제공자(108)는 디지털 컴포넌트(304)(또는 디지털 컴포넌트(304)에 대한 리소스 식별자, 예를 들어 URL) 및 복호화된 고유 식별자(314a)를 포함하는 데이터로 응답(318)을 생성한다. 도 3에 도시되지는 않았지만, 응답(318)은 클라이언트 디바이스(102A) 상에서 실행되는 애플리케이션(118)의 웹뷰(126)에 있는 스크립트(127)로 네트워크(104)를 통해 전송된다.
응답(318)을 수신하면, 스크립트(327)는 응답(318)에 포함된 고유 식별자(UID)(314a)를 통신 브리지(120)를 통해 소프트웨어 라이브러리(123)에 제공한다. 소프트웨어 라이브러리(123)는 UID(314a)를 기본 계층(122)에 저장된 웹뷰(126)에 대한 UID(314)와 비교한다. 이러한 비교/평가에 기초하여 UID가 일치하면, 소프트웨어 라이브러리(123)는 디지털 컴포넌트가 의도된 콘텐츠 제공자(108)(즉, 콘텐츠(316)에 대한 요청이 전송된 콘텐츠 제공자(108))로부터 실제로 수신되었다고 결정한다. 한편, 이 평가에 기초하여 UID가 일치하지 않으면, 소프트웨어 라이브러리(123)는 수신된 디지털 구성요소가 의도된 콘텐츠 제공자(108)(즉, 콘텐츠(316)에 대한 요청을 받은 콘텐츠 제공자(108))가 아닌 다른 엔티티에 의해 제공되었다고 결정한다. 소프트웨어 라이브러리는, 디지털 컴포넌트가 의도된 콘텐츠 제공자(108)로부터 실제로 수신되었는지의 표시를 포함하는 평가 결과들(315)을 생성하고 평가 결과들(315)을 스크립트(327)에 제공한다.
평가 결과들에 기초하여, 스크립트(327)는 디스플레이를 제공하거나 응답(318)에 제공된 디지털 컴포넌트의 디스플레이를 방지하도록 구성될 수 있다. 예를 들어, 응답(318)에서 수신된 디지털 컴포넌트들이 의도된 콘텐츠 제공자(108)로부터 수신되지 않았다는 것을 평가 결과들(315)이 나타내는 경우(즉, 응답(318)의 UID(314a)가 웹뷰(126)의 UID(314)와 동일하지 않은 경우), 스크립트(327)는 웹뷰(126) 내에서 응답(318)에서 수신된 디지털 컴포넌트들 제시하지 않도록 구성될 수 있다. 이것은 클라이언트 디바이스(102A)의 처리 능력, 메모리 사용량 및 배터리 전력과 같은 자원들을 절약할 것이다. 다른 한편으로, 응답(318)에서 수신된 디지털 컴포넌트가 의도된 콘텐츠 제공자(108)로부터 수신되었음을 평가 결과들(315)이 나타내는 경우(즉, 응답(318)의 UID(314a)가 이전 단락에서 서술된 바와 같이 웹뷰(126)의 UID(314)와 동일한 경우), 스크립트(327)는 웹뷰(126) 내에서 응답(318)에 제공된 디지털 컴포넌트를 제시하도록 구성될 수 있다.
도 4는 웹뷰 내에 제공된 디지털 컴포넌트들과의 상호작용들이 실제 인간 사용자에 의한 상호작용들인지를 확인하기 위한 예시적인 프로세스(400)의 흐름도이다. 프로세스(400)의 동작들은 도 1, 도 2 및 도 3에 서술되고 도시된 시스템의 컴포넌트들에 의해 수행되는 것으로 아래에서 서술된다. 프로세스(400)의 동작들은 예시 목적으로만 아래에서 서술된다. 프로세스(400)의 동작들은 임의의 적절한 디바이스 또는 시스템, 예를 들어, 임의의 적절한 데이터 처리 장치에 의해 수행될 수 있다. 프로세스(400)의 동작들은 또한 비일시적 컴퓨터 판독 가능 매체에 저장된 명령어들로서 구현될 수 있다. 명령어들의 실행은 하나 이상의 데이터 처리 장치가 프로세스(400)의 동작들을 수행하게 한다.
디지털 컴포넌트를 포함하는 제1 콘텐츠 페이지는 클라이언트 디바이스에서 시작된 네이티브 애플리케이션에서 실행되는 웹뷰에서 제공된다(410). 일부 구현들에서, 그리고 도 2를 참조하여 위에서 설명된 바와 같이, 클라이언트 디바이스(102A)(예를 들어, 스마트폰)는 웹뷰(126) 내의 디스플레이를 위해 제공되는 제1 콘텐츠 페이지(202)(이는 제1 콘텐츠 제공자(108)에 의해 제공됨)에 액세스한다. 제1 콘텐츠 페이지(202)는 제2 콘텐츠 페이지(이는 제1 콘텐츠 제공자 또는 제2 콘텐츠 제공자(예를 들어, 제1 콘텐츠 제공자 이외의 임의의 다른 콘텐츠 제공자)에 의해 제공될 수 있음)에 링크하는 디지털 (204)를 더 포함한다.
웹뷰 내에서 실행되는 스크립트는 디지털 컴포넌트와의 하나 이상의 상호작용을 나타내는 상호작용 신호들의 세트를 검출한다(420). 일부 구현들에서, 클라이언트 디바이스(102A) 상에서 실행되는 애플리케이션(118)의 웹뷰(126)는 콘텐츠 제공자(108)에 의해 제공되는 콘텐츠 페이지(202)와 함께 스크립트(127)를 로딩한다. 일부 경우들에서, 디지털 컴포넌트(204)와의 상호작용들은 웹뷰에 의해 기록될 수 있다. 웹뷰 내의 디지털 컴포넌트(204)와의 상호작용들(예를 들어, 소프트웨어 결함/버그 및/또는 특정 악성 코드 실행으로 인해 촉발된 상호 작용과 반대임)이 클라이언트 디바이스의 실제 인간 사용자에 의해 수행되는지의 확인을 가능하게 하기 위해, 웹뷰 내에서 실행되는 스크립트는 디지털 컴포넌트와의 검출된 상호작용을 기반으로 상호작용 신호들의 세트를 검출한다(도 2를 참조하여 추가로 설명됨).
애플리케이션의 기본 계층과 웹뷰 사이의 통신 브리지를 통해 웹뷰로부터 기본 계층 내에 상주하는 소프트웨어 라이브러리로 상호작용 신호들의 세트를 전송한다(430). 일부 구현들에서, 상호작용 신호들의 세트를 검출한 후, 웹뷰(126)에서 실행되는 스크립트(127)는 통신 브리지(120)를 통해 애플리케이션(118)의 기본 계층(122)에 있는 소프트웨어 라이브러리(123)에 상호작용 신호들의 세트를 전송한다.
소프트웨어 라이브러리는 평가를 위해 상호작용 신호들의 세트를 제1 콘텐츠 제공자에게 전송한다(440). 일부 구현들에서, (통신 브리지를 통해) 애플리케이션의 웹뷰로부터 상호작용 신호들의 세트를 수신한 후, 애플리케이션의 기본 계층에 있는 소프트웨어 라이브러리는 확인을 위해 상호작용 신호들의 세트를 콘텐츠 제공자에게 전송한다. 예를 들어, 스크립트(127)로부터 상호작용 신호들(210)의 세트를 수신한 후, 소프트웨어 라이브러리(123)는 상호작용 신호들(210)의 세트를 콘텐츠 제공자(108)에 전송한다.
일부 구현들에서, 상호작용 신호들의 세트를 전송하는 것에 더하여, 소프트웨어 라이브러리(123)는 또한 환경 신뢰성 데이터를 수집하고 콘텐츠 제공자(108)로 전송한다(도 2 및 도 3을 참조하여 추가로 서술됨). 도 2를 참조하여 위에서 서술된 바와 같이, 일부 구현들에서, 웹뷰 내의 디지털 컴포넌트와의 상호작용들이 클라이언트 디바이스의 실제 인간 사용자에 의해 생성되었는지를 평가/확인하기 위해, 콘텐츠 제공자는 상호작용 신호들 및/또는 이벤트 신뢰성 데이터를 사용할 수 있다.
소프트웨어 라이브러리에 의해, 디지털 컴포넌트에 의해 링크되는 제2 콘텐츠 페이지를 시작한다(450). 일부 구현들에서, 소프트웨어 라이브러리(123)는 상호작용 신호들의 세트를 나타내는 데이터 및 환경 신뢰성 데이터를 제1 콘텐츠 제공자에 의해 제공되고 디지털 컴포넌트에 의해 링크되는 제2 콘텐츠 페이지에 대한 URL(Uniform Resource Locator)에 추가한다. 소프트웨어 라이브러리(123)는 웹 브라우저 애플리케이션(네이티브 애플리케이션과 상이함)을 시작하고 웹 브라우저 애플리케이션 내의 제2 페이지에 대한 이 URL에 액세스한다.
도 5는 위에서 서술된 동작들을 수행하는데 사용될 수 있는 예시적인 컴퓨터 시스템(500)의 블록도이다. 시스템(500)은 프로세서(510), 메모리(520), 저장 디바이스(530), 및 입출력 디바이스(540)를 포함한다. 컴포넌트들(510, 520, 530, 540) 각각은, 예를 들어, 시스템 버스(550)를 사용하여 상호연결될 수 있다. 프로세서(510)는 시스템(500) 내에서 실행하기 위한 명령어들을 처리할 수 있다. 일부 구현들에서, 프로세서(510)는 단일 스레드 프로세서이다. 다른 구현에서, 프로세서(510)는 다중 스레드 프로세서이다. 프로세서(510)는 메모리(520) 또는 저장 디바이스(530)에 저장된 명령어들을 처리할 수 있다.
메모리(520)는 시스템(500) 내에 정보를 저장한다. 일 구현에서, 메모리(520)는 컴퓨터 판독가능 매체이다. 일부 구현들에서, 메모리(520)는 휘발성 메모리 유닛이다. 다른 구현에서, 메모리(520)는 비휘발성 메모리 유닛이다.
저장 디바이스(530)는 시스템(500)을 위한 대용량 저장 장치를 제공할 수 있다. 일부 구현들에서, 저장 디바이스(530)는 컴퓨터 판독 가능 매체이다. 다양한 상이한 구현들에서, 저장 디바이스(530)는, 예를 들어, 하드 디스크 디바이스, 광 디스크 디바이스, 네트워크를 통해 여러 컴퓨팅 디바이스들(예를 들어, 클라우드 저장 디바이스)에 의해 공유되는 저장 디바이스, 또는 기타 대용량 저장 디바이스를 포함할 수 있다.
입력/출력 디바이스(540)는 시스템(500)에 대한 입력/출력 동작들을 제공한다. 일부 구현들에서, 입력/출력 디바이스(540)는 네트워크 인터페이스 장치(예: 이더넷 카드), 직렬 통신 디바이스(예: RS-232 포트), 및/또는 무선 인터페이스 디바이스(예: 802.11 카드) 중 하나 이상을 포함할 수 있다. 다른 구현에서, 입력/출력 디바이스는 입력 데이터를 수신하고 출력 데이터를 주변 디바이스들(560), 예를 들어, 키보드, 프린터 및 디스플레이 디바이스로 전송하도록 구성된 드라이버 디바이스들을 포함할 수 있다. 그러나, 모바일 컴퓨팅 디바이스들, 모바일 통신 디바이스들, 셋톱 박스 텔레비전 클라이언트 디바이스들 등과 같은 다른 구현도 사용될 수 있다.
예시적인 처리 시스템이 도 5에서 서술되었지만, 본 명세서에 서술된 주제 및 기능적 동작들의 구현들은, 다른 유형들의 디지털 전자 회로, 또는 본 명세서에 개시된 구조 및 그 구조적 등가물을 포함하는 컴퓨터 소프트웨어, 펌웨어 또는 하드웨어에서, 또는 이들 중 하나 이상의 조합으로 구현될 수 있다.
본 명세서에 서술된 주제 및 동작들의 실시예들은 디지털 전자 회로, 컴퓨터 소프트웨어 또는 펌웨어, 본 명세서 및 그 구조적 등가물에 개시된 구조들을 포함하는 컴퓨터 하드웨어, 또는 이들 중 하나 이상의 조합으로 구현될 수 있다. 본 명세서에 서술된 주제의 실시예들은 하나 이상의 컴퓨터 프로그램, 즉, 데이터 처리 장치에 의해 실행되거나 그 동작을 제어하기 위해 하나 이상의 컴퓨터 프로그램, 즉, 컴퓨터 저장 매체 상에 인코딩된 컴퓨터 프로그램 명령어들의 하나 이상의 모듈로서 구현될 수 있다. 대안적으로 또는 추가로, 프로그램 명령어들은 인공적으로 생성된 전파 신호 (예: 기계 생성 전기, 광학 또는 전자기 신호)에 인코딩될 수 있으며, 이는 데이터 처리 장치에 의한 실행을 위해 적절한 수신기 장치로 전송하기 위한 정보를 인코딩하도록 생성된다. 컴퓨터 저장 매체는 컴퓨터 판독 가능 저장 장치, 컴퓨터 판독 가능 저장 기판, 랜덤 또는 직렬 액세스 메모리 어레이 또는 장치, 또는 이들 중 하나 이상의 조합일 수 있거나 또는 이에 포함될 수 있다. 더욱이, 컴퓨터 저장 매체는 전파 신호가 아니지만, 컴퓨터 저장 매체는 인위적으로 생성된 전파 신호로 인코딩된 컴퓨터 프로그램 명령어들의 소스 또는 목적지가 될 수 있다. 컴퓨터 저장 매체는 또한 하나 이상의 개별 물리적 컴포넌트들 또는 매체(예를 들어, 다중 CD, 디스크들 또는 기타 저장 디바이스들)이거나 이에 포함될 수 있다.
본 명세서에서 서술되는 동작들은 하나 이상의 컴퓨터 판독 가능 저장 장치에 저장되거나 다른 소스들로부터 수신된 데이터에 대해 데이터 처리 장치에 의해 수행되는 동작들로 구현될 수 있다.
용어 "데이터 처리 장치"는 데이터 처리를 위한 모든 종류의 장치, 디바이스 및 기계를 포함하며, 예를 들어 프로그램 가능한 프로세서, 컴퓨터, 칩 시스템상의 시스템, 또는 전술한 것들의 다수 또는 조합을 포함한다. 이 장치는 특수 목적 논리 회로, 예를 들어, FPGA(필드 프로그래밍 가능 게이트 어레이) 또는 ASIC(애플리케이션 특정 집적 회로)를 포함할 수 있다. 장치는 또한 하드웨어에 추가하여 문제의 컴퓨터 프로그램에 대한 실행 환경을 생성하는 코드(예: 프로세서 펌웨어, 프로토콜 스택, 데이터베이스 관리 시스템, 운영 체제, 플랫폼 간 런타임 환경, 가상 머신 또는 이들 중 하나 이상의 조합을 구성하는 코드)를 포함할 수 있다. 장치 및 실행 환경은 웹 서비스들, 분산 컴퓨팅 및 그리드 컴퓨팅 인프라와 같은 다양한 컴퓨팅 모델 인프라들을 실현할 수 있다.
컴퓨터 프로그램(프로그램, 소프트웨어, 소프트웨어 애플리케이션, 스크립트 또는 코드로도 알려짐)은 컴파일 또는 해석된 언어, 선언적 또는 절차적 언어를 포함하는 임의의 형태의 프로그래밍 언어로 작성될 수 있고, 독립 실행형 프로그램이나 모듈, 컴포넌트, 서브루틴, 객체 또는 컴퓨팅 환경에서 사용하기에 적합한 기타 단위를 포함하여 모든 형태로 배포될 수 있다. 컴퓨터 프로그램은 파일 시스템 내의 파일에 대응할 수 있지만, 반드시 그렇지는 않다. 프로그램은 다른 프로그램 또는 데이터를 보유하는 파일의 일부, 예를 들어 마크 업 언어 문서에 저장된 하나 이상의 스크립트, 해당 프로그램 전용 단일 파일 또는 여러 조정 파일, 예컨대 하나 이상의 모듈, 하위 프로그램 또는 코드 부분을 저장하는 파일에 저장될 수 있다. 컴퓨터 프로그램은 하나의 컴퓨터 또는 한 사이트에 위치하거나 여러 사이트에 분산되고 통신 네트워크로 상호 연결된 여러 컴퓨터에서 실행되도록 배포될 수 있다.
본 명세서에 서술된 프로세스 및 논리 흐름은 입력 데이터에 대해 작동하고 출력을 생성함으로써 기능을 수행하기 위해 하나 이상의 컴퓨터 프로그램을 실행하는 하나 이상의 프로그래밍 가능한 컴퓨터에 의해 수행될 수 있다. 프로세스들 및 논리 흐름들은 또한 특수 목적 논리 회로, 예를 들어, FPGA(필드 프로그래밍 가능 게이트 어레이) 또는 ASIC(애플리케이션 특정 집적 회로)으로 구현될 수 있다.
컴퓨터 프로그램의 실행에 적합한 프로세서들은 예를 들어 범용 및 특수 목적 마이크로프로세서 모두를 포함한다. 일반적으로, 프로세서는 읽기 전용 메모리나 랜덤 액세스 메모리 또는 둘 다에서 명령과 데이터를 수신할 것이다. 컴퓨터의 필수 요소들은 명령어들에 따라 동작들을 수행하기 위한 프로세서와 명령어들 및 데이터를 저장하기 위한 하나 이상의 메모리 디바이스이다. 일반적으로, 컴퓨터는 또한 데이터를 저장하기 위한 하나 이상의 대용량 저장 장치, 예를 들어, 자기, 광자기 디스크 또는 광 디스크로부터 데이터를 수신하거나 이들로 데이터를 전송하거나 둘 모두를 포함하거나 작동 가능하게 연결될 것이다. 그러나, 컴퓨터에는 그러한 디바이스들이 필요하지 않다. 또한, 컴퓨터는 다른 디바이스, 예를 들어, 이동 전화, 개인 휴대 정보 단말기(PDA), 모바일 오디오 또는 비디오 플레이어, 게임 콘솔, GPS(Global Positioning System) 수신기 또는 휴대용 저장 장치(예를 들어, USB(Universal Serial Bus) 플래시 드라이브) 등에 내장될 수 있다. 컴퓨터 프로그램 명령어들 및 데이터를 저장하기에 적합한 디바이스들은 모든 형태의 비휘발성 메모리, 매체 및 메모리 장치, 예를 들어, EPROM, EEPROM 및 플래시 메모리 장치와 같은 반도체 메모리 장치; 자기 디스크, 예를 들어, 내부 하드 디스크 또는 착탈가능한 디스크들; 자기-광 디스크; 및 CD ROM 및 DVD-ROM 디스크를 포함한다. 프로세서와 메모리는 특수 목적 논리 회로에 의해 보완되거나 통합될 수 있다.
사용자와의 상호작용을 제공하기 위해, 본 명세서에 서술된 주제의 실시예들은, 사용자에게 정보를 디스플레이하기 위한 디스플레이 디바이스, 예를 들어, CRT(음극선관) 또는 LCD(액정 디스플레이) 모니터 및 키보드 그리고 사용자가 컴퓨터에 입력을 제공할 수 있는 마우스 또는 트랙볼과 같은 포인팅 장치를 갖는 컴퓨터에서 구현될 수 있다. 다른 종류의 디바이스들을 사용하여 사용자와의 상호 작용도 제공할 수 있다. 예를 들어, 사용자에게 제공되는 피드백은 시각적 피드백, 청각적 피드백 또는 촉각적 피드백과 같은 임의의 형태의 감각적 피드백일 수 있고, 그리고 사용자로부터의 입력은 음향, 음성 또는 촉각 입력을 포함한 모든 형태로 수신될 수 있다. 또한, 컴퓨터는 사용자가 사용하는 장치로 문서들을 보내고 장치로부터 문서들을 수신하여, 예를 들어, 웹 브라우저에서 수신된 요청들에 대한 응답으로 사용자 클라이언트 디바이스의 웹 브라우저에 웹 페이지들을 전송하여 사용자와 상호작용할 수 있다.
본 명세서에 서술된 주제의 실시예들은, 백엔드 컴포넌트(예: 데이터 서버)를 포함하거나, 미들웨어 컴포넌트(예: 애플리케이션 서버)를 포함하거나 또는 프론트엔드 컴포넌트, 예를 들어, 사용자가 본 명세서에 서술된 주제의 구현과 상호작용할 수 있는 그래픽 사용자 인터페이스 또는 웹 브라우저를 갖는 클라이언트 컴퓨터 또는 하나 이상의 백엔드 컴포넌트, 미들웨어 컴포넌트 또는 프론트엔드 컴포넌트의 임의의 조합을 포함하는 컴퓨팅 시스템에서 구현될 수 있다. 시스템의 컴포넌트들은 통신 네트워크와 같은 디지털 데이터 통신의 임의의 형태 또는 매체에 의해 상호 연결될 수 있다. 통신 네트워크의 예들은 근거리 통신망("LAN") 및 광역 통신망("WAN"), 네트워크 간(예: 인터넷) 및 P2P 네트워크(예: Ad Hoc P2P 네트워크)를 포함한다.
컴퓨팅 시스템은 클라이언트들 및 서버들을 포함할 수 있다. 클라이언트와 서버는 일반적으로 서로 멀리 떨어져 있으며 일반적으로 통신 네트워크를 통해 상호 작용한다. 클라이언트와 서버의 관계는 각각의 컴퓨터에서 실행되고 서로 클라이언트-서버 관계를 갖는 컴퓨터 프로그램 덕분에 발생한다. 일부 실시예들에서, 서버는 데이터(예를 들어, HTML 페이지)를 클라이언트 장치로 (예를 들어, 클라이언트 장치에 데이터를 표시하고 클라이언트 장치와 상호작용하는 사용자로부터 사용자 입력을 수신하기 위해) 전송한다. 클라이언트 디바이스에서 생성된 데이터(예를 들어, 사용자 상호 작용의 결과)는 서버에서 클라이언트 장치로부터 수신될 수 있다.
본 명세서는 많은 구체적인 구현 세부 사항을 포함하지만, 이는 임의의 발명 또는 청구될 수 있는 것의 범위에 대한 제한으로 해석되어서는 안 되며, 오히려 특정 발명의 특정 실시예에 특정한 특징들의 서술로서 해석되어야 한다. 별도의 실시예와 관련하여 본 명세서에 설명된 특정 특징들은 단일 실시예에서 조합하여 구현될 수도 있다. 역으로, 단일 실시예의 맥락에서 서술된 다양한 특징들은 또한 개별적으로 또는 임의의 적절한 하위 조합으로 다중 실시예에서 구현될 수 있다. 더욱이, 특징들이 특정 조합으로 작용하는 것으로 위에서 설명될 수 있고 심지어 초기에 그렇게 청구될 수도 있지만, 청구된 조합의 하나 이상의 특징이 어떤 경우에는 조합에서 제거될 수 있으며, 청구된 조합은 하위 조합 또는 하위 조합의 변형에 관한 것일 수 있다.
유사하게, 작업들이 이 도면에서 특정 순서로 도시되어 있지만, 이는 바람직한 결과들을 달성하기 위해 이러한 작업들이 표시된 특정 순서 또는 순차적인 순서로 수행되거나 모든 예시된 작업들이 수행되어야 함을 요구하는 것으로 이해되어서는 안된다. 특정 상황들에서는, 멀티태스킹과 병렬 처리가 유리할 수 있다. 또한, 상술한 실시예들에서 다양한 시스템 컴포너트들의 분리가 모든 실시예들에서 그러한 분리를 요구하는 것으로 이해되어서는 안되며, 서술된 프로그램 컴포넌트들 및 시스템들은 일반적으로 단일 소프트웨어 제품에 함께 통합되거나 여러 소프트웨어 제품에 패키징될 수 있음을 이해해야 한다.
따라서, 주제의 특정 실시예들이 서술되었다. 다른 실시예들은 다음 청구항의 범위 내에 있다. 어떤 경우에는 청구범위에 기술된 액션들이 다른 순서로 수행될 수 있으며 여전히 바람직한 결과를 얻을 수 있다. 또한, 첨부된 도면들에 도시된 프로세스는 바람직한 결과를 달성하기 위해 도시된 특정 순서 또는 순차적인 순서를 반드시 필요로 하는 것은 아니다. 특정 구현들에서, 멀티태스킹 및 병렬 처리가 유리할 수 있다.

Claims (20)

  1. 컴퓨터로 구현되는 방법으로서,
    클라이언트 디바이스 상에서 시작된 애플리케이션의 일부에서 실행되는 웹뷰 내에, 디지털 컴포넌트를 포함하는 제1 콘텐츠 페이지를 제공하는 단계와;
    상기 웹뷰 내에서 실행하는 스크립트에 의해, 상기 디지털 컴포넌트와의 하나 이상의 상호작용들을 나타내는 상호작용 신호들의 세트를 검출하는 단계와;
    상기 애플리케이션의 기본 계층과 상기 웹뷰 사이의 통신 브리지를 통해, 상기 웹뷰로부터 상기 기본 계층 내에 상주하는 소프트웨어 라이브러리로 상호작용 신호들의 세트를 전송하는 단계와;
    상기 소프트웨어 라이브러리에 의해, 상기 상호작용 신호들의 세트가 자동화된 상호작용 대신에 상기 디지털 컴포넌트와 상기 클라이언트 디바이스의 인간 사용자에 의한 상호작용들을 나타내는지의 평가를 위해 제1 콘텐츠 제공자에게 상호작용 신호들의 세트를 전송하는 단계와; 그리고
    상기 디지털 컴포넌트와의 하나 이상의 상호작용들에 응답하여, 상기 디지털 컴포넌트에 의해 링크되고 상기 제1 콘텐츠 제공자에 의해 제공되는 제2 콘텐츠 페이지를 상기 소프트웨어 라이브러리에 의해 시작하는 단계를 포함하는 것을 특징으로 하는
    컴퓨터로 구현되는 방법.
  2. 제1항에 있어서,
    상기 웹뷰 내에 디지털 컴포넌트를 제공하는 단계는:
    상기 웹뷰 내에서 실행하는 스크립트에 의해, 디지털 콘텐츠에 대한 요청을 생성하는 단계 - 상기 요청은 상기 기본 계층에 의해 상기 웹뷰에 할당된 웹뷰에 대한 고유 식별자를 포함함 - 와;
    상기 디지털 콘텐츠에 대한 요청을 제2 콘텐츠 제공자에게 제공하는 단계 - 상기 제2 콘텐츠 제공자는 상기 제1 콘텐츠 제공자와 상이함 - 와;
    상기 디지털 콘텐츠에 대한 요청을 제2 콘텐츠 제공자에게 제공하는 것에 응답하여, 상기 디지털 컴포넌트 및 상기 고유 식별자를 포함하는 데이터를 상기 제2 콘텐츠 제공자로부터 수신하는 단계와;
    상기 콘텐츠 제공자로부터 수신된 데이터가 상기 고유 식별자를 포함하는지 확인하는 단계와;
    상기 콘텐츠 제공자로부터 수신된 데이터가 상기 고유 식별자를 포함하는지 확인하는 것에 응답하여, 상기 웹뷰 내에 상기 디지털 컴포넌트를 제공하는 단계를 포함하는 것을 특징으로 하는
    컴퓨터로 구현되는 방법.
  3. 제1항 또는 제2항에 있어서,
    상기 제2 콘텐츠 페이지를 시작하는 단계는, 인간 사용자에 의한 상호작용을 나타내는 상기 상호작용 신호들의 평가에 응답하여 실행되는 것을 특징으로 하는
    컴퓨터로 구현되는 방법.
  4. 제2항 또는 제3항에 있어서,
    상기 스크립트에 의해, 환경 신뢰성 데이터에 대한 요청을 상기 통신 브리지를 통해 상기 소프트웨어 라이브러리에 전송하는 단계 - 상기 환경 신뢰성 데이터는 네이티브 애플리케이션 및 클라이언트 디바이스의 신뢰성을 평가하기 위한 상기 네이티브 애플리케이션 및 상기 클라이언트 디바이스에 대한 데이터를 포함함 - 와;
    상기 소프트웨어 라이브러리로부터, 상기 환경 신뢰성 데이터를 상기 통신 브리지를 통해 수신하는 단계를 더 포함하는 것을 특징으로 하는
    컴퓨터로 구현되는 방법.
  5. 제2항 내지 제4항 중 어느 한 항에 있어서,
    상기 콘텐츠 제공자로부터 수신된 데이터가 상기 고유 식별자를 포함하는지 확인하는 단계는:
    상기 소프트웨어 라이브러리에 의해, 상기 웹뷰의 고유 식별자가 상기 콘텐츠 제공자로부터 수신된 데이터에 포함된 고유 식별자와 일치하는지 결정하는 단계를 포함하는 것을 특징으로 하는
    컴퓨터로 구현되는 방법.
  6. 제4항 또는 제5항에 있어서,
    상기 디지털 콘텐츠에 대한 요청은, 상기 환경 신뢰성 데이터 및 상기 고유 식별자를 암호화함으로써 생성되는 암호화된 데이터 세트를 포함하는 것을 특징으로 하는
    컴퓨터로 구현되는 방법.
  7. 제4항 내지 제6항 중 어느 한 항에 있어서,
    제1 콘텐츠 제공자에게 상호작용 신호들의 세트를 전송하는 단계는, 상기 제1 콘텐츠 제공자에게 상기 환경 신뢰성 데이터를 제공하는 단계를 더 포함하는 것을 특징으로 하는
    컴퓨터로 구현되는 방법.
  8. 제7항에 있어서,
    상기 제1 콘텐츠 제공자에게 상호작용 신호들의 세트를 전송하는 단계 및 상기 제1 콘텐츠 제공자에게 상기 환경 신뢰성 데이터를 제공하는 단계는:
    상기 상호작용 신호들의 세트 및 상기 환경 신뢰성 데이터를 나타내는 데이터를 상기 제1 콘텐츠 제공자에 의해 제공되고 상기 디지털 컴포넌트에 의해 링크되는 제2 콘텐츠 페이지에 대한 URL(Uniform Resource Locator)에 추가하는 단계를 포함하는 것을 특징으로 하는
    컴퓨터로 구현되는 방법.
  9. 제1항 내지 제8항 중 어느 한 항에 있어서,
    상기 제2 콘텐츠 페이지를 시작하는 단계는, 웹 브라우저 애플리케이션을 시작하는 단계 및 상기 웹 브라우저 애플리케이션 내의 상기 제2 콘텐츠 페이지에 대한 URL에 액세스하는 단계를 포함하는 것을 특징으로 하는
    컴퓨터로 구현되는 방법.
  10. 시스템으로서,
    클라이언트 디바이스 상에서 시작된 애플리케이션의 일부에서 실행되는 웹뷰 내에, 디지털 컴포넌트를 포함하는 제1 콘텐츠 페이지를 제공하는 수단과;
    상기 웹뷰 내에서 실행하는 스크립트에 의해, 상기 디지털 컴포넌트와의 하나 이상의 상호작용들을 나타내는 상호작용 신호들의 세트를 검출하는 수단과;
    상기 애플리케이션의 기본 계층과 상기 웹뷰 사이의 통신 브리지를 통해, 상기 웹뷰로부터 상기 기본 계층 내에 상주하는 소프트웨어 라이브러리로 상호작용 신호들의 세트를 전송하는 수단과;
    상기 소프트웨어 라이브러리에 의해, 상기 상호작용 신호들의 세트가 자동화된 상호작용 대신에 상기 디지털 컴포넌트와 상기 클라이언트 디바이스의 인간 사용자에 의한 상호작용들을 나타내는지의 평가를 위해 제1 콘텐츠 제공자에게 상호작용 신호들의 세트를 전송하는 수단과; 그리고
    상기 디지털 컴포넌트와의 하나 이상의 상호작용들에 응답하여, 상기 디지털 컴포넌트에 의해 링크되고 상기 제1 콘텐츠 제공자에 의해 제공되는 제2 콘텐츠 페이지를 상기 소프트웨어 라이브러리에 의해 시작하는 수단을 포함하는 것을 특징으로 하는
    시스템.
  11. 제10항에 있어서,
    상기 웹뷰 내에 디지털 컴포넌트를 제공하는 수단은:
    상기 웹뷰 내에서 실행하는 스크립트에 의해, 디지털 콘텐츠에 대한 요청을 생성하는 수단 - 상기 요청은 상기 기본 계층에 의해 상기 웹뷰에 할당된 웹뷰에 대한 고유 식별자를 포함함 - 과;
    상기 디지털 콘텐츠에 대한 요청을 제2 콘텐츠 제공자에게 제공하는 수단 - 상기 제2 콘텐츠 제공자는 상기 제1 콘텐츠 제공자와 상이함 - 과;
    상기 디지털 콘텐츠에 대한 요청을 제2 콘텐츠 제공자에게 제공하는 것에 응답하여, 상기 디지털 컴포넌트 및 상기 고유 식별자를 포함하는 데이터를 상기 제2 콘텐츠 제공자로부터 수신하는 수단과;
    상기 콘텐츠 제공자로부터 수신된 데이터가 상기 고유 식별자를 포함하는지 확인하는 수단과;
    상기 콘텐츠 제공자로부터 수신된 데이터가 상기 고유 식별자를 포함하는지 확인하는 것에 응답하여, 상기 웹뷰 내에 상기 디지털 컴포넌트를 제공하는 수단을 포함하는 것을 특징으로 하는
    시스템.
  12. 제10항 또는 제11항에 있어서,
    상기 제2 콘텐츠 페이지를 시작하는 수단은, 인간 사용자에 의한 상호작용을 나타내는 상기 상호작용 신호들의 평가에 응답하여 실행되는 것을 특징으로 하는
    시스템.
  13. 제11항 또는 제12항에 있어서,
    상기 스크립트에 의해, 환경 신뢰성 데이터에 대한 요청을 상기 통신 브리지를 통해 상기 소프트웨어 라이브러리에 전송하는 수단 - 상기 환경 신뢰성 데이터는 네이티브 애플리케이션 및 클라이언트 디바이스의 신뢰성을 평가하기 위한 상기 네이티브 애플리케이션 및 상기 클라이언트 디바이스에 대한 데이터를 포함함 - 와;
    상기 소프트웨어 라이브러리로부터, 상기 환경 신뢰성 데이터를 상기 통신 브리지를 통해 수신하는 수단을 더 포함하는 것을 특징으로 하는
    시스템.
  14. 제11항 내지 제13항 중 어느 한 항에 있어서,
    상기 콘텐츠 제공자로부터 수신된 데이터가 상기 고유 식별자를 포함하는지 확인하는 수단은:
    상기 소프트웨어 라이브러리에 의해, 상기 웹뷰의 고유 식별자가 상기 콘텐츠 제공자로부터 수신된 데이터에 포함된 고유 식별자와 일치하는지 결정하는 수단을 포함하는 것을 특징으로 하는
    시스템.
  15. 제13항 또는 제14항에 있어서,
    상기 디지털 콘텐츠에 대한 요청은, 상기 환경 신뢰성 데이터 및 상기 고유 식별자를 암호화함으로써 생성되는 암호화된 데이터 세트를 포함하는 것을 특징으로 하는
    시스템.
  16. 제13항 내지 제15항 중 어느 한 항에 있어서,
    제1 콘텐츠 제공자에게 상호작용 신호들의 세트를 전송하는 수단은, 상기 제1 콘텐츠 제공자에게 상기 환경 신뢰성 데이터를 제공하는 수단을 더 포함하는 것을 특징으로 하는
    시스템.
  17. 제16항에 있어서,
    상기 제1 콘텐츠 제공자에게 상호작용 신호들의 세트를 전송하는 수단 및 상기 제1 콘텐츠 제공자에게 상기 환경 신뢰성 데이터를 제공하는 수단은:
    상기 상호작용 신호들의 세트 및 상기 환경 신뢰성 데이터를 나타내는 데이터를 상기 제1 콘텐츠 제공자에 의해 제공되고 상기 디지털 컴포넌트에 의해 링크되는 제2 콘텐츠 페이지에 대한 URL에 추가하는 수단을 포함하는 것을 특징으로 하는
    시스템.
  18. 제10항 내지 제17항 중 어느 한 항에 있어서,
    상기 제2 콘텐츠 페이지를 시작하는 수단은, 웹 브라우저 애플리케이션을 시작하는 수단 및 상기 웹 브라우저 애플리케이션 내의 상기 제2 콘텐츠 페이지에 대한 URL에 액세스하는 수단을 포함하는 것을 특징으로 하는
    시스템.
  19. 하나 이상의 데이터 처리 장치에 의해 실행될 때, 상기 하나 이상의 데이터 처리 장치가 동작들을 수행하도록 하는 명령어들을 저장하는 비일시적 컴퓨터 판독 가능 매체로서,
    상기 동작들은:
    클라이언트 디바이스 상에서 시작된 애플리케이션의 일부에서 실행되는 웹뷰 내에, 디지털 컴포넌트를 포함하는 제1 콘텐츠 페이지를 제공하는 단계와;
    상기 웹뷰 내에서 실행하는 스크립트에 의해, 상기 디지털 컴포넌트와의 하나 이상의 상호작용들을 나타내는 상호작용 신호들의 세트를 검출하는 단계와;
    상기 애플리케이션의 기본 계층과 상기 웹뷰 사이의 통신 브리지를 통해, 상기 웹뷰로부터 상기 기본 계층 내에 상주하는 소프트웨어 라이브러리로 상호작용 신호들의 세트를 전송하는 단계와;
    상기 소프트웨어 라이브러리에 의해, 상기 상호작용 신호들의 세트가 자동화된 상호작용 대신에 상기 디지털 컴포넌트와 상기 클라이언트 디바이스의 인간 사용자에 의한 상호작용들을 나타내는지의 평가를 위해 제1 콘텐츠 제공자에게 상호작용 신호들의 세트를 전송하는 단계와; 그리고
    상기 디지털 컴포넌트와의 하나 이상의 상호작용들에 응답하여, 상기 디지털 컴포넌트에 의해 링크되고 상기 제1 콘텐츠 제공자에 의해 제공되는 제2 콘텐츠 페이지를 상기 소프트웨어 라이브러리에 의해 시작하는 단계를 포함하는 것을 특징으로 하는
    비일시적 컴퓨터 판독 가능 매체.
  20. 제19항에 있어서,
    상기 웹뷰 내에 디지털 컴포넌트를 제공하는 단계는:
    상기 웹뷰 내에서 실행하는 스크립트에 의해, 디지털 콘텐츠에 대한 요청을 생성하는 단계 - 상기 요청은 상기 기본 계층에 의해 상기 웹뷰에 할당된 웹뷰에 대한 고유 식별자를 포함함 - 와;
    상기 디지털 콘텐츠에 대한 요청을 제2 콘텐츠 제공자에게 제공하는 단계 - 상기 제2 콘텐츠 제공자는 상기 제1 콘텐츠 제공자와 상이함 - 와;
    상기 디지털 콘텐츠에 대한 요청을 제2 콘텐츠 제공자에게 제공하는 것에 응답하여, 상기 디지털 컴포넌트 및 상기 고유 식별자를 포함하는 데이터를 상기 제2 콘텐츠 제공자로부터 수신하는 단계와;
    상기 콘텐츠 제공자로부터 수신된 데이터가 상기 고유 식별자를 포함하는지 확인하는 단계와;
    상기 콘텐츠 제공자로부터 수신된 데이터가 상기 고유 식별자를 포함하는지 확인하는 것에 응답하여, 상기 웹뷰 내에 상기 디지털 컴포넌트를 제공하는 단계를 포함하는 것을 특징으로 하는
    비일시적 컴퓨터 판독 가능 매체.
KR1020217025344A 2020-06-24 2020-06-24 웹뷰 내에서 콘텐츠 및 상호작용들을 확인 KR20220000899A (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2020/039329 WO2021262159A1 (en) 2020-06-24 2020-06-24 Verifying content and interactions within webviews

Publications (1)

Publication Number Publication Date
KR20220000899A true KR20220000899A (ko) 2022-01-04

Family

ID=71728874

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217025344A KR20220000899A (ko) 2020-06-24 2020-06-24 웹뷰 내에서 콘텐츠 및 상호작용들을 확인

Country Status (6)

Country Link
US (1) US20230124545A1 (ko)
EP (1) EP3956787A1 (ko)
JP (2) JP7277593B2 (ko)
KR (1) KR20220000899A (ko)
CN (1) CN114127715A (ko)
WO (1) WO2021262159A1 (ko)

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080147456A1 (en) 2006-12-19 2008-06-19 Andrei Zary Broder Methods of detecting and avoiding fraudulent internet-based advertisement viewings
JP4459250B2 (ja) 2007-04-20 2010-04-28 富士通株式会社 送信方法、画像送信システム、送信装置及びプログラム
US8751628B2 (en) * 2009-05-05 2014-06-10 Suboti, Llc System and method for processing user interface events
US9582598B2 (en) * 2011-07-05 2017-02-28 Visa International Service Association Hybrid applications utilizing distributed models and views apparatuses, methods and systems
US9313213B2 (en) * 2012-10-18 2016-04-12 White Ops, Inc. System and method for detecting classes of automated browser agents
US11003748B2 (en) 2015-12-28 2021-05-11 Unbotify Ltd. Utilizing behavioral features to identify bot
US20200242251A1 (en) * 2019-01-24 2020-07-30 Citrix Systems, Inc. Providing application security, validation and profiling to an application

Also Published As

Publication number Publication date
US20230124545A1 (en) 2023-04-20
CN114127715A (zh) 2022-03-01
JP2023120183A (ja) 2023-08-29
EP3956787A1 (en) 2022-02-23
JP2022541084A (ja) 2022-09-22
WO2021262159A1 (en) 2021-12-30
JP7277593B2 (ja) 2023-05-19

Similar Documents

Publication Publication Date Title
KR102429406B1 (ko) 콘텐츠 플랫폼에서 사용자 상호작용 확인
CN104283903B (zh) 文件的下载方法及装置
US11949688B2 (en) Securing browser cookies
US11882327B2 (en) Verifying display of third party content at a client device
US11356433B2 (en) System and method for detecting unauthorized activity at an electronic device
KR102608325B1 (ko) 클라이언트 장치에서 통신의 무결성 보호
CN111406257A (zh) 用于认证的参数化的应用安装和启动的系统和方法
CN106470186B (zh) 一种以跳转方式访问第三方资源的方法
JP7464663B2 (ja) プライバシー保持アプリケーションおよびデバイスエラー検出
KR20220000899A (ko) 웹뷰 내에서 콘텐츠 및 상호작용들을 확인
CN116348874B (zh) 使用鉴证令牌的安全归因的方法、系统以及介质
US20240143797A1 (en) Automated revocation system for leaked access credentials
CN117290892A (zh) 保障数据安全的方法、装置、设备和计算机可读介质
CN115151907A (zh) 验证网络应用的可信度
CN118353668A (zh) 使用鉴证令牌的安全归因的方法、系统以及介质

Legal Events

Date Code Title Description
E902 Notification of reason for refusal