KR20140000373A - 컴파일된 자바스크립트 코드를 이용한 웹 페이지 표시 방법 및 장치 - Google Patents

컴파일된 자바스크립트 코드를 이용한 웹 페이지 표시 방법 및 장치 Download PDF

Info

Publication number
KR20140000373A
KR20140000373A KR1020120067120A KR20120067120A KR20140000373A KR 20140000373 A KR20140000373 A KR 20140000373A KR 1020120067120 A KR1020120067120 A KR 1020120067120A KR 20120067120 A KR20120067120 A KR 20120067120A KR 20140000373 A KR20140000373 A KR 20140000373A
Authority
KR
South Korea
Prior art keywords
code
script
web page
compiled
webpage
Prior art date
Application number
KR1020120067120A
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 에스코어 주식회사
Priority to KR1020120067120A priority Critical patent/KR20140000373A/ko
Publication of KR20140000373A publication Critical patent/KR20140000373A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • G06F8/4441Reducing the execution time required by the program code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/447Target code generation

Abstract

본 발명은 컴파일된 자바스크립트 코드를 이용한 웹 페이지 표시 방법 및 장치에 관한 것이다. 본 발명의 웹 페이지 표시 장치는 웹서버에 접속하여 웹 페이지 데이터를 수신하는 웹 페이지 수신부, 상기 웹 페이지 데이터에 따라 웹 페이지를 생성하여 표시하되, 상기 웹 페이지 데이터 내에 스크립트 코드가 포함된 경우 하기의 스크립트 코어부에 상기 스크립트 코드의 실행을 요청하는 웹 페이지 표시부, 상기 스크립트 코드가 컴파일된 코드를 포함하는지 여부를 확인하는 인터미디어트 브리지부, 및 상기 스크립트 코드를 실행하되, 상기 인터미디어트 브리지부의 확인 결과에 따라 소스 코드는 컴파일하여 실행하고, 컴파일된 코드는 그대로 실행하는 스크립트 코어부를 포함한다. 본 발명에 따르면 외부의 사용자에게 웹 페이지의 스크립트 소스 코드의 노출을 방지하고, 스크립트 코드를 실행하는 데에 필요한 시스템 리소스를 줄일 수 있으며 웹 페이지의 표시 시간을 단축할 수 있다.

Description

