KR101549816B1 - 안전하고 확장 가능한 정책 기반 애플리케이션 플랫폼 - Google Patents

안전하고 확장 가능한 정책 기반 애플리케이션 플랫폼 Download PDF

Info

Publication number
KR101549816B1
KR101549816B1 KR1020107014899A KR20107014899A KR101549816B1 KR 101549816 B1 KR101549816 B1 KR 101549816B1 KR 1020107014899 A KR1020107014899 A KR 1020107014899A KR 20107014899 A KR20107014899 A KR 20107014899A KR 101549816 B1 KR101549816 B1 KR 101549816B1
Authority
KR
South Korea
Prior art keywords
request
content
script content
execution
component
Prior art date
Application number
KR1020107014899A
Other languages
English (en)
Other versions
KR20100112123A (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 KR20100112123A publication Critical patent/KR20100112123A/ko
Application granted granted Critical
Publication of KR101549816B1 publication Critical patent/KR101549816B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/31User authentication
    • G06F21/34User authentication involving the use of external additional devices, e.g. dongles or smart cards
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/74Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information operating in dual or compartmented mode, i.e. at least one secure mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/468Specific access rights for resources, e.g. using capability register
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2119Authenticating web pages, e.g. with suspicious links

Abstract

스크립트 콘텐츠의 보안을 평가하는 시스템. 프로세서는 웹페이지 내의 스크립트 콘텐츠에 대한 정책을 정의하기 위한 컴퓨터 실행가능 명령어들을 실행한다. 스크립트 콘텐츠는 사용자와 웹페이지 내의 다른 콘텐츠 사이의 상호작용들을 제공한다. 정의된 정책은 스크립트 콘텐츠의 실행 경계를 지시한다. 프로세서는 정의된 정책 내의 실행 경계에 대해 스크립트 콘텐츠를 더 평가한다. 실행 시간에, 프로세서는 평가에 응답하여 웹페이지의 적어도 일부를 변환한다. 인터페이스는 스크립트 콘텐츠의 변환된 부분을 갖는 웹페이지를 호스트 장치 상의 애플리케이션에서 렌더링되도록 전송한다.

Description

안전하고 확장 가능한 정책 기반 애플리케이션 플랫폼{SECURE AND EXTENSIBLE POLICY-DRIVEN APPLICATION PLATFORM}
최근에 인터넷에서 이용 가능한 콘텐츠는 폭발적인 변화를 겪고 있다. 초기의 온라인 사용자들에게 감동적이었던 웹페이지들 내의 정적 텍스트들 또는 정지 사진 이미지들은 동적 애니메이션들, 풍부한 멀티미디어 비디오 클립들 및 동적 웹페이지 레이아웃들로 대체되어 왔다. 게다가, 웹페이지들 내의 콘텐츠는 실행 시간에 상호작용하게 되었으며, 따라서 사용자들은 입력 장치들(예컨대, 마우스 또는 스타일러스) 또는 사용자의 손가락들을 이용하여, 풍부한 맞춤화를 위해 웹페이지들 내의 개체들을 이동시키거나 재배열할 수 있다.
이러한 상호작용 개발에 있어서의 추진력들 중 하나는 실행 시간에 또는 거의 실행 시간에 애플리케이션들 또는 소프트웨어(예컨대, 웹 브라우저)에 의해 실행될 수 있는 컴퓨터 실행가능 명령어들의 형태의 스크립트-콘텐츠의 사용이다. 그러한 개발들의 일례는 경험 내의 통합을 위해 또는 새로운 경험들을 생성하기 위해 다양한 소스들로부터의 코드 및 거동들을 결합하는 웹 애플리케이션인 매쉬업(mashup 또는 mash-up)이다. 그러나, 브라우저의 속성으로 인해, 브라우저가 렌더링될 때 또는 브라우저가 렌더링되기 전에 매쉬업들이 실행되므로, 대부분의 매쉬업들은 호스트 사이트와 웹페이지들 내의 제3자 코드 사이에 암시적인 신뢰 관계들을 생성한다. 이러한 신뢰 관계는 웹사이트들 및 기반 웹 비즈니스 모델들을 위태롭게 한다. 게다가, 매쉬업 코드들 또는 스크립트들의 상호작용 속성으로 인해, 신뢰 관계는 웹페이지들 및/또는 로컬 장치 상에 제공되는 사용자의 개인 또는 비밀 콘텐츠도 위태롭게 할 수 있다.
본 발명의 실시예들은 웹페이지의 정책 기반(policy-driven) 스크립트 콘텐츠의 거동들에 대한 정책들을 정의함으로써 위의 단점들을 해결하며, 따라서 본 발명의 실시예들은 스크립트 콘텐츠가 사용자에게 렌더링될 때 또는 사용자에게 렌더링되기 전에 스크립트 콘텐츠의 거동들을 모니터링하거나, 실시하거나, 변경하거나, 보완할 수 있다. 다른 실시예에서, 정의된 정책들은 로컬 장치에 제공되며, 따라서 로컬 장치에서 실행되는 브라우저는 로컬 레벨에서 스크립트 콘텐츠 보안 경계들을 편리하게 비교할 수 있다. 대안 실시예들은 특히 웹 기반 매쉬업들의 환경 내에서의 콘텐츠 트랜스클루션(transclusion), 컴포넌트 개발 및 API 확장성 주변의 정책 기반 및 정책 실시 가능 스크립트 실행 및 정책 시나리오들을 위한 플랫폼을 제공한다. 대안 실시예들은 다중 인스턴싱을 자동으로 지원하고 범위 보호를 제공하기 위한 능력을 더 제공한다. 게다가, 본 발명의 추가 양태들은 스크립트 콘텐츠와의 사용자 상호작용들을 모니터링하고 기록하며, 따라서 서비스 품질(QOS) 메트릭들 또는 데이터가 기록되고, 스크립트 콘텐츠의 발행자들, 작성자들 또는 제공자들에게 보고될 수 있다.
본 요약은 아래의 상세한 설명에 더 기술되는 개념들의 선택을 간단히 소개하기 위해 제공된다. 본 요약은 청구 발명의 중요한 특징들 또는 필수적인 특징들을 식별하고자 하는 의도도 없고, 청구 발명의 범위를 결정하기 위한 보조물로서 사용하고자 하는 의도도 없다.
다른 특징들은 아래에서 부분적으로 명백할 것이고, 부분적으로 지시될 것이다.
도 1은 본 발명의 일 실시예에 따른 웹페이지 내의 스크립트 콘텐츠를 보호하기 위한 시스템의 일 실시예를 나타내는 블록도이다.
도 2는 본 발명의 일 실시예에 따른 스크립트 콘텐츠의 실행 경계를 정의하기 위한 예시적인 정책을 나타내는 블록도이다.
도 3-9는 본 발명의 일 실시예에 따른 스크립트 콘텐츠 상호작용들의 스크린 표시들을 나타내는 예시적인 블록도이다.
도 10-11은 본 발명의 일 실시예에 따른 스크립트 콘텐츠의 서비스 품질의 관리 및 측정을 나타내는 블록도이다.
도 12는 본 발명의 일 실시예에 따른 스크립트 콘텐츠의 보호와 관련된 예시적인 서비스 품질 데이터를 나타내는 블록도이다.
도 13은 본 발명의 일 실시예에 따른 웹페이지 내의 스크립트 콘텐츠를 보호하기 위한 동작을 나타내는 예시적인 흐름도이다.
도 14-15는 부록 A에 기술된 바와 같은 본 발명의 일 실시예에 따른 웹페이지 내의 스크립트 콘텐츠를 보호하는 예시적인 실시예들을 나타내는 블록도이다.
도 16은 본 발명의 일 실시예에 따른 클라이언트 장치 상의 웹페이지 내의 스크립트 콘텐츠를 보호하는 동작들을 나타내는 블록도이다.
부록 A는 안전하고 확장 가능한 정책 기반 애플리케이션 플랫폼의 예시적인 구현을 나타낸다.
도면들 전반에서, 대응하는 참조 문자들은 대응하는 부분들을 지시한다.
본 발명의 실시예들은 페이지 내의 스크립트 콘텐츠 또는 함수들에 대한 보안을 제공하며, 웹페이지 내에 표시되거나 렌더링되는 사용자의 콘텐츠에 대한 적절한 보호를 제공한다. 이제, 도 1을 참조하면, 본 발명의 일 실시예에 따른 콘텐츠 홀더(104) 내의 스크립트 콘텐츠(102)를 보호하기 위한 시스템(100)이 도시되어 있다. 시스템(100)은 통신 네트워크(도시되지 않음)를 통해 클라이언트(108)에 의해 액세스될 수 있는 서버(106)를 포함한다. 일례에서, 서버(106)는 네트워킹된 컴퓨터들의 집합, 컴퓨터, 웹 서버, 기업 서버, 데이터베이스 서버, 인증 서버, 이들의 조합 또는 이들의 집합을 포함한다. 일 실시예에서, 서버(106)는 사용자(114)에게 다양한 서비스를 제공하는 서버들의 연합 세트일 수 있다. 다른 실시예에서, 서버(106)는 처리 장치, 마이크로프로세서, 중앙 처리 장치 또는 위의 예들의 집합/조합일 수 있는 프로세서(110)를 포함한다. 일례에서, 서버(106)는 웹 기반 전자 메일(이메일) 계정, 사용자(114)에 대한 다양한 개인 정보를 수집하는 중앙 웹 포탈 페이지 등과 같은 서비스들을 제공한다. 다른 예에서, 서버(106)는 상호작용 콘텐츠 및 비상호작용 콘텐츠 양자를 하이퍼텍스트 마크업 언어(HTML), 확장형 마크업 언어(XML), JavaScript?(등록 상표), 비동기 JavaScript 및 XML(AJAX) 등의 형태로 사용자(114)에게 제공한다. 본 발명의 양태들의 범위 또는 사상을 벗어나지 않고, 멀티미디어 콘텐츠와 같은 다른 콘텐츠도 제공될 수 있다는 것을 이해한다.
클라이언트(108)는 퍼스널 컴퓨터(PC)(예를 들어, 데스크톱 또는 랩톱), 휴대용 디지털 장치, 개인용 휴대 단말기(PDA), 셀룰러 폰, 휴대용 미디어 재생기 등과 같은, 사용자(114)와 관련된 임의의 클라이언트 장치를 포함한다. 통신 네트워크는 둘 이상의 컴퓨터 사이의 접속을 용이하게 하는 임의의 유선 또는 무선 통신 네트워크를 포함한다.
일례에서, 서버(106)는 클라이언트(108)에 렌더링 또는 표시될 콘텐츠 홀더(104)를 사용자(114)에게 제공하도록 구성된다. 예컨대, 콘텐츠 홀더(104)는 클라이언트(108) 상에 설치된 웹 브라우저 애플리케이션(WBA)(118)에 의해 렌더링될 수 있다. 일 실시예에서, 콘텐츠 홀더(104)는 웹페이지, ASCII 텍스트 페이지, 마크업 언어 콘텐츠가 내장된 웹페이지, 미디어 콘텐츠가 내장된 웹페이지 등일 수 있다. 일 실시예에서, WBA(118)는 독립 애플리케이션 또는 소프트웨어이다. 다른 실시예에서, WBA(118)는 하이퍼텍스트 마크업 언어(HTML), 확장형 마크업 언어(XML) 등과 같은 마크업 언어로 작성된 콘텐츠를 렌더링할 수 있는 프로그램 또는 소프트웨어의 일부 또는 컴포넌트일 수 있다. WBA(118)는 온라인 환경에서 그래픽 파일들(.jpg, .tiff, .pdf 등), 미디어 파일들(.wma, .mp3, .mp4 등) 등과 같은 다른 콘텐츠를 렌더링하는 애플리케이션 또는 컴포넌트일 수 있다는 것도 이해한다.
콘텐츠 홀더(104)는 콘텐츠를 갖는 하나 이상의 컴포넌트를 포함한다. 일례에서, 컴포넌트는 스크립트 콘텐츠(102) 및/또는 비스크립트 콘텐츠(116)를 포함할 수 있다. 일례에서, 스크립트 콘텐츠(102)는 컴퓨터 실행가능 명령어들, 코드들, 함수들, 실행가능 식들, 또는 다른 실행가능한 프로그래밍 언어를 포함한다. 스크립트 콘텐츠(102)는 함수 호출 또는 애플리케이션 프로그래밍 인터페이스(API) 요청 또는 호출을 통해 실행 호출을 유발할 수 있다. 실행 호출은 서버(106), 클라이언트(108) 또는 WBA(118)로부터 자원들을 요청할 수 있다. 한편, 비스크립트 콘텐츠(116)는 실행가능하지 않거나 실행 결과들을 생성하지 않는 콘텐츠를 포함한다. 예를 들어, 텍스트 문장(예를 들어, "Today's news...")은 비스크립트 콘텐츠(116)일 수 있지만, 텍스트 문장(예를 들어, echo("Today's news..."); document.write("Today's news...");)은 스크립트 콘텐츠(102)일 수 있는데, 그 이유는 이 텍스트 문장의 실행시에 이 텍스트 문장은 텍스트 문장 자체의 단순한 표시보다 많은 함수 결과를 생성하기 때문이다.
시스템(100)은 또한 스크립트 콘텐츠(102)에 대한 실행 경계들을 정의하기 위한 하나 이상의 정책을 포함하는 정책 엔진(120)을 포함한다. 일례에서, 정책 엔진(120)은 하나 이상의 정책을 저장하기 위한 저장 매체를 포함한다. 이제, 도 2를 참조하면, 정책 엔진(120)에 저장된 아주 간단한 정책들(202)이 도시되어 있다. 일례에서, 정책들(202)의 각각은 특정 스크립트 콘텐츠 또는 스크립트 콘텐츠에 포함된 함수(들)의 실행 경계를 정의한다. 다른 예에서, 정책(202-1)은 "addFolder()"(204)라고 하는 스크립트 콘텐츠 또는 함수의 실행 경계를 포함하며, 정책(202-2)은 "openWindow()"(206)라고 하는 스크립트 콘텐츠 또는 함수의 실행 경계를 포함한다. 본 발명의 범위 또는 사상을 벗어나지 않고, 다른 함수들 또는 스크립트 콘텐츠도 정책 엔진(120) 내에 포함될 수 있다는 것을 이해한다. 추가 함수들 또는 스크립트 콘텐츠가 개발되거나, 증대되거나, 변경되거나 갱신됨에 따라, 정책 엔진(120)이 주기적으로, 전체적으로 또는 부분적으로 갱신될 수 있다는 것도 이해한다. 대안 실시예에서, 실행 경계는 스크립트 콘텐츠 또는 함수에 의해 액세스될 수 있는 콘텐츠 또는 자원들의 한계들을 지시한다.
예를 들어, 정책(202-1)이 스크립트 콘텐츠 "addFolder()"에 대한 실행 경계를 정의하는 것으로 가정한다. 정책(202-1) 내의 실행 경계는 요청을 서버(106)로 전송한 후에 WBA(118)의 인스턴스 내에서 실행 시간 동안에 스크립트 콘텐츠 "addFolder()"가 실행될 수 있는 것으로 정의할 수 있다. 또한, 경계는 사용자(114)의 정보가 서버(106)로부터 WBA(118)에 의해 클라이언트(108) 상에 렌더링될 때 폴더 또는 디렉토리를 생성하고 있는 스크립트 콘텐츠 "addFolder()"의 결과가 사용자(114)와 관련된 저장 공간에 액세스하는 것으로만 제한되는 것으로 더 한정할 수 있다. "addFolder()" 함수는 저장 공간으로부터 다른 정보에 대한 액세스(예를 들어, 읽을 권리)를 갖지 않는다. 도 3-9는 사용자(114)의 웹 기반 이메일 계정의 간단한 예를 통해 본 발명의 양태들을 더 도시한다.
예를 들어, 도 3에서, 표시 윈도우(302)는 클라이언트(108) 상에 설치된 WBA(118)의 인스턴스를 표시한다. 표시 윈도우(302)는 웹 어드레스 바(304) 및 콘텐츠 홀더(104)의 콘텐츠를 표시하는 콘텐츠 표시 영역(306)을 포함한다. (윈도우 최소화 제어, 윈도우 최대화 제어 및 윈도우 폐쇄 제어를 포함하는) 윈도우 크기 제어(308), 검색 제어(310), 네비게이션 제어(312) 등과 같은 다른 제어들도 포함될 수 있다. 본 발명의 범위 또는 사상을 벗어나지 않고, 다른 제어들도 추가 또는 구현될 수 있다는 것도 이해해야 한다.
WBA(118)가 사용자(114)에게 개인 웹 기반 이메일 인박스를 표시하는 이러한 예에서, 콘텐츠 표시 영역(306)은 또한 측면 창(314) 및 사용자(114)의 인박스 내의 하나 이상의 이메일 메시지를 나열하는 메인 메시지 창(316)을 포함한다. 예로서, 측면 창(314)은 다수의 제어, 버튼, 또는 사용자(114)를 이메일 계정 user@user-mail.com의 인박스 내의 하나 이상의 디렉토리 또는 폴더에 링크하는 링크들을 표시한다. 예를 들어, 폴더들은 "inbox" 폴더, "drafts" 폴더, "sent items" 폴더, "junk" 폴더 및 "deleted" 폴더를 포함한다. 측면 창(314)은 또한 "FOLDERS" 헤딩 아래에 하나 이상의 개인화된 폴더 또는 디렉토리를 표시하는 섹션을 포함한다. 이 예에서는, 사용자(114)의 개인화된 폴더 또는 디렉토리는 존재하지 않는다. 표시 윈도우(302)는 또한 메인 메시지 창(316) 내에 이메일 메시지들의 리스트를 표시한다. 도시된 바와 같이, 표시 윈도우(302)는 서버(106)로부터 제공되는 사용자의 인박스의 레이아웃 및 콘텐츠도 표시 또는 렌더링한다. 즉, 사용자의 인박스의 콘텐츠 또는 레이아웃이 WBA(118)에 의해 적절히 인식되는 한, 표시 윈도우(302)는 콘텐츠 표시 영역(306) 내에서 사용자(114)에게 레이아웃 및 콘텐츠를 적절히 제공할 것이다. 측면 창(314) 및 메인 메시지 창(316)은 콘텐츠 홀더(104)의 레이아웃에 따라 변경될 수 있다는 것도 이해한다.
또한, 도시된 예에서, 사용자(114)는 "SHOPPING"으로부터 "20% OFF ONLINE SALE"의 제목 라인을 갖는 이메일 메시지(320)를 수신한다. 이제, 도 4를 참조하면, 이 도면은 본 발명의 실시예들이 사용자 민감 또는 비밀 콘텐츠가 보호되도록 표시된 콘텐츠 내의 함수 호출들을 제어함으로써 정책 기반 애플리케이션 플랫폼을 이용하는 방법을 도시하고 있다. 이 예에서는, 메시지(320)가 통상적인 비스크립트 콘텐츠 및 스크립트 콘텐츠를 포함하는 것으로 가정한다. 비스크립트 콘텐츠는 사용자에게 쇼핑 판매를 광고하는 텍스트 메시지들을 포함할 수 있다. 메시지(320)의 스크립트 콘텐츠는 사용자(114)의 이메일 계정에 "쇼핑(shopping)"이라고 하는 폴더를 추가하려고 시도하는 하나 이상의 함수를 포함한다. 그러한 "쇼핑 폴더"는 사용자(114)에 대한 판매 거래, 쿠폰 또는 다른 판매 정보를 유지할 것이다. 스크립트 콘텐츠는 메시지(320)의 "개방" 시에 또는 짧은 지연 후에 활성화 또는 호출될 수 있다. 일례에서, 사용자(114)는 입력 장치(예를 들어, 마우스 또는 스타일러스) 또는 사용자의 손가락을 이용하여 이메일 메시지(320)를 열 수 있다. 일 실시예에서, 이메일 메시지(320)는 사용자(114)가 예를 들어 메시지 위에 마우스 그래픽 커서를 호버링하거나, (예를 들어, 키보드 상의 화살표 키들을 이용하여) 위치 마커를 이메일 메시지(320)의 위치로 이동시킴으로써 메시지(320)를 하이라이트할 때 자동으로 열릴 수 있다. 메시지(320)를 열어서 그의 콘텐츠를 보기 위해 메시지(320)를 하이라이트 또는 포커스하기 위한 다른 수단들도 본 발명의 범위 또는 사상으로부터 벗어나지 않고 사용될 수 있다는 것을 이해해야 한다.
현재의 기술들은 방해 없이 스크립트 콘텐츠를 실행할 것이다. 즉, 스크립트 콘텐츠의 함수들이 표시 윈도우들의 개방을 지정하는 경우, 표시 윈도우들이 열릴 것이다. 사용자(114)는 스크립트 콘텐츠가 실행되는 방법에 대한 제어를 갖지 않을 것이다. 실제로, 서버(106)는 콘텐츠에 대한 제어도 갖지 않는데, 그 이유는 통상적으로 WBA(118)가 웹 또는 온라인 환경에서의 콘텐츠의 렌더링 또는 표시를 대리하기 때문이다. 따라서, 사용자의 인박스의 프라이버시 또는 콘텐츠 또는 다른 콘텐츠는 임의의 표시된 페이지의 스크립트 콘텐츠의 변덕(whim)의 지배를 받는다.
본 발명의 실시예들은 스크립트 콘텐츠를 모니터링 및/또는 인터셉트하기 위한 정책들을 정의하며, 따라서 스크립트 콘텐츠는 정의된 정책들에 의해 지정되는 정의된 경계 내에서만 실행될 수 있다. 본 발명의 양태들은 또한 인터셉트된 스크립트 콘텐츠 호출들 또는 함수들의 평가에 응답하여 동적 해결책(dynamic resolution)을 제공한다. 동적 해결책은 요청된 자원이 실행 경계 내에서 실행될 수 있는 경우에 요청을 승인하는 것, 요청된 자원이 실행 경계 내에서 실행될 수 없는 경우에 요청을 거절하는 것, 요청을 승인하기 전에 요청을 증대시키는 것, 다른 요청에 응답하여 대체 해결책을 제공하기 전에 요청을 다른 요청으로 대체하는 것, 및 요청을 승인 또는 거절하기 위해 사용자로부터의 사용자 입력을 요청하는 것 중 적어도 하나를 포함할 수 있다.
일 실시예에서, 사용자(114)는 또한 스크립트 콘텐츠의 수행을 더 제한하는 것에 관련될 수 있다. 이제, 도 4를 다시 참조하면, 메시지(320)가 열리고, 메시지(320)의 스크립트 콘텐츠가 실행됨에 따라, 메시지(320)의 스크립트 콘텐츠는 평가를 위해 정책 엔진(120)으로 전달되며, 사용자(114)는 평가를 돕거나 평가에 관여할 수 있다.
위의 예에 기초하여, 메시지(320)가 "개방"될 때, 메시지(320)의 스크립트 콘텐츠는 "addFolder()"와 같은 함수를 이용하여 "쇼핑" 폴더라고 하는 폴더를 사용자(114)의 이메일 계정에 추가하려고 시도한다. 이전 기술들이 행하는 바와 같이 스크립트 콘텐츠를 수행하고 실행하는 대신에, 본 발명의 양태들은 정책 엔진(120)을 통해 스크립트 콘텐츠 및/또는 함수 호출을 전달한다. 정책 엔진(120)은 도 2에 도시된 바와 같이 함수 호출들을 처리함에 있어서의 하나 이상의 규칙을 포함한다. 이러한 예에서, 정책 엔진(120)은 모든 addFolder() 함수 호출을 인터셉트하고 스크립트의 콘텐츠를 추출하도록 설계되었을 수 있다. 한편, 정책 엔진(120)은 사용자(114)에게 윈도우(322)를 열어주기 위한 함수 "alertWindow()"와 같은 대체 함수 또는 추가 함수의 실행 또는 이행을 트리거하거나 가능하게 한다. alertWindow() 함수는 사용자(114)에게 메시지 및 상호작용 제어들을 표시하기 위하여 WBA(118)의 실행 환경 내에서 윈도우(322)를 열기를 원한다. 표시된 메시지 및/또는 상호작용 제어들은 메시지(320)의 스크립트 콘텐츠로부터 추출된 콘텐츠와 일치하거나 그를 나타낸다.
이 예에서, 대체된 alertWindow() 함수는 "당신의 좋아하는 상점들로부터의 쿠폰들을 포함하는 "쇼핑" 폴더를 추가하는가?"라는 메시지를 표시함으로써 사용자(114)에게 경고하기 위한 메시지를 열기를 원한다. 사용자(114)는 "YES" 버튼(340)을 클릭함으로써 폴더를 추가하기로 결정하거나, "NO" 버튼(342)을 클릭함으로써 요청을 거절하기로 결정할 수 있다. 사용자(114)가 "YES" 버튼(340)을 선택하는 경우, 도 5에 도시된 바와 같이, 새로운 개인화된 "쇼핑" 폴더(334)가 사용자의 개인화된 폴더 섹션에 추가될 것이다. 따라서, 사용자(114)는 이제 메시지(320)의 스크립트 콘텐츠의 최초 의도(예를 들어, addFolder() 함수의 실행)를 승인 또는 거절하는 결정 프로세스의 일부이다.
다른 실시예에서, 메시지(320)의 스크립트 콘텐츠는 서버(106), 프로세서(110), 클라이언트(108) 또는 WBA(118)의 자원들에 대한 애플리케이션 프로그래밍 인터페이스(API)를 호출할 수 있다. 이러한 상황에서, 본 발명의 실시예들은 그러한 API 호출들을 인터셉트하여 이들을 정책 엔진(120)을 통해 전달할 수도 있다. 일 실시예에서, 정책 엔진(120)은 사용자(114)에게 임의의 통지를 하거나 하지 않고, 임의의 호출의 거동을 승인, 거절, 증대 또는 대체하기로 결정할 수 있다. 호출들은 현존 API로부터 개시되거나, 정책을 통해서만 정의될 수 있다(예를 들어, 이들은 기존 API들일 필요가 없다).
예를 들어, 도 6은 메시지의 스크립트 콘텐츠로부터의 요청들 또는 호출들이 자동으로 거절되지만, 사용자(114)가 그러한 거절을 통지받는 본 발명의 일 양태를 나타낸다. 이러한 예에서, 본 발명의 양태들은 정책 엔진(120)이 모든 스크립트 호출들 또는 함수 호출들을 자동으로 거절하는 것을 가능하게 한다. 그렇게 할 때, 사용자에 대한 통지 메시지(332)는 "shopping-for-you.com이 당신의 이메일 계정에 폴더를 추가하려고 요청하였고, 이 요청은 자동으로 거절되었다. 당신이 이 요청을 승인하고 싶다면, 승인을 클릭하라. 아니면, 계속을 클릭하라."를 표시하도록 변경된다. 사용자(114)는 통지에 응답하여 "승인" 버튼(344) 및 "계속" 버튼(346)을 제공받는다. 즉, 본 발명의 실시예들은 사용자(114)에게 자동 거절 정책 설정이 이루어진 경우에 1회 결정을 행할 수 있는 능력을 제공한다. 다른 실시예에서, 통지(332)는 "나의 설정을 기억하라", "2주 동안 나의 설정을 기억하라", "항상 이를 행하라", "나의 이전 결정들을 재설정하라" 등(옵션(370) "미래에 이러한 액션을 항상 취하라" 등)과 같은 다른 옵션들을 포함할 수 있다.
대안으로서, 본 발명의 양태들은 요청 또는 함수 호출을 자동으로 승인하도록 구성될 수도 있으며, 사용자(114)는 다시 도 7에서 "거절" 버튼(348) 또는 액션의 디폴트 코스를 계속하기 위한 "계속" 버튼(350)을 클릭함으로써 그러한 자동 액션을 변경할 기회를 제공받는다.
다른 실시예에서, 정책 엔진(120)은 인터셉트된 함수 호출들을 변경하도록 구성될 수 있다. 이제, 도 8을 참조하면, 본 발명의 양태들이 인터셉트된 함수 호출들 또는 API 요청들을 변경하도록 구현되는 경우, 메시지(332)는 이제 "shopping-for-you.com이 당신의 이메일 계정에 "쇼핑" 폴더를 추가하려고 요청하지만, 당신은 이미 "쇼핑"이라는 명칭의 폴더를 갖고 있는 것으로 보인다. 이러한 요청은 요청을 거절하도록 자동으로 변경되었다. 당신이 이 요청을 더 변경하기를 원한다면, 변경을 클릭하라. 그렇지 않으면, 계속을 클릭하라"를 표시한다. 즉, 변경은 요청의 거절과 결합될 수도 있다. 따라서, 사용자(114)는 정책 엔진(120) 내의 정책들 또는 규칙들에 의해 정의되거나 설정된 바와 같은 변경을 진행하기 위하여 "변경" 버튼(352) 또는 "계속" 버튼(354)을 클릭함으로써 요청을 변경할 기회를 갖는다. 마찬가지로, 정책 엔진(120) 내의 정책들은 도 9에 도시된 바와 같이 변경을 요청의 자동 승인과 결합할 수도 있다. 도 9에서, 사용자(114)는 요청이 사용자의 개인 폴더 섹션에 폴더 "쇼핑-사본"를 추가하는 것으로 자동 대체되었음을 지시하는 메시지(332)를 제공받는다. 사용자(114)는 다시 "계속" 버튼(356)을 클릭함으로써 변경에 동의하거나, "취소" 버튼(358)을 클릭함으로써 변경을 취소할 기회를 갖는다. 추가 실시예에서, 인터셉트된 요청의 변경은 스크립트 콘텐츠/요청이 정의된 정책에 기초하는 실행 경계 내에 있도록 인터셉트된 요청을 재작성하는 단계를 포함할 수 있다.
일 실시예에서, WBA(118)가 실행됨에 따라, WBA(118)의 하나 이상의 인스턴스가 달성될 수 있으며, 본 발명의 양태들은 이행 시간 또는 실행 시간 동안에 각각의 인스턴스를 적절히 구별한다. 예를 들어, 사용자(114)는 하나 이상의 WBA(118) 윈도우가 동시에 실행되게 할 수 있다. 따라서, 본 발명의 양태들이 인스턴스화될 때, 현재의 WBA(118) 윈도우들 내의 본 발명의 인스턴스화는 모든 코드가 간단한 변환을 통해 먼저 정규화되는 것을 필요로 한다. 이러한 변환은 정책 엔진(120)을 통해 모든 API 호출들을 재지향시킨다. 이러한 단계는 정책 엔진이 먼저 호출되게 하고, 또한 적절한 QOS(서비스 품질) 테스트들(후술함)을 삽입하려고 시도한다. 추가 이익으로서, 스크립트 콘텐츠의 인스턴스화된 인스턴스들의 각각은 독립적이고 개별적인 실행 경계를 갖는다.
일 실시예에서, API는 메시지(320)의 스크립트 콘텐츠로부터 호출될 때마다 정책 엔진(120)을 향해 지향된다. 정책 엔진(120)은 요청을 행한 개체의 유형, 호출되는 API의 유형(속성, 메소드, 팩토리(factory) 또는 삭제) 중 적어도 하나를 검사하고, 결정 프로세스를 정책 스크립트들 또는 규칙들 중 적어도 하나로 전달한다. 정책 스크립트들은 액세스를 거절하거나(디폴트), 허가하거나, 증대하거나(또는 상황에 따라 동적으로 거절 또는 허가하기로 결정하거나), 대체하고 그리고/또는 거동을 정의하기를 결정할 수 있다.
일례에서, 정책들은 적층화될 수 있으며, 임의의 단일 API 호출이 0 내지 n개의 정책들 또는 규칙들에 맵핑될 수 있다. 정책들은 정의된 순서로 실행될 수 있다. 예를 들어, 첫 번째 정책은 속성(예를 들어, 타이틀 특성)에 대한 액세스를 가능하게 할 수 있으며, 후속 정책은 102-1의 상황 내의 요소 상에 있는 경우에만 속성에 대한 액세스를 가능하게 함으로써 규칙들을 더 제한할 수 있다.
다른 예는 메소드(예를 들어, 경고)가 인에이블되는 것을 허가할 수 있으며, 후속 정책은 프롬프트를 통해서가 아니라 상태 바 상에 표시하기 위해 경고의 디폴트 거동을 무시할 수 있다.
따라서, 본 발명의 양태들은 사용자(114)가 WBA(118)를 통해 온라인으로 보는 콘텐츠 또는 콘텐츠 홀더가 스크립트 함수들, 실행가능 코드 및 API 요청들을 포함할 수 있는 경우에 사용자(114)에게 보호층을 제공한다. 하나의 현존하는 예에서는, 웹 기반 이메일 인박스의 사용자가 "연락처에 추가"와 같은 링크를 클릭함으로써 사용자의 연락처 폴더에 이메일 어드레스를 자동으로 추가하는 것과 같은 많은 편리한 특징들을 갖는 것이 일반적이다. 일부 이메일 서비스 제공자들은 허가를 제공하기 위한 개별 페이지로 사용자를 프롬프트함으로써 그러한 편리한 특징을 달성한다. 일부 제공자들은 사용자가 "연락처에 추가" 링크를 클릭하자마자 요청된 액션을 자동으로 수행할 것이다. 그러나, 일부 제공자들은 사용자가 "연락처에 추가" 링크를 클릭하지 않아도 요청된 액션을 자동으로 수행할 것이며, 이러한 제공자들은 사용자가 연락처를 추가하기를 원하는 것으로 추정하며, 사용자에게 묻지 않고 연락처의 추가를 진행한다. 따라서, 사용자는 사용자의 연락처 폴더 내의 개인 정보에 대한 제어를 갖지 않는다. 본 발명의 실시예들은 사용자가 관련되기 전에 콘텐츠 홀더(104)의 스크립트 콘텐츠로부터 함수 호출들 또는 실행 요청을 인터셉트하여 함수 호출들을 평가함으로써 현재 시스템들의 그러한 문제 또는 단점을 완화하려고 시도한다.
다른 실시예에서는, 정책 엔진(120)의 사본이 클라이언트(108) 상에서 인스턴스화되거나 복사되며, 따라서 함수 호출들의 인터셉트는 클라이언트(108) 상에서 국지적으로 수행될 수 있다. 즉, 본 발명의 실시예들은 콘텐츠 홀더(104)가 실행 시간에 렌더링 또는 표시될 때 WBA(118)가 콘텐츠 홀더(104)의 스크립트 콘텐츠를 모니터링하고, 함수 호출들 또는 API 호출들을 인터셉트하는 것을 가능하게 한다. 인터셉트된 함수 호출들 또는 요청들은 클라이언트(108) 및 WBA(118)에 의해 국지적으로 액세스 가능한 정책 엔진(120)에 의해 평가된다. 이어서, WBA(118)는 정의된 정책들에 따라 사용자(114)에게 임의의 후속 UI를 렌더링할 수 있다. 다른 예에서, WBA(118) 또는 클라이언트(108)는 콘텐츠 홀더(104)의 스크립트 콘텐츠의 실행의 인수들 또는 결과를 서버(106)로 더 전달한다. 도 3을 일례로 이용하면, 메시지(320)가 사용자 개인 폴더 리스트 또는 섹션에 폴더를 추가하기를 원할 때, WBA(118) 또는 클라이언트(108)는 사용자의 결정을 서버(106)로 전달하여, 사용자의 인박스 폴더 리스트에 "쇼핑" 폴더를 추가하거나, 요청을 거절할 수 있다.
대안 실시예에서는, 사용자로부터의 피드백 또는 도 4-9에 도시된 것들과 같은 결정이 존재하지 않을 수도 있다. 예를 들어, 콘텐츠 홀더(104)는 단지 콘텐츠 및 광고를 표시하는 웹페이지일 수 있다. 그러나, 콘텐츠 홀더(104)는 또한 예를 들어 콘텐츠 홀더(104)가 렌더링 또는 표시될 때 동적 연산들을 수행하는 스크립트 콘텐츠를 포함한다. 예를 들어, 콘텐츠 홀더(104)가 텍스트 콘텐츠(즉, 비스크립트 콘텐츠) 및 스크립트 콘텐츠를 갖는 웹페이지인 것으로 가정한다. 스크립트 콘텐츠는 영화 클립과 같은 애니메이션 개체들 또는 사진들과 같은 그래픽 개체들 내에 삽입될 수 있다. 이러한 애니메이션 개체들 또는 그래픽 개체들은 온라인 광고의 일부일 수 있으며, 스크립트 콘텐츠는 서버(106)에 의해 관리되거나 관리되지 않을 수 있는 콘텐츠 홀더(104)의 다른 부분들로부터 효과를 생성하려고 시도할 수 있다. 따라서, 온라인 광고가 렌더링 또는 표시될 때, 스크립트 콘텐츠가 후속 표시되거나 렌더링된다. 그러나, 콘텐츠 홀더(104)의 다른 부분들 상의 스크립트 콘텐츠로부터의 바람직한 효과는 WBA(118)가 멈추게 하거나, 클라이언트(108)가 멈추게 하거나, 다른 바람직하지 않은 이벤트를 유발할 수 있다.
이제, 위의 예의 도면인 도 10을 참조하면, 이 블록도는 본 발명의 일 실시예에 따른 스크립트 콘텐츠의 서비스 품질의 관리 및 측정을 도시한다. 도 10은 WBA(118)의 콘텐츠 표시 영역(306)에 표시된 스키 여행 또는 스키 휴가 광고(402)를 나타낸다. 일례에서, 광고(402)는 웹페이지와 같은 콘텐츠 홀더의 일부일 수 있다. 웹페이지는 또한 웹페이지 상에 일기 예보 정보를 표시하는 일기 예보 모듈(404)을 포함한다. 뉴스 갱신 모듈(406) 및 테크 갱신 모듈(408)과 같은 다른 콘텐츠 또는 모듈도 표시될 수 있다. 각각의 모듈은 모듈의 특징 또는 특성을 태그화하거나 식별하기 위한 관련 메타데이터를 가질 수 있다. 광고(402)는 또한 실행가능 코드 및 함수 호출들을 포함하는 스크립트 콘텐츠(410)를 포함한다. 이러한 예에서, 스크립트 콘텐츠(410)는 사용자가 사용자의 현재 표시 페이지 상에서 이미 이용 가능한 장소 근처의 스키 리조트들 또는 스키 명소들의 기상 상태가 어떤지를 빨리 알 수 있도록 콘텐츠 홀더 내의 관련 콘텐츠에 스키 리조트 일기 예보 정보를 추가하도록 설계된다. 일기 예보 정보가 추가되면, 광고(402)는 광고되는 스키 리조트의 사진을 보여주기 위해 콘텐츠를 애니메이트할 것이다.
따라서, 스크립트 콘텐츠(410)는 모듈(404)의 콘텐츠를 판독하여, 사용자가 날씨를 알고 싶어하는 도시를 파악하려고 시도할 수 있다. 이러한 시도는 사용자가 관심을 갖는 도시에 가장 가까운 스키 리조트들에 대한 광고를 표시하도록 광고(402)를 트리거할 것이다. 본 발명의 실시예들은 이러한 시도/액션을 허가하거나, 이러한 시도/액션 또는 동작을 차단 또는 금지할 수 있다. 허가가 제공되는 경우, 광고(402)는 표적 광고를 파악하는 것이 허가된다. 한편, 광고(402)는 표적 광고를 표시하는 것이 금지될 수 있거나, 도 11에 도시된 바와 같은 "미국 내의 최고 스키 리조트들"과 같은 일반 광고를 표시할 수 있다. 따라서, 본 발명의 실시예들은 사용자에게 결정에 개입하거나 참여할 기회를 제공한다.
본 발명의 양태들은 그러한 스크립트 콘텐츠의 효과를 측정하여 콘텐츠 제공자들에게 효과적인 피드백을 제공할 수 있다. 이제, 도 12를 참조하면, 이 블록도는 본 발명의 일 실시예에 따른 스크립트 콘텐츠의 보호와 관련된 예시적인 서비스 품질 데이터(502)를 나타낸다. 스크립트 콘텐츠로부터 각각의 그리고 모든 함수 호출, API 요청 등을 인터셉트함으로써, 본 발명의 실시예들은 요청들을 적절히 평가할 수 있으며, 이러한 평가는 메모리 영역(122)에 적절히 기록된다. 예컨대, 도 12는 수집되어 콘텐츠 제공자들에게 전송될 수 있는 예시적인 서비스 품질 메트릭을 나타낸다. 예를 들어, 서비스 품질 데이터(502)는 "거절 횟수", "변경 횟수", "대체 횟수", "사용자 변경 횟수", "다른 스크립트 콘텐츠와의 상호작용" 및 "불안정한 사건들"과 같은 필드들을 포함한다. 도 10-11에 도시된 예들에서, 광고(402)의 스크립트 콘텐츠의 거절은 "불안정한 사건들"로서 취급될 수 있다. 다른 실시예에서, WBA(118) 또는 클라이언트(108)는 콘텐츠 홀더 내의 콘텐츠를 표시하는 능력이 없음으로 인한 WBA(118)의 예상치 못한 예외 또는 기능 중지를 기록할 수 있다. 이러한 기록 또는 로그도 "다른 스크립트 콘텐츠와의 상호작용"에 대한 데이터를 수집하기 위해 서버(106)로 전송될 수 있다. 추가 예에서, 스크립트 콘텐츠, WBA(118), 클라이언트(108) 및/또는 서버(106) 사이의 실행 활동들은 인터셉트 및 평가에 응답하여 모니터링되고, 기록되고, 저장될 수 있다. 제공된 솔루션과 온라인 콘텐츠의 다른 부분들 간의 활동들, 제공된 솔루션과 온라인 콘텐츠의 스크립트 콘텐츠 간의 활동들, 제공된 솔루션과 사용자 간의 활동들, 및 제공된 솔루션, 스크립트 콘텐츠 및 WBA(118) 등 간의 활동들 등과 같은 실행 활동들이 모니터링되고, 평가되고, 측정되고, 나중에 스크립트 콘텐츠의 콘텐츠 제공자에게 제공될 수 있다. 본 발명의 범위 및 사상으로부터 벗어나지 않고, 다른 서비스 품질 메트릭들이 정의되고, 관련 데이터가 수집될 수 있다는 것도 이해해야 한다.
추가 실시예에서, 정책 엔진(120)은 중개자가 모든 속성들, 메소드 호출들, 및 호출이 실행되기 전에 검증되는 개체 공장들을 인터셉트하게 할 수 있다. 검증은 동적일 수 있으며(단순히 온 또는 오프가 아니다), 결정 프로세스는 모든 상세들을 고려할 수 있다. 게다가, 정책 엔진(120)은 여러 회 인스턴스화될 수 있는 그 자신의 샌드박스 내에 신뢰할 수 없는 코드를 자동으로 캡슐화하는데, 각각의 회는 잠재적으로 그 자신의 고유한 우선 정책을 갖는다.
대안 실시예들은 단순한 보안 이상의 보호를 제공하는 정책들을 포함한다. 정책들의 차이들은 실행 시스템들(예를 들어, 브라우저들) 사이에 정규화될 수 있으며, 정책들은 또한 새로운 API들을 갖도록 디폴트 능력들을 확장하거나, 버그들 또는 다른 문제들이 개발자에게 투명해지게 할 수 있다.
웹 기반 스크립트 가능한 콘텐츠에 대해, 정책들을 적용하기 전에, 자원들(예를 들어, HTML, CSS 및 스크립트들)은 현재 서버측에서 변환되는 것이 필요할 수 있다. 이러한 변환은 검증 단계가 아니라, 단지 클라이언트측 정책들이 실행 시간에 적용되는 것을 가능하게 한다. 대안 실시예들은 변환 단계가 코드 검증, 버전잉, 저자 프로파일 등과 더불어 콘텐츠를 "발행" 또는 "렌더링"하는 더 큰 프로세스의 일부가 되는 것을 가능하게 할 수 있는 것이 상상될 수 있다.
브라우저 또는 WBA(118)와 관련하여 종종 관찰되지만, 매쉬업들 주위의 모든 전술한 문제들은 신뢰할 수 없는 콘텐츠(스크립트, DLL 등인지에 관계없음)가 더 큰 애플리케이션 내에서 실행되는 임의의 환경에 적용될 수 있다. 따라서, WBA(118)는 거의 하나의 가능한 인스턴스화로서 간주되어야 한다.
(페이지 상에 격리된 컴포넌트들인) 전통적인 웹 장치들에 비해, 본 발명의 실시예들은 코드 또는 스크립트 콘텐츠가 페이지 내에서 고유하게 실행되고, 정책에 따라 주변 API들 또는 환경에 대한 액세스를 갖는 것을 허가한다. 이러한 접근법은 또한 웹사이트 확장성에 대한 호스트 기반 모델로서 이용된다.
이제, 도 13을 참조하면, 본 발명의 일 실시예에 따른 웹페이지 내의 스크립트 콘텐츠를 보호하는 동작을 나타내는 예시적인 흐름도가 도시되어 있다. 예를 들어, 단계(602)에서, 콘텐츠 홀더 내의 컴포넌트에 대한 정책이 정의된다. 컴포넌트는 사용자와 콘텐츠 홀더 내의 다른 콘텐츠 사이의 상호작용들을 제공한다. 정의된 정책은 컴포넌트의 실행 경계를 나타낸다. 단계(604)에서, 정책 엔진 및/또는 컴포넌트를 가진 콘텐츠 홀더가 호스트 장치 상의 애플리케이션에서의 렌더링을 위해 전송된다. 애플리케이션에 의한 렌더링에 응답하여, 서버의 자원에 대한 컴포넌트로부터의 요청이 단계(606)에서 인터셉트된다. 자원은 사용자 및 콘텐츠 홀더로부터의 다른 콘텐츠 중 적어도 하나와의 상호작용을 위해 컴포넌트에 서비스들을 제공한다. 단계(608)에서, 인터셉트된 요청은 정의된 정책 내에 실행 경계에 대해 평가된다. 단계(610)에서, 평가에 응답하여 동적 해결책이 제공된다.
이제, 도 16을 참조하면, 본 발명의 일 실시예에 따른 클라이언트 장치 상의 웹페이지 내의 스크립트 콘텐츠를 보호하는 동작들을 나타내는 블록도가 도시되어 있다. 도 16은 도 1에 유사하게 설명된 일 실시예를 더 확장한다. 클라이언트 장치(702)는 로컬 메모리(704), 디스플레이(706) 및 애플리케이션(710)을 포함한다. 로컬 메모리(704)는 서버(106)와 같은 원격 서버에 의해 액세스될 수 있는 원격 메모리 영역(712)으로부터의 정책들(708)을 저장한다. 정책들의 각각은 함수 또는 애플리케이션 프로그램에 대한 실행 경계를 정의한다. 일례에서, 실행 경계는 함수 또는 애플리케이션 프로그램의 자원 액세스 제한들 또는 액세스 우선순위들을 정의한다. 이 실시예에서, 애플리케이션(710)(예를 들어, WBA(118))은 원격 컴퓨팅 장치들로부터 클라이언트 장치(702)로 전송된 콘텐츠를 렌더링한다. 일례에서, 콘텐츠는 콘텐츠 홀더(예컨대, 웹페이지) 내에 수집될 수 있으며, 콘텐츠는 마크업 언어들로 작성된 콘텐츠, 그래픽 및 멀티미디어를 가진 콘텐츠 등을 포함하는 온라인 콘텐츠일 수 있다. 단계(712)에서, 콘텐츠의 렌더링 시에, 애플리케이션(710)은 온라인 콘텐츠의 렌더링, 제공 또는 로딩에 응답하여 콘텐츠 홀더의 웹 스크립트 콘텐츠를 식별한다. 식별된 웹 스크립트 콘텐츠는 전술한 바와 같이 온라인 콘텐츠의 다른 부분들과 상호작용하기 위해 실행 호출을 발행하도록 구성된다. 실행 호출은 예를 들어 함수 호출, 함수 요청, API 주문, API 호출 등을 포함할 수 있다. 실행 호출은 또한 본 발명의 실시예들의 범위를 벗어나지 않고 다른 자원들을 요청할 수 있다. 단계(714)에서, 애플리케이션(710)은 식별된 웹 스크립트 콘텐츠로부터 발행된 실행 호출을 인터셉트한다.
단계(716)에서, 애플리케이션(710)은 인터셉트된 실행 호출 내에 포함된 파라미터들을 더 식별할 수 있다. 식별된 파라미터들은 많은 동작들 중에서 온라인 콘텐츠의 다른 부분들과 상호작용하기 위해 애플리케이션 또는 클라이언트 장치로부터 자원들을 요청할 수 있다. 다른 실시예에서, 식별된 파라미터들은 사용자(114)와 같은 사용자와의 상호작용을 위해 애플리케이션 또는 클라이언트 장치로부터 자원들을 요청할 수 있다. 단계(718)에서, 애플리케이션(710)은 로컬 메모리(704)에 저장된 정책들의 각각의 실행 경계에 대해 식별된 파라미터들을 평가한다. 예를 들어, 애플리케이션(710)은 실행 경계에 대해 식별된 파라미터들을 분석하여, 웹 스크립트 콘텐츠가 애플리케이션(710) 또는 클라이언트 장치(702)의 실행 환경 내에서 실행될 수 있는지를 결정한다. 단계(720)에서, 애플리케이션(710)은 평가된 파라미터들에 응답하여 동적 해결책을 애플리케이션에 제공한다. 전술한 바와 같이, 해결책은 발행된 실행 호출의 변경, 대체, 제거 또는 증대를 포함할 수 있다. 단계(722)에서, 디스플레이(706)는 제공된 해결책(722)을 사용자에게 표시할 수 있다.
설명의 목적으로, 운영 체제와 같은 프로그램들 및 다른 실행가능 프로그램 컴포넌트들은 본 명세서에서 개별 블록들로 도시된다. 그러나, 그러한 프로그램들 및 컴포넌트들은 다양한 시간에 컴퓨터의 상이한 저장 컴포넌트들 내에 위치하며, 컴퓨터의 데이터 프로세서(들)에 의해 실행된다는 것을 인식한다.
본 발명의 실시예들은 클라이언트 장치(702)를 포함하는 예시적인 컴퓨팅 시스템 환경과 관련하여 설명되지만, 많은 기타 범용 또는 특수 목적의 컴퓨팅 시스템 환경 또는 구성에서 동작할 수 있다. 컴퓨팅 시스템 환경은 본 발명의 임의 양태의 용도 또는 기능성의 범위에 관해 어떤 제한을 암시하고자 하는 것이 아니다. 더욱이, 컴퓨팅 시스템 환경은 예시적인 운영 환경에 도시된 컴포넌트들 중 어느 하나 또는 조합에 관련된 임의의 종속성 또는 요구를 갖는 것으로 해석되지 않아야 한다. 본 발명의 양태들에서 사용하기에 적합할 수 있는 공지된 컴퓨팅 시스템, 환경 및/또는 구성의 예로는 퍼스널 컴퓨터, 서버 컴퓨터, 핸드헬드 또는 랩톱 장치, 멀티프로세서 시스템, 마이크로프로세서 기반 시스템, 셋톱 박스, 프로그램가능한 가전제품, 이동 전화, 네트워크 PC, 미니 컴퓨터, 메인프레임 컴퓨터, 상기 시스템들이나 장치들 중 임의의 것을 포함하는 분산 컴퓨팅 환경, 기타 등등이 있지만 이에 제한되는 것은 아니다.
본 발명의 실시예들은 일반적으로 하나 이상의 컴퓨터 또는 다른 장치에 의해 실행되는 프로그램 모듈과 같은 컴퓨터 실행가능 명령어와 관련하여 기술될 수 있다. 일반적으로, 프로그램 모듈은 특정 태스크를 수행하거나 특정 추상 데이터 유형을 구현하는 루틴, 프로그램, 개체, 컴포넌트 및 데이터 구조를 포함하지만 이에 제한되는 것은 아니다. 본 발명의 양태들은 또한 통신 네트워크를 통해 연결되어 있는 원격 처리 장치들에 의해 태스크가 수행되는 분산 컴퓨팅 환경들에서 실시될 수 있다. 분산 컴퓨팅 환경에서, 프로그램 모듈은 메모리 저장 장치를 비롯한 로컬 및 원격 컴퓨터 저장 매체 둘다에 위치할 수 있다.
소프트웨어 아키텍처와 관련된 인터페이스는 소프트웨어 모듈, 컴포넌트, 코드 부분, 또는 컴퓨터 실행가능 명령어들의 다른 시퀀스를 포함한다. 인터페이스는 예를 들어 제1 모듈이 제1 모듈을 대신하여 컴퓨팅 작업들을 수행하기 위한 제2 모듈에 액세스하는 것을 포함한다. 제1 및 제2 모듈들은 일례에서 운영 체제들에 의해 제공되는 것과 같은 애플리케이션 프로그래밍 인터페이스(API), (예를 들어, 피어 대 피어 애플리케이션 통신을 위한) 컴포넌트 개체 모델(COM) 인터페이스, 및 (예를 들어, 웹 서비스들 사이의 통신을 위한) 확장형 마크업 언어 메타데이터 교환 포맷(XMI) 인터페이스를 포함한다.
인터페이스는 자바 2 플랫폼 기업 에디션(J2EE), COM 또는 분산 COM(DCOM) 예들에서와 같은 긴밀하게 결합된 동기 구현일 수 있다. 대안으로 또는 추가로, 인터페이스는 (예를 들어, 간단한 개체 액세스 프로토콜을 이용하는) 웹 서비스에서와 같은 느슨하게 결합된 비동기 구현일 수 있다. 일반적으로, 인터페이스는 다음 특징들, 즉 긴밀한 결합, 느슨한 결합, 동기 및 비동기의 임의의 조합을 포함한다. 또한, 인터페이스는 표준 프로토콜, 독점 프로토콜, 또는 표준 및 독점 프로토콜들의 임의 조합에 따를 수 있다.
여기에 설명되는 인터페이스들은 모두 단일 인터페이스의 일부일 수 있거나, 개별 인터페이스들 또는 그들의 임의 조합으로서 구현될 수 있다. 인터페이스들은 기능을 제공하기 위해 국지적으로 또는 원격적으로 실행될 수 있다. 또한, 인터페이스들은 여기에 도시되거나 설명된 것보다 많거나 적은 기능을 포함할 수 있다.
본 발명의 실시예들은 컴퓨터 실행가능 명령어로 구현될 수 있다. 컴퓨터 실행가능 명령어는 하나 이상의 컴퓨터 실행가능 컴포넌트 또는 모듈로 체계화될 수 있다. 본 발명의 양태들은 임의 수 및 체계의 그러한 컴포넌트들 또는 모듈들로 구현될 수 있다. 예를 들어, 본 발명의 양태들은 도면들에 도시되고 여기에 설명된 특정 컴퓨터 실행가능 명령어 또는 특정 컴포넌트로 제한되지 않는다. 본 발명의 다른 실시예들은 여기에 도시되고 설명된 것보다 많거나 적은 기능을 갖는 상이한 컴퓨터 실행가능 명령어 또는 컴포넌트를 포함할 수 있다.
여기에 도시되고 설명된 본 발명의 실시예들에서의 동작들의 실행 또는 수행의 순서는 달리 지정되지 않는 한은 필수적이 아니다. 즉, 동작들은 달리 지정되지 않은 한은 임의 순서로 수행될 수 있으며, 본 발명의 실시예들은 여기에 설명된 것보다 많거나 적은 동작들을 포함할 수 있다. 예를 들어, 특정 동작을 다른 동작 전에, 동시에 또는 후에 실행하거나 수행하는 것은 본 발명의 양태들의 범위 내에 있는 것으로 고려된다.
본 발명의 양태들 또는 실시예들의 요소들을 소개할 때, 관사들 "하나" 및 "상기"(a, an, the, said)는 하나 이상의 요소가 존재함을 의미하는 것을 의도한다. "포함하는", "구비하는" 및 "갖는"이라는 용어들은 포괄적이고, 나열된 요소들과 다른 추가 요소들이 존재할 수 있음을 의미하는 것을 의도한다.
본 발명의 양태들이 상세히 설명되었지만, 첨부된 청구항들에서 정의되는 바와 같은 본 발명의 양태들의 범위를 벗어나지 않고서 변경들 및 변형들이 가능하다는 것은 명백할 것이다. 본 발명의 양태들의 범위를 벗어나지 않고 위의 구성들, 제품들 및 방법들에서 다양한 변경들이 이루어질 수 있으므로, 위의 설명에 포함되고 첨부 도면들에 도시된 모든 내용은 제한적인 것이 아니라 예시적인 것으로 해석되어야 함을 의도한다.
부록 A
샘플 구현
아래의 예는 소스 코드로부터 안전한 코드로의 변환 및 안전 코드의 실행을 나타내며, 이는 도 14(가장 내측의 직사각형 "CODE SAMPLE"(1402))에 도시되어 있다. 도 14에서, 아래의 소스 "코드"를 고려한다.
Figure 112010043347017-pct00001
Figure 112010043347017-pct00002

알 수 있듯이, 위의 소스는 CSS, HTML 및 JavaScript를 포함한다. CSS는 <body> 태그에 스타일들을 적용하며, 스크립트는 "body"에 이벤트를 첨부한다. HTML은 "id"를 갖는 <span>을 포함한다. 알아야 하듯이, 위의 소스 코드의 변환 및 실행 동안에, 실행 시간은 1. 도 15에 도시된 바와 같이, 코드에 의해 참조되는 "body"가 결과 페이지 내의 코드에 대한 샌드박스화된 컨테이너임을 보장할 것이다(이 실시예에서, 샌드박스는 <div>이다). 이것은 CSS 스타일은 물론, 스크립트 참조들(attachEvent 및 innerHTML)에도 적용된다; 2. <span> 섹션의 "id"를 이 코드에 고유한 id로 개명할 것이다. 이것은 코드에 투명하며, 따라서 "currentTime"에 계속 액세스한다. 실행 시간은 맵핑을 처리한다.
위의 코드가 변환될 때, 다음의 코드가 생성된다.
Figure 112010043347017-pct00003
Figure 112010043347017-pct00004

현재의 실시예는 오리지널 HTML을 메소드 호출: registerCode로 변환한다. 알 수 있듯이, 이러한 메소드 호출은 컨테이너 페이지 내에 안전하게 삽입될 수 있다. 이들은 단순히 실행 시간 내로의 호출들이다. 변환 단계는 CSS를 "JSON" 포맷으로 변환하였다. 이 JSON 개체는 실행 시간에 대한 입력으로서 사용된다.
일 실시예는 소스로부터의 HTML을 "documentElement"의 "innerHTML"에 대한 속성 값으로 간단히 변환하였다. 실행 시간은 HTML이 안전하고, 주요 정책들을 따르는 것을 보장할 것이다. 주: 미래의 실시예들은 소스 HTML을 JSON과 같은 다른 포맷들로 변환할 수 있다. 이러한 실시예에서는, 전술한 바와 같은 "addSheet"를 호출하는 대신에 설정이 registerCode로 전달된다.
JavaScript 코드는 실행 시간 메소드들 "b", "c", "d" 등 내로의 호출들로 변환되었다. 이들은 속성 설정/취득, 메소드 호출 및 개체 생성이 정책들을 따르는 것을 보장하는 실행 시간 메소드들이다.
변환된 코드가 결과 페이지 내에서 "실행"될 때, 실행 시간은 다음의 코드 부분들을 생성한다.
Figure 112010043347017-pct00005
소스 CSS는 "tag selector" 신택스를 이용하여, "<body>" 태그에 스타일을 적용하였다. 이것은 "ms__id1"의 클래스를 갖는 요소에 적용되는 "class selector"로 변환되었다. 이것은 이제 변환된 HTML에 대한 "샌드박스"인 <div> 섹션이다.
Figure 112010043347017-pct00006
Figure 112010043347017-pct00007

알 수 있듯이, 실행 시간은 고유성을 보장하기 위해 "ms__id1"을 <span> id에 첨부하였다. 물론, 샌드박스화된 코드는 이것이 발생한 것을 알지 못한다. 각각의 타이머 틱 시에, "currentTime"의 innerText가 설정된다.
"lightblue"의 CSS 배경 칼라는 소스에 할당된 샌드박스화된 영역에만 적용되었다. 이 영역 내를 클릭할 때, 코드는 "body"를 포함하는 경고 박스를 표시한다.

Claims (20)

  1. 웹 상호작용 컴포넌트를 평가하는 방법으로서,
    콘텐츠 홀더 내의 컴포넌트에 대한 정책을 정의하는 단계 - 상기 컴포넌트는 상기 컴포넌트가 렌더링될 때 사용자와 상기 콘텐츠 홀더 내의 다른 콘텐츠 사이의 상호작용들을 제공하고, 상기 정의된 정책은 실행 시간 동안의 상기 컴포넌트의 실행 경계(execution boundary)를 나타내고, 상기 실행 경계는 상기 컴포넌트의 자원 액세스 한계를 정의함 -;
    상기 컴포넌트 내의 스크립트 콘텐츠의 적어도 일부를 상기 컴포넌트의 실행 시간에 실행될 함수의 속성 값으로 변환하는 단계- 상기 실행 경계는 상기 실행 시간 함수의 액세스 우선순위를 정의함 -;
    호스트 장치 상의 애플리케이션에서 렌더링되도록 상기 변환된 컴포넌트를 갖는 상기 콘텐츠 홀더를 전송하는 단계;
    상기 애플리케이션에 의한 렌더링에 응답하여, 상기 전송된 컴포넌트로부터 서버로의 상기 서버의 자원에 대한 요청을 인터셉트하는 단계 - 상기 인터셉트하는 단계는 상기 서버가 상기 요청을 수신하지 못하게 하고, 상기 자원은 상기 사용자 및 상기 콘텐츠 홀더로부터의 다른 콘텐츠 중 적어도 하나와의 상호작용을 위한 서비스들을 상기 전송된 컴포넌트에 제공함 -;
    상기 정의된 정책 내의 상기 실행 경계에 대해 상기 인터셉트된 요청을 평가하는 단계; 및
    상기 평가된 요청에 응답하여 상기 서버 또는 상기 애플리케이션에 동적 해결책(dynamic resolution)을 제공하는 단계
    를 포함하는 웹 상호작용 컴포넌트 평가 방법.
  2. 제1항에 있어서,
    상기 동적 해결책을 제공하는 단계는,
    상기 요청된 자원이 상기 실행 경계 내에서 실행될 수 있는 경우에 상기 요청을 승인하는 단계,
    상기 요청된 자원이 상기 실행 경계 내에서 실행될 수 없는 경우에 상기 요청을 거절하는 단계,
    상기 요청을 승인하기 전에 상기 요청을 증대시키는(augmenting) 단계,
    다른 요청에 응답하여 대체 해결책(substitute resolution)을 제공하기 전에 상기 요청을 상기 다른 요청으로 대체하는 단계, 및
    상기 요청의 승인 또는 거절에 대해 상기 사용자로부터의 사용자 입력을 요청하는 단계
    중 적어도 하나를 포함하는 웹 상호작용 컴포넌트 평가 방법.
  3. 제1항에 있어서,
    상기 컴포넌트로부터의 요청을 수신하기 위한 애플리케이션 프로그래밍 인터페이스(API)를 제공하는 단계를 더 포함하고, 상기 인터셉트하는 단계는 상기 서버의 자원에 대한 상기 API로부터의 요청을 인터셉트하는 단계를 포함하는
    웹 상호작용 컴포넌트 평가 방법.
  4. 제1항에 있어서,
    상기 컴포넌트의 복수의 인스턴스를 인스턴스화하는 단계를 더 포함하는
    웹 상호작용 컴포넌트 평가 방법.
  5. 제4항에 있어서,
    상기 인터셉트하는 단계는 상기 컴포넌트의 상기 복수의 인스턴스화된 인스턴스의 각각으로부터의 서버의 자원에 대한 요청을 인터셉트하는 단계를 포함하는
    웹 상호작용 컴포넌트 평가 방법.
  6. 제1항에 있어서,
    상기 평가에 응답하여 상기 컴포넌트로부터의 요청을 수정하는 단계를 더 포함하고, 상기 요청을 수정하는 단계는 상기 요청이 상기 정의된 정책에 기초하는 상기 실행 경계 내에 있도록 상기 요청을 재작성하는 단계를 포함하는
    웹 상호작용 컴포넌트 평가 방법.
  7. 다양한 소스로부터의 거동들 및 코드를 통합한 스크립트 콘텐츠의 보안을 평가하는 시스템으로서,
    웹페이지 내의 스크립트 콘텐츠에 대한 정책을 정의하고 - 상기 스크립트 콘텐츠는 사용자와 상기 웹페이지 내의 다른 콘텐츠 사이의 상호작용들을 제공하고, 상기 정의된 정책은 상기 스크립트 콘텐츠의 실행 경계를 나타내고, 상기 실행 경계는 상기 스크립트 콘텐츠의 자원 액세스를 정의함 -,
    상기 정의된 정책 내의 실행 경계에 대해 상기 스크립트 콘텐츠를 평가하고,
    상기 평가에 응답하여 상기 웹페이지의 적어도 일부를 실행 시간에 변환하고,
    상기 웹페이지 내의 상기 스크립트 콘텐츠의 적어도 일부를, 컴포넌트의 실행 시간에 실행되도록 상기 스크립트 콘텐츠에 포함된 함수의 속성 값으로 변환하고- 상기 실행 경계는 상기 함수의 우선순위를 정의함 -,
    상기 스크립트 콘텐츠의 변환된 부분을, 다른 스크립트 콘텐츠를 맵핑하는 다른 속성 값으로 대체- 상기 다른 속성 값은 실행 시간에 실행될 때 상기 정의된 정책의 실행 경계 내에 있음 -하기 위한 컴퓨터 실행가능 명령어들을 실행하도록 구성되는 프로세서; 및
    호스트 장치 상의 애플리케이션에서 렌더링되도록 상기 스크립트 콘텐츠의 상기 변환된 부분을 갖는 상기 웹페이지를 전송하기 위한 인터페이스
    를 포함하는 스크립트 콘텐츠 보안 평가 시스템.
  8. 제7항에 있어서,
    상기 프로세서는 상기 평가에 응답하여 서버 또는 상기 애플리케이션에 동적 해결책을 제공하도록 더 구성되는
    스크립트 콘텐츠 보안 평가 시스템.
  9. 제8항에 있어서,
    상기 동적 해결책은,
    상기 웹페이지의 변환된 부분이 상기 실행 경계 내에서 실행될 수 있는 경우에 요청을 승인하는 것,
    상기 웹페이지의 변환된 부분이 상기 실행 경계 내에서 실행될 수 없는 경우에 요청을 거절하는 것,
    요청을 승인하기 전에 그 요청을 증대시키는 것,
    다른 요청에 응답하여 대체 해결책을 제공하기 전에 요청을 상기 다른 요청으로 대체하는 것, 및
    상기 웹 페이지의 상기 변환된 부분으로부터의 요청의 승인 또는 거절에 대해 상기 사용자로부터의 사용자 입력을 요청하는 것
    중 적어도 하나를 포함하는 스크립트 콘텐츠 보안 평가 시스템.
  10. 제8항에 있어서,
    상기 스크립트 콘텐츠로부터 요청을 수신하기 위한 애플리케이션 프로그래밍 인터페이스(API)를 더 포함하고, 상기 프로세서는 상기 API를 실행하여, 서버의 자원에 대해 수신된 요청을 처리하는
    스크립트 콘텐츠 보안 평가 시스템.
  11. 제7항에 있어서,
    상기 프로세서는 상기 스크립트 콘텐츠의 복수의 인스턴스를 인스턴스화하도록 더 구성되는
    스크립트 콘텐츠 보안 평가 시스템.
  12. 제7항에 있어서,
    상기 프로세서는 변환 동안에 상기 스크립트 콘텐츠를 수정하도록 더 구성되고, 상기 프로세서는 상기 스크립트 콘텐츠를 다른 스크립트 콘텐츠에 부합하도록 재작성하고, 상기 다른 스크립트 콘텐츠는 상기 정의된 정책에 기초하는 실행 경계 내에 있는
    스크립트 콘텐츠 보안 평가 시스템.
  13. 웹 상호작용 함수를 보호(secure)하는 방법으로서,
    웹페이지 내의 웹 상호작용 함수에 대한 정책을 정의하는 단계 - 상기 웹 상호작용 함수는 사용자 및 상기 웹페이지 내의 다른 콘텐츠에 대한 상호작용들을 제공하고, 상기 정의된 정책은 상기 웹 상호작용 함수의 실행 경계를 나타내고, 상기 실행 경계는 상기 웹 상호작용 함수의 자원 액세스를 정의함 -;
    호스트 장치 상의 애플리케이션에서 렌더링되도록 상기 웹페이지를 전송하는 단계;
    상기 애플리케이션에 의한 렌더링에 응답하여, 상기 사용자 또는 상기 웹페이지 내의 다른 콘텐츠와 상호작용하기 위한 요청에 대해 상기 웹 상호작용 함수를 모니터링하는 단계;
    상기 웹 상호작용 함수로부터 서버로의 상기 서버의 자원에 대한 모니터링된 요청을 인터셉트하는 단계 - 상기 인터셉트하는 단계는 상기 서버가 상기 요청을 수신하지 못하게 하고, 상기 자원은 상기 사용자 및 상기 웹페이지로부터의 다른 콘텐츠 중 적어도 하나와의 상호작용을 위한 서비스들을 상기 웹 상호작용 함수에 제공함 -;
    상기 정의된 정책 내의 실행 경계에 대해 상기 인터셉트된 요청을 평가하는 단계;
    상기 인터셉트된 요청을 재작성하여 재작성되는 요청이 상기 정의된 정책에 기초하는 상기 실행 경계 내에 있도록 하는 단계;
    상기 웹 상호작용 함수의 스크립트 콘텐츠의 적어도 일부를, 컴포넌트의 실행 시간에 실행되도록 스크립트 콘텐츠에 포함된 실행 시간 함수의 속성 값으로 변환하는 단계- 상기 실행 경계는 상기 실행 시간 함수의 액세스 우선순위를 정의함 -; 및
    상기 평가에 응답하여 상기 서버 또는 상기 애플리케이션에 동적 해결책을 제공하는 단계
    를 포함하는 웹 상호작용 함수 보호 방법.
  14. 제13항에 있어서,
    상기 동적 해결책을 제공하는 단계는,
    상기 요청된 자원이 상기 실행 경계 내에서 실행될 수 있는 경우에 상기 요청을 승인하는 단계,
    상기 요청된 자원이 상기 실행 경계 내에서 실행될 수 없는 경우에 상기 요청을 거절하는 단계,
    상기 요청을 승인하기 전에 상기 요청을 증대시키는 단계,
    다른 요청에 응답하여 대체 해결책을 제공하기 전에 상기 요청을 상기 다른 요청으로 대체하는 단계, 및
    상기 요청의 승인 또는 거절에 대해 상기 사용자로부터의 사용자 입력을 요청하는 단계
    중 적어도 하나를 포함하는 웹 상호작용 함수 보호 방법.
  15. 제13항에 있어서,
    상기 함수로부터의 요청을 수신하기 위한 애플리케이션 프로그래밍 인터페이스(API)를 제공하는 단계를 더 포함하고, 상기 인터셉트하는 단계는 상기 서버의 자원에 대한 상기 API로부터의 요청을 인터셉트하는 단계를 포함하는 웹 상호작용 함수 보호 방법.
  16. 제13항에 있어서,
    복수의 웹페이지가 상기 애플리케이션에 의해 렌더링될 때 상기 함수의 복수의 인스턴스를 인스턴스화하는 단계를 더 포함하는 웹 상호작용 함수 보호 방법.
  17. 제16항에 있어서,
    상기 인터셉트하는 단계는 상기 컴포넌트의 상기 복수의 인스턴스화된 인스턴스의 각각으로부터의 상기 서버의 자원에 대한 요청을 인터셉트하는 단계를 포함하는 웹 상호작용 함수 보호 방법.
  18. 삭제
  19. 삭제
  20. 삭제
KR1020107014899A 2008-01-11 2008-12-17 안전하고 확장 가능한 정책 기반 애플리케이션 플랫폼 KR101549816B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US2059708P 2008-01-11 2008-01-11
US61/020,597 2008-01-11
US12/118,321 2008-05-09
US12/118,321 US8438636B2 (en) 2008-01-11 2008-05-09 Secure and extensible policy-driven application platform

Publications (2)

Publication Number Publication Date
KR20100112123A KR20100112123A (ko) 2010-10-18
KR101549816B1 true KR101549816B1 (ko) 2015-09-03

Family

ID=40851829

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020107014899A KR101549816B1 (ko) 2008-01-11 2008-12-17 안전하고 확장 가능한 정책 기반 애플리케이션 플랫폼

Country Status (5)

Country Link
US (2) US20090183227A1 (ko)
EP (1) EP2229637B1 (ko)
KR (1) KR101549816B1 (ko)
CN (1) CN101911054B (ko)
WO (1) WO2009088685A1 (ko)

Families Citing this family (57)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8245049B2 (en) * 2004-06-14 2012-08-14 Microsoft Corporation Method and system for validating access to a group of related elements
US8078740B2 (en) 2005-06-03 2011-12-13 Microsoft Corporation Running internet applications with low rights
US8225392B2 (en) * 2005-07-15 2012-07-17 Microsoft Corporation Immunizing HTML browsers and extensions from known vulnerabilities
US8239939B2 (en) * 2005-07-15 2012-08-07 Microsoft Corporation Browser protection module
US8245270B2 (en) 2005-09-01 2012-08-14 Microsoft Corporation Resource based dynamic security authorization
US8250082B2 (en) 2006-06-23 2012-08-21 Microsoft Corporation Cross domain communication
US8185737B2 (en) 2006-06-23 2012-05-22 Microsoft Corporation Communication across domains
US10019570B2 (en) 2007-06-14 2018-07-10 Microsoft Technology Licensing, Llc Protection and communication abstractions for web browsers
KR101528853B1 (ko) * 2007-12-14 2015-07-01 삼성전자주식회사 Api 서비스 방법과 api 매쉬업 생성 방법, 장치 및기록매체
US8621495B2 (en) 2008-01-18 2013-12-31 Microsoft Corporation Methods and apparatus for securing frames from other frames
US8522200B2 (en) * 2008-08-28 2013-08-27 Microsoft Corporation Detouring in scripting systems
US8793398B2 (en) * 2008-08-29 2014-07-29 Red Hat, Inc. Facilitating client server interaction
US8793339B2 (en) * 2008-08-29 2014-07-29 Red Hat, Inc. Facilitating client server interaction
US8631046B2 (en) 2009-01-07 2014-01-14 Oracle International Corporation Generic ontology based semantic business policy engine
US9672478B2 (en) * 2009-02-26 2017-06-06 Oracle International Corporation Techniques for semantic business policy composition
US8312171B2 (en) * 2009-03-27 2012-11-13 Oracle International Corp. Generic preventative user interface controls
US9185064B2 (en) 2010-01-15 2015-11-10 Microsoft Technology Licensing, Llc Interactive email
US8949236B2 (en) 2010-02-26 2015-02-03 Oracle International Corporation Techniques for analyzing data from multiple sources
US9262396B1 (en) 2010-03-26 2016-02-16 Amazon Technologies, Inc. Browser compatibility checker tool
US9164671B2 (en) * 2010-06-11 2015-10-20 Microsoft Technology Licensing, Llc Web application navigation domains
US8671384B2 (en) 2010-06-11 2014-03-11 Microsoft Corporation Web application pinning including task bar pinning
US8793650B2 (en) 2010-06-11 2014-07-29 Microsoft Corporation Dynamic web application notifications including task bar overlays
US8863001B2 (en) 2010-06-11 2014-10-14 Microsoft Corporation Web application home button
US9400958B2 (en) 2010-06-30 2016-07-26 Oracle International Corporation Techniques for display of information related to policies
US20120117456A1 (en) * 2010-11-05 2012-05-10 Nokia Corporation Method and apparatus for automated interfaces
CN102026030A (zh) * 2010-12-01 2011-04-20 福建新大陆通信科技股份有限公司 一种机顶盒脚本调用c语言函数的方法
US8788884B2 (en) * 2010-12-07 2014-07-22 Massachusetts Institute Of Technology Automatic correction of program logic
US8438640B1 (en) 2010-12-21 2013-05-07 Adobe Systems Incorporated Method and apparatus for reverse patching of application programming interface calls in a sandbox environment
US11062615B1 (en) 2011-03-01 2021-07-13 Intelligibility Training LLC Methods and systems for remote language learning in a pandemic-aware world
US10019995B1 (en) 2011-03-01 2018-07-10 Alice J. Stiebel Methods and systems for language learning based on a series of pitch patterns
US9342274B2 (en) 2011-05-19 2016-05-17 Microsoft Technology Licensing, Llc Dynamic code generation and memory management for component object model data constructs
US8881101B2 (en) 2011-05-24 2014-11-04 Microsoft Corporation Binding between a layout engine and a scripting engine
US8898096B2 (en) 2011-05-31 2014-11-25 Oracle International Corporation Application configuration generation
US8954309B2 (en) 2011-05-31 2015-02-10 Oracle International Corporation Techniques for application tuning
US9003423B1 (en) * 2011-07-29 2015-04-07 Amazon Technologies, Inc. Dynamic browser compatibility checker
US9280377B2 (en) 2013-03-29 2016-03-08 Citrix Systems, Inc. Application with multiple operation modes
US9529996B2 (en) 2011-10-11 2016-12-27 Citrix Systems, Inc. Controlling mobile device access to enterprise resources
US9626507B2 (en) * 2012-04-06 2017-04-18 Google Inc. Hosted application sandboxing
US8700737B2 (en) * 2012-05-31 2014-04-15 Xerox Corporation Automated method for generating a web service composition
US9971585B2 (en) 2012-10-16 2018-05-15 Citrix Systems, Inc. Wrapping unmanaged applications on a mobile device
CN104854561B (zh) * 2012-10-16 2018-05-11 思杰系统有限公司 用于应用程序管理框架的应用程序封装
JP5702352B2 (ja) * 2012-10-31 2015-04-15 株式会社オプティム ユーザ端末、信頼性管理サーバ、不正遠隔操作防止方法、及び不正遠隔操作防止プログラム
JP6217092B2 (ja) * 2013-03-05 2017-10-25 富士通株式会社 情報処理装置、システム、情報処理方法及びプログラム
US10284627B2 (en) 2013-03-29 2019-05-07 Citrix Systems, Inc. Data management for an application with multiple operation modes
US9430452B2 (en) 2013-06-06 2016-08-30 Microsoft Technology Licensing, Llc Memory model for a layout engine and scripting engine
US9774620B2 (en) * 2013-06-18 2017-09-26 Microsoft Technology Licensing, Llc Automatic code and data separation of web application
US9294364B2 (en) 2013-11-01 2016-03-22 Nokia Technologies Oy Method and apparatus for transforming application access and data storage details to privacy policies
US9825812B2 (en) * 2013-12-05 2017-11-21 Pulse Secure, Llc Transparently intercepting and optimizing resource requests
US9443077B1 (en) * 2013-12-26 2016-09-13 Google Inc. Flagging binaries that drop malicious browser extensions and web applications
US9697374B2 (en) * 2014-02-19 2017-07-04 Microsoft Technology Licensing, Llc Data proxy service
CN104008316B (zh) * 2014-06-17 2016-09-21 合一网络技术(北京)有限公司 基于改变脚本环境进行信息隐藏的方法和系统
KR102232085B1 (ko) * 2014-10-10 2021-03-25 주식회사 케이티 웹 페이지를 동적으로 제공하는 방법, 웹 서버 및 컴퓨팅 장치
US10044788B2 (en) * 2015-11-17 2018-08-07 Wyse Technology L.L.C. Native client multimedia redirection
US9923905B2 (en) * 2016-02-01 2018-03-20 General Electric Company System and method for zone access control
US10306016B2 (en) 2016-02-01 2019-05-28 General Electric Company System and method for scoped attributes
US11132113B1 (en) * 2020-07-23 2021-09-28 Microsoft Technology Licensing, Llc Interaction signal processing in distributed computing systems
CN112597412A (zh) * 2020-12-26 2021-04-02 中国农业银行股份有限公司 一种页面加载方法及装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030088807A1 (en) 2001-11-07 2003-05-08 Mathiske Bernd J.W. Method and apparatus for facilitating checkpointing of an application through an interceptor library
US20050182924A1 (en) 2004-02-17 2005-08-18 Microsoft Corporation User interface accorded to tiered object-related trust decisions
US20070016949A1 (en) 2005-07-15 2007-01-18 Microsoft Corporation Browser Protection Module
US20070056019A1 (en) 2005-08-23 2007-03-08 Allen Paul L Implementing access control policies across dissimilar access control platforms

Family Cites Families (61)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2270581A (en) * 1992-09-15 1994-03-16 Ibm Computer workstation
US5623604A (en) * 1992-11-18 1997-04-22 Canon Information Systems, Inc. Method and apparatus for remotely altering programmable firmware stored in an interactive network board coupled to a network peripheral
US7185210B1 (en) * 1996-06-24 2007-02-27 Sun Microsystems, Inc. Policy abstraction mechanism
US5987611A (en) * 1996-12-31 1999-11-16 Zone Labs, Inc. System and methodology for managing internet access on a per application basis for client computers connected to the internet
EP0926605A1 (en) * 1997-11-19 1999-06-30 Hewlett-Packard Company Browser system
US6385301B1 (en) * 1998-03-26 2002-05-07 Bell Atlantic Services Network, Inc. Data preparation for traffic track usage measurement
US6345361B1 (en) * 1998-04-06 2002-02-05 Microsoft Corporation Directional set operations for permission based security in a computer system
US6321334B1 (en) * 1998-07-15 2001-11-20 Microsoft Corporation Administering permissions associated with a security zone in a computer system security model
US6473800B1 (en) * 1998-07-15 2002-10-29 Microsoft Corporation Declarative permission requests in a computer system
US6519647B1 (en) * 1999-07-23 2003-02-11 Microsoft Corporation Methods and apparatus for synchronizing access control in a web server
GB2354350B (en) * 1999-09-17 2004-03-24 Mitel Corp Policy representations and mechanisms for the control of software
AUPQ518000A0 (en) 2000-01-20 2000-02-10 Odyssey Development Pty Ltd E-mail spam filter
US9213836B2 (en) * 2000-05-28 2015-12-15 Barhon Mayer, Batya System and method for comprehensive general electric protection for computers against malicious programs that may steal information and/or cause damages
US7051366B1 (en) * 2000-06-21 2006-05-23 Microsoft Corporation Evidence-based security policy manager
US20020178375A1 (en) * 2001-01-31 2002-11-28 Harris Corporation Method and system for protecting against malicious mobile code
AU2002254334A1 (en) * 2001-03-22 2002-10-08 Michael Chung Methods and systems for electronic mail, internet target and direct marketing, and electronic mail banner
WO2002084484A2 (en) * 2001-04-18 2002-10-24 Domosys Corporation Method of remotely upgrading firmware in field-deployed devices
US7290266B2 (en) * 2001-06-14 2007-10-30 Cisco Technology, Inc. Access control by a real-time stateful reference monitor with a state collection training mode and a lockdown mode for detecting predetermined patterns of events indicative of requests for operating system resources resulting in a decision to allow or block activity identified in a sequence of events based on a rule set defining a processing policy
US7546629B2 (en) * 2002-03-06 2009-06-09 Check Point Software Technologies, Inc. System and methodology for security policy arbitration
JP2003067208A (ja) * 2001-08-23 2003-03-07 Sony Corp 情報処理装置および方法、記録媒体、並びにプログラム
WO2003027878A1 (en) * 2001-09-28 2003-04-03 Fiberlink Communications Corporation Client-side network access polices and management applications
US7281132B2 (en) * 2001-10-19 2007-10-09 Sun Microsystems, Inc. Using token-based signing to install unsigned binaries
JP2003259767A (ja) * 2002-03-11 2003-09-16 Kanro Kk 疑似餌
US20030229501A1 (en) * 2002-06-03 2003-12-11 Copeland Bruce Wayne Systems and methods for efficient policy distribution
US20040054791A1 (en) * 2002-09-17 2004-03-18 Krishnendu Chakraborty System and method for enforcing user policies on a web server
US6850943B2 (en) * 2002-10-18 2005-02-01 Check Point Software Technologies, Inc. Security system and methodology for providing indirect access control
US7480907B1 (en) * 2003-01-09 2009-01-20 Hewlett-Packard Development Company, L.P. Mobile services network for update of firmware/software in mobile handsets
US7406502B1 (en) * 2003-02-20 2008-07-29 Sonicwall, Inc. Method and system for classifying a message based on canonical equivalent of acceptable items included in the message
US7249162B2 (en) * 2003-02-25 2007-07-24 Microsoft Corporation Adaptive junk message filtering system
US7299409B2 (en) * 2003-03-07 2007-11-20 International Business Machines Corporation Dynamically updating rendered content
US8145710B2 (en) * 2003-06-18 2012-03-27 Symantec Corporation System and method for filtering spam messages utilizing URL filtering module
US7757268B2 (en) * 2003-07-25 2010-07-13 Oracle International Corporation Policy based service management
US20050066290A1 (en) * 2003-09-16 2005-03-24 Chebolu Anil Kumar Pop-up capture
US20050102611A1 (en) * 2003-11-06 2005-05-12 Danny Chen Process for creating dynamic web pages driven from the server side
US8266218B2 (en) * 2004-02-12 2012-09-11 International Business Machines Corporation Automated electronic message filing system
US7467399B2 (en) * 2004-03-31 2008-12-16 International Business Machines Corporation Context-sensitive confidentiality within federated environments
US20070180490A1 (en) * 2004-05-20 2007-08-02 Renzi Silvio J System and method for policy management
US20060031347A1 (en) * 2004-06-17 2006-02-09 Pekka Sahi Corporate email system
US7730138B2 (en) * 2004-07-14 2010-06-01 Microsoft Corporation Policy processing model
US7533265B2 (en) * 2004-07-14 2009-05-12 Microsoft Corporation Establishment of security context
US20060047959A1 (en) * 2004-08-25 2006-03-02 Microsoft Corporation System and method for secure computing
JP2006085227A (ja) * 2004-09-14 2006-03-30 Fujitsu Ltd 通信端末装置
US7831995B2 (en) * 2004-10-29 2010-11-09 CORE, SDI, Inc. Establishing and enforcing security and privacy policies in web-based applications
WO2006101549A2 (en) * 2004-12-03 2006-09-28 Whitecell Software, Inc. Secure system for allowing the execution of authorized computer program code
US20070050446A1 (en) * 2005-02-01 2007-03-01 Moore James F Managing network-accessible resources
US7631341B2 (en) * 2005-04-28 2009-12-08 Microsoft Corporation Extensible security architecture for an interpretive environment
WO2006128273A1 (en) * 2005-06-01 2006-12-07 Research In Motion Limited System and method for determining a security encoding to be applied to outgoing messages
US8074272B2 (en) * 2005-07-07 2011-12-06 Microsoft Corporation Browser security notification
US8146013B2 (en) * 2005-07-26 2012-03-27 International Business Machines Corporation Allowing authorized pop-ups on a website
US7725737B2 (en) * 2005-10-14 2010-05-25 Check Point Software Technologies, Inc. System and methodology providing secure workspace environment
JP5054699B2 (ja) * 2005-10-20 2012-10-24 シスコ テクノロジー インコーポレーテッド ポリシ施行点インターフェース・システムおよび方法
US20070100915A1 (en) * 2005-10-31 2007-05-03 Rose Daniel E Methods for displaying dynamic suggestions in a user interface
US20070107057A1 (en) * 2005-11-10 2007-05-10 Docomo Communications Laboratories Usa, Inc. Method and apparatus for detecting and preventing unsafe behavior of javascript programs
US7836303B2 (en) * 2005-12-09 2010-11-16 University Of Washington Web browser operating system
US7725574B2 (en) * 2006-01-23 2010-05-25 International Business Machines Corporation Web browser-based programming language error determination and reporting
US20070271342A1 (en) * 2006-05-19 2007-11-22 Sbc Knowledge Ventures, L.P. Methods and systems to deliver electronic mail using payments
US8775930B2 (en) * 2006-07-07 2014-07-08 International Business Machines Corporation Generic frequency weighted visualization component
US20080046518A1 (en) * 2006-08-16 2008-02-21 James I Tonnison Enhanced E-Mail System
KR20090014846A (ko) * 2007-08-07 2009-02-11 삼성전자주식회사 맞춤형 정보 표시 방법 및 브라우저 에이전트
US8543683B2 (en) * 2007-09-26 2013-09-24 Microsoft Corporation Remote monitoring of local behavior of network applications
US8677141B2 (en) * 2007-11-23 2014-03-18 Microsoft Corporation Enhanced security and performance of web applications

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030088807A1 (en) 2001-11-07 2003-05-08 Mathiske Bernd J.W. Method and apparatus for facilitating checkpointing of an application through an interceptor library
US20050182924A1 (en) 2004-02-17 2005-08-18 Microsoft Corporation User interface accorded to tiered object-related trust decisions
US20070016949A1 (en) 2005-07-15 2007-01-18 Microsoft Corporation Browser Protection Module
US20070056019A1 (en) 2005-08-23 2007-03-08 Allen Paul L Implementing access control policies across dissimilar access control platforms

Also Published As

Publication number Publication date
US8438636B2 (en) 2013-05-07
EP2229637A1 (en) 2010-09-22
US20090183227A1 (en) 2009-07-16
EP2229637A4 (en) 2011-02-02
US20090183171A1 (en) 2009-07-16
CN101911054A (zh) 2010-12-08
EP2229637B1 (en) 2019-04-17
CN101911054B (zh) 2013-05-29
WO2009088685A1 (en) 2009-07-16
KR20100112123A (ko) 2010-10-18

Similar Documents

Publication Publication Date Title
KR101549816B1 (ko) 안전하고 확장 가능한 정책 기반 애플리케이션 플랫폼
JP6055015B2 (ja) 共有サーバ側マクロ
JP5583769B2 (ja) ホストとなるコンピュータ環境における仮想オブジェクト間接化
US8332878B2 (en) User scriptable server initiated user interface creation
US10803140B1 (en) Methods, systems, and computer program products for web browsing
US9923926B1 (en) Seamless management of untrusted data using isolated environments
JP5933660B2 (ja) イベントトリガされたサーバサイドマクロ
US10574729B2 (en) System and method for cross platform document sharing
US9921860B1 (en) Isolation of applications within a virtual machine
US8756488B2 (en) Systems and methods for integration of an application runtime environment into a user computing environment
US8843820B1 (en) Content script blacklisting for use with browser extensions
US8935755B1 (en) Managing permissions and capabilities of web applications and browser extensions based on install location
US20140040862A1 (en) Copying Reusable Components from a Remote Source
US10310696B1 (en) Supporting a consistent user interface within a virtualized environment
US9558051B1 (en) Inter-process communication router within a virtualized environment
Saenko et al. Progressive Web Application as a new vector of web technologies development
Frisbie Browser Extension Architecture
WO2012067618A1 (en) User scriptable server initiated user interface creation

Legal Events

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

Payment date: 20180730

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20190729

Year of fee payment: 5