컴파일된 자바스크립트 코드를 이용한 웹 페이지 표시 방법 및 장치{METHOD AND APPARATUS FOR DISPLAYING WEB PAGE USING COMPILED JAVASCRIPT CODE}
본 발명은 웹 페이지 표시 방법 및 장치에 관한 것으로, 보다 상세하게는 서비스 제공자측에서의 미리 컴파일된 자바스크립트 코드를 이용한 웹 페이지 표시 방법 및 장치에 관한 것이다.
일반적으로 웹 페이지는 HTML(Hyper Text Markup Language)의 형식으로 작성되고, 웹 브라우저는 HTML 문서를 화면상에 표시하여 사용자에게 웹 페이지를 제공한다. 웹 서비스의 기술이 발전함에 따라 사용자에게 보다 동적이며, 사용자 특화적인 웹 페이지를 제공할 필요가 발생하였고, 이러한 동적 웹 페이지를 제공하기 위하여 다양한 웹 프로그래밍 언어가 사용되고 있다. 자바 스크립트(Java Script)는 동적 웹 페이지를 제공하기 위한 웹 프로그래밍의 대표적인 언어이다.
그러나, 자바 스크립트와 같은 스크립트 언어로 작성된 웹 페이지의 경우 소스 코드가 그대로 외부의 사용자에게 노출이 되어 정보 보안에 취약점이 발생하는 문제점이 있다. 사용자는 웹 브라우저 또는 기타 어플리케이션을 통해 웹 서버로부터 전달받은 웹 페이지의 소스 코드를 확인할 수 있으며, 자바 스크립트의 소스 코드 역시 사용자에게 노출이 될 수 있다. 자바 스크립트 소스 코드는 사용자가 쉽게 이해, 작성 및 분석할 수 있는 사용자 친화적인 언어이기 때문에, 사용자는 소스 코드를 통하여 웹 페이지에서 수행되는 동작을 쉽게 분석할 수 있게 된다. 따라서, 상기 웹 페이지에서 수행되는 동작이 외부의 사용자에게 모두 노출이 되기 때문에 보안에 관련된 문제가 발생할 수 있다.
또한, 자바 스크립트가 포함된 웹 페이지를 표시하기 위하여는 자바 스크립트 코어에 의해 자바 스크립트 소스 코드(이하, '소스코드'라 한다)를 컴파일하고 컴파일된 자바 스크립트 코드인 바이트 코드(이하, '컴파일된 코드'라 한다)를 실행시켜야 하는데, 웹 페이지에 포함된 자바 스크립트의 용량이 클수록 컴파일 및 컴파일된 코드의 실행에 사용되는 시스템 리소스가 많이 발생하게 되고 웹 페이지의 표시가 느려지게 된다.
본 발명이 해결하고자 하는 과제는 상술한 바와 같은 보안상의 문제를 해결하고, 또한 웹 페이지의 실행 성능을 향상시킬 수 있는 웹 페이지 표시 방법 및 장치를 제공하는 데에 있다.
상기 과제를 해결하기 위한 본 발명의 웹 페이지 표시 방법의 일 실시예는 (a) 웹 서버로부터 웹 페이지 데이터를 수신하는 단계, (b) 상기 웹 페이지 데이터에 스크립트 코드가 포함된 경우, 상기 스크립트 코드가 컴파일된 코드를 포함하는지 여부를 확인하는 단계 및 (c) 상기 스크립트 코드를 실행하되, 상기 확인 결과에 따라 소스 코드는 컴파일하여 실행하고 컴파일된 코드는 그대로 실행하는 단계를 포함할 수 있다.
여기에서, 상기 (b) 단계는 상기 웹페이지 데이터에 스크립트 코드가 포함되어 있음을 나타내는 스크립트 태그에 상기 스크립트 코드가 소스 코드임을 나타내는 정보가 포함되지 않은 경우에 한하여, 상기 스크립트 코드가 컴파일된 코드인지 여부를 확인하는 단계를 포함할 수 있다.
또한, 상기 (b) 단계는 컴파일된 코드의 포함 여부 및 컴파일된 코드의 종류 중 적어도 하나를 포함하는 확인 결과 정보를 생성하는 단계를 포함할 수 있다.
또한, 상기 (c) 단계는 상기 소스 코드 중 적어도 일부를 JIT(Just-In-Time) 코드로 컴파일하여 실행하는 단계를 포함할 수 있다.
상기 과제를 해결하기 위한 본 발명의 웹 페이지 표시 장치의 일 실시예는 웹서버에 접속하여 웹 페이지 데이터를 수신하는 웹 페이지 수신부, 상기 웹 페이지 데이터에 따라 웹 페이지를 생성하여 표시하되, 상기 웹 페이지 데이터 내에 스크립트 코드가 포함된 경우 하기의 스크립트 실행부에 상기 스크립트 코드의 실행을 요청하는 웹 페이지 표시부, 상기 스크립트 코드가 컴파일된 코드를 포함하는지 여부를 확인하는 인터미디어트 브리지부 및 상기 스크립트 코드를 실행하되, 상기 인터미디어트 브리지부의 확인 결과에 따라 소스 코드는 컴파일하여 실행하고, 컴파일된 코드는 그대로 실행하는 스크립트 코어부를 포함할 수 있다.
여기에서, 상기 인터미디어트 브리지부는 상기 웹 페이지 데이터에 스크립트 코드가 포함되어 있음을 나타내는 스크립트 태그에 상기 스크립트 코드가 소스 코드임을 나타내는 정보가 포함되지 않은 경우에 한하여, 상기 스크립트 코드가 컴파일된 코드인지 여부를 확인할 수 있다.
또한, 상기 인터미디어트 브리지부는 컴파일된 코드의 포함 여부 및 컴파일된 코드의 종류 중 적어도 하나를 포함하는 확인 결과 정보를 생성할 수 있다.
또한, 상기 스크립트 코어부는 상기 소스 코드 중 적어도 일부를 JIT(Just-In-Time) 코드로 변환하여 실행할 수 있다.
또한, 상기 스크립트 코어부는 상기 소스 코드 중 반복적으로 실행되는 소스 코드를 JIT 코드로 변환하여 실행할 수 있다.
본 발명에 따르면 웹 페이지 내의 스크립트 코드가 외부의 사용자가 이해하고 분석하기 어려운 컴파일된 코드의 형태로 제공함으로써 외부로 노출되는 소스 코드의 양을 줄여 소스 코드의 노출에 따른 보안상의 문제를 해결할 수 있다.
또한, 본 발명에 따르면 웹 페이지를 표시함에 있어 스크립트 코드의 컴파일 과정이 생략될 수 있으므로 웹 페이지의 스크립트 코드를 실행하는 데에 필요한 시스템 리소스를 줄일 수 있으며 웹 페이지의 표시 시간을 단축할 수 있다.
도 1은 본 발명의 일 실시예에 따른 웹 페이지 표시 방법이 수행되는 웹 페이지 서비스 시스템의 개략적인 구성을 도시한 도면이다.
도 2는 본 발명의 일 실시예에 따른 클라이언트 단말의 개략적인 구성을 도시한 기능 블록도이다.
도 3은 일반적인 자바 스크립트 코드가 포함된 웹 페이지 데이터와 본 발명의 실시예에 따라 컴파일된 코드가 포함된 웹 페이지 데이터의 예시를 나타내는 예시도이다.
도 4는 본 발명의 일 실시예에 따른 스크립트 코어부의 구성을 나타내는 기능블록도이다.
도 5는 본 발명의 일 실시예에 따른 컴파일된 스크립트 코드를 이용한 웹 페이지 표시 방법을 나타내는 흐름도이다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
본 명세서에서 사용되는 '모듈' 또는 '부(unit)'라는 용어는 소프트웨어 또는 하드웨어 구성 요소를 의미하며, 그 일 예로서 모듈 또는 부(unit)는 소프트웨어 구성요소들, 객체지향 소프트웨어 구성요소들, 클래스 구성요소들 및 태스크 구성요소들과 같은 구성요소들과, 프로세스들, 함수들, 속성들, 프로시저들, 서브루틴들, 프로그램 코드의 세그먼트들, 드라이버들, 펌웨어, 마이크로코드, 회로, 데이터, 데이터베이스, 데이터 구조들, 테이블들, 어레이들, 및 변수들을 포함할 수 있다. 구성요소들과 모듈들 안에서 제공되는 기능은 더 작은 수의 구성요소들 및 모듈들로 결합되거나 추가적인 구성요소들과 모듈들로 더 분리될 수 있다
본 명세서에서 사용되는 용어에 대하여 설명하면 다음과 같다.
▶ 스크립트 코드(Script Code) : 웹 페이지의 HTML(Hyper Text Markup Language) 내에 삽입되어 실행되는 프로그램 코드를 의미하며, 예시적으로 자바스크립트 코드(Javascript Code)일 수 있다. 이하에서 사용되는 "스크립트 코드"는 컴퓨터가 이해할 수 있는 언어로 컴파일되기 이전의 소스 코드(Source Code) 및 컴퓨터가 이해할 수 있는 언어로 컴파일된 이후의 컴파일된 코드(Compiled Code)를 모두 포함하는 의미로 사용된다.
▶ 소스 코드(Source Code) : 스크립트 코드를 사람이 이해할 수 있는 언어로 작성한 것으로, 컴퓨터 또는 가상 머신(Virtual Machine)이 인식할 수 있는 코드로 컴파일되기 이전의 코드를 의미한다.
▶ 컴파일된 코드(Compiled Code) : 소스 코드를 기계가 이해할 수 있는 언어로 컴파일한 것으로, 바이트 코드(Byte Code) 및 JIT 코드(Just-in-Time Code)를 포함한다.
▶ 바이트 코드(Byte Code) : 소스 코드를 컴파일한 것으로, 특히 각기 다른 컴퓨터 환경에서 동일한 프로그래밍 환경을 제공하는 가상 머신(Virtual Machine)이 이해할 수 있는 형태로 컴파일된 코드를 의미한다.
▶ JIT 코드(Just-in-Time Code) : 소스 코드 또는 바이트 코드를 컴퓨터가 이해할 수 있는 기계어로 컴파일한 코드를 의미한다.
이하, 첨부된 도면을 참조하여 본 발명의 일 실시예에 따른 컴파일된 스크립트 코드를 이용한 웹 페이지 표시 방법 및 장치에 관하여 상세히 설명하기로 한다.
도 1은 본 발명의 일 실시예에 따른 웹 페이지 표시 방법이 수행되는 웹 페이지 서비스 시스템의 개략적인 구성을 도시한 도면이다.
도 1을 참조하면, 웹 페이지 서비스 시스템은 인터넷을 통하여 상호 네트워크 연결된 클라이언트 단말(100) 및 웹 서버(200)를 포함한다.
클라이언트 단말(100)은 웹 브라우저를 구비하여 웹 서버(200)로 웹 페이지 데이터를 요청하고, 웹 서버(200)로부터 웹 페이지 데이터를 수신하며, 수신된 웹 페이지 데이터에 기초하여 디스플레이 장치에 웹 페이지를 표시할 수 있는 정보처리 장치로서, 예를 들어, PC(Personal Computer), 랩톱컴퓨터, 태블릿PC, PDA(Personal Digital Assistant), 스마트폰 등의 장치가 될 수 있다.
웹 서버(200)는 클라이언트 단말(100)로부터의 웹 페이지 요청 정보를 수신하여 웹 페이지 데이터를 상기 클라이언트 단말(100)로 전송하는 기능을 수행한다.
웹 서버(200)는 다수의 웹 페이지를 저장하고 있는 웹 페이지 저장소(210)를 구비하고 있으며, 상기 웹 페이지 요청 정보에 포함된 URL(Uniform Resource Locator)에 대응하는 웹 페이지 데이터를 웹 페이지 저장소(210)에서 추출하여 상기 클라이언트 단말(100)로 전송한다.
여기에서, 웹 페이지 저장소(210)에 저장된 웹 페이지 데이터는 HTML(Hyper Text Markup Language)으로만 작성된 웹 페이지(211), 스크립트 소스 코드를 포함하는 웹 페이지(213) 및 컴파일된 코드를 포함하는 웹 페이지(215) 중 적어도 어느 하나의 형식의 웹 페이지 데이터를 포함할 수 있다. 상기 컴파일된 코드는 서로 다른 플랫폼의 클라이언트 단말에서도 동일한 웹 페이지가 실행될 수 있도록 하기 위하여 바이트 코드로 컴파일된 것이 바람직하다. 그러나, 반복적으로 실행되거나 빠른 실행이 필요한 경우에는 상기 웹 페이지에 포함되는 컴파일된 코드는 JIT 코드로 컴파일될 수도 있다.
또한, 웹 페이지가 스크립트 코드(소스 코드 또는 컴파일된 코드)를 포함한다는 것은 웹 페이지의 HTML 문서에 스크립트 코드가 직접 포함되어 있는 경우뿐 아니라, 스크립트 코드가 별개의 파일로 작성되고 웹 페이지의 HTML 문서에 상기 스크립트 코드 파일을 불러들이는 태그가 포함되어 있는 경우도 포함하는 의미이다.
웹 서버(200)는 컴파일부(220)를 구비할 수 있다. 컴파일부(220)는 웹 서버 관리자의 명령 또는 기설정된 스케쥴에 따라 웹 페이지 저장소(210)에 저장된 웹 페이지 데이터 중 스크립트 소스 코드를 컴파일된 코드로 컴파일하여 웹 페이지 저장소(210)에 저장하는 기능을 할 수 있다.
도 2는 본 발명의 일 실시예에 따른 클라이언트 단말(100)의 개략적인 구성을 도시한 기능 블록도이다.
도 2를 참조하면, 클라이언트 단말(100)은 웹 페이지 요청부(110), 웹 페이지 수신부(120), 웹 페이지 표시부(130), 스크립트 코어부(140) 및, 인터미디어트 브리지부(150)를 포함할 수 있다.
상기 웹 페이지 요청부(110), 웹 페이지 수신부(120) 및 웹 페이지 표시부(130)는 일반적으로 클라이언트 단말(100)에 설치된 웹 브라우저 내에 포함되어 구현될 수 있고, 스크립트 코어부(140) 및 인터미디어트 브리지부(150)는 상기 웹 브라우저 내에 포함되어 구현되거나, 웹 브라우저의 플러그인 또는 별개의 어플리케이션으로 구현되어 상기 웹 브라우저와 상호 연동할 수 있다.
웹 페이지 요청부(110)는 사용자의 URL 입력, 하이퍼링크 클릭, 또는 웹 페이지에 포함된 리다이렉션 명령 등에 의해 웹 서버(200)로 웹 페이지를 요청한다.
웹 페이지 수신부(120)는 상기 웹 페이지 요청에 따라 웹 서버(200)에서 제공하는 웹 페이지 데이터를 수신하여 웹 페이지 표시부(130)로 전달한다.
웹 페이지 표시부(130)는 상기 수신한 웹 페이지 데이터를 이용하여 웹 페이지를 생성하고 이를 표시화면 상에 표시한다. 웹 페이지 데이터는 일반적으로 HTML 형식으로 작성되므로, 웹 페이지 표시부(130)는 HTML 문서를 해석하며 HTML 규칙에 따라 웹 페이지를 생성한다. 웹 페이지 표시부(130)는 상기 웹 페이지 데이터 내에 스크립트 코드가 포함되었는지 여부를 확인하고, 스크립트 코드가 포함된 경우에는 스크립트 코어(140)를 호출하여 스크립트 코드를 실행할 수 있도록 한다. 예시적으로 웹 페이지 표시부(130)는 웹 페이지 데이터 내에 포함된 <script>, </script> 등의 스크립트 태그를 이용하여 스크립트 코드가 포함되어 있는지 여부를 확인할 수 있다.
스크립트 코어부(140)는 웹 페이지 표시부(130)에서 확인된 스크립트 코드를 실행하는 기능을 한다. 스크립트 코어부(140)는 스크립트 코드를 실행하기에 앞서 인터미디어트 브리지부(150)를 호출하여 상기 스크립트 코드가 컴파일된 코드(바이트코드)인지 여부를 확인할 수 있다.
이때, 스크립트 코어부(140)는 스크립트 태그에 소정의 정보가 포함되어 있는 경우에만 인터미디어트 브리지부(150)를 호출하여 상기 스크립트 코드가 컴파일된 코드인지 여부를 확인하도록 할 수 있다.
예를 들어, 도 3의 (a)에 도시된 바와 같이, 스크립트 코드가 별도의 파일로 제공되지 않고, HTML 코드 내에 포함된 경우에는 스크립트 코드가 컴파일되지 않은 소스 코드로 제공되는 것이므로 인터미디어트 브리지부(150)가 호출되지 않을 수 있다.
또는, 도 3의 (b)에 도시된 바와 같이, 스크립트 코드가 별도의 파일로 제공된다고 하더라도, 스크립트 태그에 포함된 MIME Type 정보가 'text/javascript' 인 경우에는, 일반적인 텍스트로 작성된 스크립트 코드, 즉 소스 코드가 제공되는 것을 의미하므로, 이 경우에도 인터미디어트 브리지부(150)가 호출되지 않을 수 있다.
도 3의 (c)에 도시된 바와 같이, 스크립트 태그에 포함된 MIME type 정보가 'application/javascript'인 경우, 인터미디어트 브리지부(150)가 호출되어 상기 스크립트 코드가 컴파일된 코드인지 여부를 확인하도록 할 수 있다. 또한, 도 3의 (d)에 나타난 바와 같이, 웹 서버에 의해 제공되는 자바스크립트 파일의 확장자가 컴파일된 코드를 나타내는 경우에만 인터미디어트 브리지부(150)가 호출될 수도 있다(도 3의 (d)에서는, 컴파일된 코드를 나타내기 위하여 예시적으로 'ejs'의 확장자를 사용하며, 이는 'Executable JavaScript'를 나타낸다).
이와 같이, 스크립트 코어부(140)가 모든 경우에 있어서 인터미디어트 브리지부(150)를 호출하지 않고, 스크립트 코드가 컴파일된 코드가 아님이 명백한 경우는 제외하고 인터미디어트 브리지부(150)를 호출하므로, 무의미한 호출에 따른 실행 속도의 저하를 방지할 수 있다.
인터미디어트 브리지부(150)는 상기 스크립트 코드가 컴파일된 코드인지 여부를 확인하기 위하여 제공받은 스크립트 코드의 파일 포맷 헤더를 파싱하고, 파싱된 파일 포맷 헤더를 분석하여 상기 제공받은 스크립트 코드가 컴파일된 코드인지 여부를 분석할 수 있다.
인터미디어트 브리지부(150)는 상기 스크립트 코드가 컴파일된 코드인지 여부 및 컴파일된 코드의 종류(바이트코드 또는 JIT코드)를 나타내는 확인 결과 정보를 스크립트 코어부(140)로 전달한다. 이와 함께, 인터미디어트 브리지부(150)는 컴파일된 코드(바이트코드 또는 JIT코드)를 스크립트 코어부(140)로 전달한다. 인터미디어트 브리지부(150)의 확인 결과 스크립트 코드가 컴파일된 코드인 것으로 확인되는 경우, 스크립트 코어부(140)는 컴파일 과정을 거치지 않고 상기 전달받은 컴파일된 코드를 바로 실행할 수 있게 된다.
도 4는 스크립트 코어부(140)의 구성을 나타내는 기능블록도이다.
도 4를 참조하여 스크립트 코어부(140)의 보다 자세한 구성을 살펴보면, 스크립트 코어부(140)는 바이트코드 컴파일부(141), JIT코드 컴파일부(143) 및 스크립트 실행부(145)를 포함할 수 있다.
바이트코드 컴파일부(141)는 스크립트 코드가 소스 코드인 경우, 이를 바이트코드로 컴파일하는 기능을 수행한다. 예를 들어, 바이트코드 컴파일부(141)는 자바 스크립트 소스 코드를 자바 가상 머신(Java Virtual Machine)에서 실행 가능한 바이트코드로 컴파일할 수 있다.
JIT코드 컴파일부(143)는 소스 코드 또는 바이트코드 중에서 반복적으로 실행되거나 빠른 실행이 필요한 코드를 JIT(Just-In-Time) 코드로 컴파일한다. JIT 코드는 가상 머신을 이용하지 않고 하드웨어를 직접 제어할 수 있으므로, 바이트 코드에 비하여 실행속도가 빠르다. 따라서, 반복적으로 실행되는 소스 코드 또는 바이트코드를 JIT 코드로 변환하면 실행 속도의 향상을 도모할 수 있다.
스크립트 실행부(145)는 컴파일된 바이트코드 또는 JIT 코드를 실행하는 기능을 수행한다. 스크립트 실행부(145)는 스크립트 소스 코드 전체가 바이트코드 컴파일부(141) 또는 JIT코드 컴파일부(143)에 의해 컴파일된 후에 컴파일된 스크립트 코드를 실행할 수도 있고, 스크립트 소스 코드가 한줄씩(Line-by-line) 바이트코드 컴파일부(141) 또는 JIT코드 컴파일부(143)에서 컴파일될 때마다 컴파일되는 스크립트 코드를 실행하는 인터프리트(Interpret) 방식으로 스크립트 코드를 실행할 수도 있다.
도 5는 본 발명의 일 실시예에 따른 컴파일된 스크립트 코드를 이용한 웹 페이지 표시 방법을 나타내는 흐름도이다.
도 5를 참조하면, 웹 서버(200)는 웹 페이지 저장소(210)에 저장되어 있는 웹 페이지 데이터에 포함된 스크립트 소스 코드를 미리 바이트 코드 또는 JIT 코드로 컴파일하여 둘 수 있다(S105). 웹 서버(200)는 웹 페이지 저장소(210)에 저장되어 있는 모든 웹 페이지에 대하여 스크립트 소스 코드를 미리 컴파일하여 둘 수도 있고, 보안상 스크립트 소스 코드를 비밀로 유지할 필요가 있는 웹 페이지 또는 빠른 실행이 필요한 웹 페이지에 대하여 스크립트 소스 코드를 컴파일하여 둘 수 있다.
사용자로부터 URL이 입력되어 웹 페이지의 실행요청을 받으면(S110), 클라이언트 단말(100)의 웹 브라우저는 사용자가 입력한 URL이 가리키는 웹 서버(200)로 웹 페이지 요청 정보를 전송한다(S115). 웹 페이지 요청 정보에는 사용자가 요청한 웹 페이지의 URL 정보가 포함되어 있다.
웹 서버(200)는 상기 URL에 대응하는 웹 페이지 데이터를 웹 페이지 저장소(210)로부터 추출하여 상기 클라이언트 단말(100)로 전송한다(S120).
클라이언트 단말(100)의 웹 브라우저는 상기 수신한 웹 페이지 데이터를 이용하여 웹 페이지를 생성하고 이를 표시화면에 표시한다. 이때, 웹 페이지 데이터는 HTML 문서로 작성되어 있을 수 있으며, 인터프리트 방식으로 해석되어 실행될 수 있다. 즉, 웹 브라우저는 HTML 문서를 한줄씩 실행하며 웹 페이지를 표시화면에 표시할 수 있다.
이때, 웹 페이지 데이터에 스크립트 코드가 포함되어 있으면(S125), 웹 브라우저는 스크립트 코어부(140)를 호출한다(S130). 스크립트 코드는, 예를 들어, <script>, </script>와 같은 스크립트 태그를 통하여 확인될 수 있다. 즉, 웹 브라우저는 HTML 문서를 한줄씩 실행하다가 스크립트 태그가 나타나는 때에 스크립트 코어부(140)를 호출할 수 있다.
스크립트 코어부(140)는 상기 스크립트 코드가 바이트코드로 컴파일되어 있는지 여부를 알 수 없으므로, 스크립트 코드의 컴파일 여부를 확인하기 위해 인터미디어트 브리지부(150)를 호출한다(S135). 이때, 스크립트 코어부(140)는 스크립트 코드에 포함된 정보가 소정의 조건을 만족하는 경우에만 인터미디어트 브리지부(150)를 호출할 수 있다. 예를 들어, 스크립트의 MIME type가 'application/javascript'이거나, 스크립트에 의해서 로딩되는 스크립트 파일의 확장자가 컴파일된 코드를 의미하는 경우에만 인터미디어트 브리지부(150)를 호출할 수 있다.
인터미디어트 브리지부(150)는 상기 스크립트가 컴파일된 코드인지 여부를 확인한다(S140). 예를 들어, 인터미디어트 브리지부(150)는 스크립트 파일의 헤더를 파싱하고 이를 분석하여 컴파일된 코드인지 여부를 확인할 수 있다.
인터미디어트 브리지부(150)는 스크립트 코어부(140)로 확인 결과를 통지할 수 있다(S145). 상기 확인 결과는 스크립트 코드가 컴파일되어 있는지의 여부, 어떠한 코드(예를 들어, 바이트코드 또는 JIT 코드)로 컴파일되었는지 여부 등의 정보를 포함할 수 있다. 또한, 이와 함께 인터미디어트 브리지부(150)는 스크립트 코어부(140)로 컴파일된 코드를 제공할 수 있다.
상기 인터미디어트 브리지부(150)에 의하여 스크립트 코드가 컴파일된 코드인지 여부를 확인한 스크립트 코어부(140)는 스크립트 코드를 실행한다. 상기 인터미디어트 브리지부(150)의 확인 결과, 스크립트 코드가 컴파일되어 있지 않은 소스 코드인 경우에는, 스크립트 코어부(140)는 상기 스크립트 코드를 컴파일하고(S155), 컴파일된 스크립트 코드를 실행할 수 있다(S160). 이때, 소스 코드는 한줄씩 컴파일되어 실행되는 인터프리트 방식으로 실행될 수도 있으나, 소스 코드 전체가 한번에 컴파일된 후 실행되어도 무방하다.
상기 인터미디어트 브리지부(150)의 확인 결과, 스크립트 코드가 컴파일된 코드인 경우에는 스크립트 코어부(140)는 컴파일 과정을 거치지 않고 바로 스크립트 코드를 실행할 수 있다.
상기 컴파일 또는 과정에서 스크립트 코어부(140)는 반복적으로 실행되는 소스 코드 또는 바이트 코드를 JIT 코드로 컴파일할 수 있다. JIT 코드는 바이트 코드에 비하여 실행 속도가 빠르기 때문에 웹 페이지의 표시 성능을 크게 향상 시킬 수 있다.
스크립트 코드 영역 전체에 대하여 실행이 완료되면, 스크립트 코어부(140)는 스크립트 코드의 실행을 마쳤음을 웹 브라우저에 통지한다(S165).
클라이언트 단말(100)의 웹 브라우저는 웹 페이지의 표시가 완료될 때까지 계속하여 HTML 문서를 실행하여 웹 페이지를 표시하고(S170), 재차 스크립트 코드가 발견되는 경우에는 상기 S130 내지 S165의 과정을 수행한다.
상술한 바와 같은 본 발명의 웹 페이지 표시 장치 및 웹 페이지 표시 방법에 따르면 웹 서버(200)에서 미리 컴파일된 스크립트 코드를 포함하는 웹 페이지 데이터를 클라이언트 단말(100)에 제공하므로, 외부의 사용자가 웹 페이지에 포함된 스크립트 코드의 내용을 이해하고 분석하기 극히 어렵게 되어 소스 코드의 노출에 따른 보안상의 문제의 발생 가능성을 줄일 수 있다.
또한, 웹 페이지 내의 스크립트 코드가 미리 컴파일되어 있기 때문에 스크립트 코드를 실행하는 데에 필요한 시스템 리소스를 줄이고 웹 페이지의 표시 시간을 단축할 수 있는 효과가 있다.
본 발명이 속하는 기술분야의 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다. 본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구의 범위에 의하여 나타내어지며, 특허청구의 범위의 의미 및 범위 그리고 그 균등 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.

Claims (9)

  1. 웹 서버로부터 웹 페이지 데이터를 수신한 클라이언트 단말이 웹 페이지를 표시하는 방법에 있어서,
    (a) 웹 서버로부터 웹 페이지 데이터를 수신하는 단계와,
    (b) 상기 웹 페이지 데이터에 스크립트 코드가 포함된 경우, 상기 스크립트 코드가 컴파일된 코드를 포함하는지 여부를 확인하는 단계와,
    (c) 상기 스크립트 코드를 실행하되, 상기 확인 결과에 따라 소스 코드는 컴파일하여 실행하고 컴파일된 코드는 그대로 실행하는 단계를 포함하는, 웹 페이지 표시 방법.
  2. 제1항에 있어서,
    상기 (b) 단계는
    상기 웹 페이지 데이터에 스크립트 코드가 포함되어 있음을 나타내는 스크립트 태그에 상기 스크립트 코드가 소스 코드임을 나타내는 정보가 포함되지 않은 경우에 한하여, 상기 스크립트 코드가 컴파일된 코드인지 여부를 확인하는 단계를 포함하는 것을 특징으로 하는, 웹 페이지 표시 방법.
  3. 제1항에 있어서,
    상기 (b) 단계는
    컴파일된 코드의 포함 여부 및 컴파일된 코드의 종류 중 적어도 하나를 포함하는 확인 결과 정보를 생성하는 단계를 포함하는 것을 특징으로 하는, 웹 페이지 표시 방법.
  4. 제1항에 있어서,
    상기 (c) 단계는
    상기 소스 코드 중 적어도 일부를 JIT(Just-In-Time) 코드로 컴파일하여 실행하는 단계를 포함하는 것을 특징으로 하는, 웹 페이지 표시 방법.
  5. 웹서버에 접속하여 웹 페이지 데이터를 수신하는 웹 페이지 수신부,
    상기 웹 페이지 데이터에 따라 웹 페이지를 생성하여 표시하되, 상기 웹 페이지 데이터 내에 스크립트 코드가 포함된 경우 하기의 스크립트 실행부에 상기 스크립트 코드의 실행을 요청하는 웹 페이지 표시부,
    상기 스크립트 코드가 컴파일된 코드인지 여부를 확인하는 인터미디어트 브리지부 및
    상기 스크립트 코드를 실행하되, 상기 인터미디어트 브리지부의 확인 결과에 따라 소스 코드는 컴파일하여 실행하고, 컴파일된 코드는 그대로 실행하는 스크립트 코어부를 포함하는, 웹 페이지 표시 장치.
  6. 제5항에 있어서,
    상기 인터미디어트 브리지부는
    상기 웹 페이지 데이터에 스크립트 코드가 포함되어 있음을 나타내는 스크립트 태그에 상기 스크립트 코드가 소스 코드임을 나타내는 정보가 포함되지 않은 경우에 한하여, 상기 스크립트 코드가 컴파일된 코드인지 여부를 확인하는 것을 특징으로 하는, 웹 페이지 표시 장치.
  7. 제5항에 있어서,
    상기 인터미디어트 브리지부는 컴파일된 코드의 포함 여부 및 컴파일된 코드의 종류 중 적어도 하나를 포함하는 확인 결과 정보를 생성하는 것을 특징으로 하는, 웹 페이지 표시 장치.
  8. 제5항에 있어서,
    상기 스크립트 코어부는 상기 소스 코드 중 적어도 일부를 JIT(Just-In-Time) 코드로 변환하여 실행하는 것을 특징으로 하는, 웹 페이지 표시 장치.
  9. 제8항에 있어서,
    상기 스크립트 코어부는 상기 소스 코드 중 반복적으로 실행되는 소스 코드를 JIT 코드로 변환하여 실행하는 것을 특징으로 하는, 웹 페이지 표시 장치.
KR1020120067120A 2012-06-22 2012-06-22 컴파일된 자바스크립트 코드를 이용한 웹 페이지 표시 방법 및 장치 KR20140000373A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020120067120A KR20140000373A (ko) 2012-06-22 2012-06-22 컴파일된 자바스크립트 코드를 이용한 웹 페이지 표시 방법 및 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020120067120A KR20140000373A (ko) 2012-06-22 2012-06-22 컴파일된 자바스크립트 코드를 이용한 웹 페이지 표시 방법 및 장치

Publications (1)

Publication Number Publication Date
KR20140000373A true KR20140000373A (ko) 2014-01-03

Family

ID=50138253

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120067120A KR20140000373A (ko) 2012-06-22 2012-06-22 컴파일된 자바스크립트 코드를 이용한 웹 페이지 표시 방법 및 장치

Country Status (1)

Country Link
KR (1) KR20140000373A (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160000912A (ko) * 2014-06-25 2016-01-06 엔트릭스 주식회사 클라우드 스트리밍 서비스 제공 방법, 이를 위한 장치 및 시스템, 그리고 이를 위한 클라우드 스트리밍용 스크립트 코드를 기록한 컴퓨터 판독 가능한 기록매체
CN108733353A (zh) * 2017-04-21 2018-11-02 中兴通讯股份有限公司 一种界面构造方法和装置

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160000912A (ko) * 2014-06-25 2016-01-06 엔트릭스 주식회사 클라우드 스트리밍 서비스 제공 방법, 이를 위한 장치 및 시스템, 그리고 이를 위한 클라우드 스트리밍용 스크립트 코드를 기록한 컴퓨터 판독 가능한 기록매체
CN108733353A (zh) * 2017-04-21 2018-11-02 中兴通讯股份有限公司 一种界面构造方法和装置
CN108733353B (zh) * 2017-04-21 2023-08-08 中兴通讯股份有限公司 一种界面构造方法和装置

Similar Documents

Publication Publication Date Title
EP3143497B1 (en) Interactive viewer of intermediate representations of client side code
KR101507629B1 (ko) 기존 애플리케이션들의 커스터마이징 및 분산을 위한 브라우저-기반 프록시 서버
US20190058667A1 (en) Apparatus, hybrid apparatus, and method for network resource access
US20130160130A1 (en) Application security testing
CN107688529B (zh) 组件调试方法和装置
WO2009085227A1 (en) Embedding metadata with displayable content and applications thereof
CN106874519B (zh) 页面展现方法和装置
US10491629B2 (en) Detecting sensitive data sent from client device to third-party
CN108416021B (zh) 一种浏览器网页内容处理方法、装置、电子设备及可读介质
CN102323880A (zh) 基于浏览器解析方式的手机应用界面的开发方法和终端
KR20140018414A (ko) 브라우저 기반 애플리케이션 프로그램 확장 방법 및 디바이스
CN105094921A (zh) 一种跨浏览器调用外设的方法及装置
US20130191726A1 (en) Automatic widget creation apparatus and method for invoking heterogeneous web services in a composite application
CN113076294A (zh) 一种信息分享方法和装置
US11212287B2 (en) Program execution control method, program, recording medium, web page, transmission server, client, and web system
US8191041B2 (en) Javascript pre-processing framework
JP5151696B2 (ja) ユニフォームリソースロケータ情報を書き換えるプログラム
CN113971257A (zh) 混合应用的功能菜单访问方法及装置
JP2016018233A (ja) スクリプトのキャッシュ方法及びそれを適用した情報処理装置
CN113094138A (zh) 界面显示方法、装置、电子设备及存储介质
KR20140000373A (ko) 컴파일된 자바스크립트 코드를 이용한 웹 페이지 표시 방법 및 장치
CN117041234A (zh) web端与原生端的交互方法及终端设备
CN110738024A (zh) 将WebAPP转换为API服务接口的方法
US20090031287A1 (en) Container-less jsp template
CN115061678A (zh) 一种基于浏览器代理服务的代码编译方法及客户端

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application