KR101157996B1 - 자바스크립트의 소스 코드 보호를 위해 난독화를 하기 위한 방법, 시스템 및 컴퓨터 판독 가능한 기록 매체 - Google Patents

자바스크립트의 소스 코드 보호를 위해 난독화를 하기 위한 방법, 시스템 및 컴퓨터 판독 가능한 기록 매체 Download PDF

Info

Publication number
KR101157996B1
KR101157996B1 KR1020100066932A KR20100066932A KR101157996B1 KR 101157996 B1 KR101157996 B1 KR 101157996B1 KR 1020100066932 A KR1020100066932 A KR 1020100066932A KR 20100066932 A KR20100066932 A KR 20100066932A KR 101157996 B1 KR101157996 B1 KR 101157996B1
Authority
KR
South Korea
Prior art keywords
code
obfuscation
source code
algorithm
javascript
Prior art date
Legal status (The legal status 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 status listed.)
Expired - Fee Related
Application number
KR1020100066932A
Other languages
English (en)
Other versions
KR20120006288A (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 엔에이치엔(주)
Priority to KR1020100066932A priority Critical patent/KR101157996B1/ko
Publication of KR20120006288A publication Critical patent/KR20120006288A/ko
Application granted granted Critical
Publication of KR101157996B1 publication Critical patent/KR101157996B1/ko
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

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/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/14Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/125Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/51Source to source
    • 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/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4494Execution paradigms, e.g. implementations of programming paradigms data driven
    • 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
    • G06F9/453Help systems

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Computer Hardware Design (AREA)
  • Human Computer Interaction (AREA)
  • Stored Programmes (AREA)

Abstract

본 발명은 자바스크립트 소스 코드의 보호를 위해 난독화를 하기 위한 방법, 시스템 및 컴퓨터 판독 가능한 기록매체에 관한 것이다. 본 발명의 일 태양에 따르면, 자바 스크립트 소스 코드의 난독화를 수행하기 위한 방법은 난독화를 수행할 소스 코드를 선택하는 코드 선택 단계; 상기 선택된 소스 코드를 컴파일을 통해 분석하는 코드 분석 단계; 상기 분석된 코드를 대상으로 특정 알고리즘에 기반한 난독화 작업을 수행하는 코드 난독화 단계; 및 상기 난독화가 수행된 소스 코드를 저장하는 코드 저장 단계를 포함한다.

Description

자바스크립트의 소스 코드 보호를 위해 난독화를 하기 위한 방법, 시스템 및 컴퓨터 판독 가능한 기록 매체{METHOD, SYSTEM AND COMPUTER READABLE RECORDING MEDIUM FOR DESULTORY CHANGE TO PROTECT SOURCE CODE OF JAVASCRIPT}
본 발명은 자바스크립트 소스 코드의 보호를 위해 난독화를 하기 위한 방법, 시스템 및 컴퓨터 판독 가능한 기록매체에 관한 것으로, 보다 상세하게는 자바스크립트 소스 코드를 컴파일을 통해 분석하고, 분석된 내용에 기반하여 소스 코드의 변경을 통한 난독화하기 위한 방법, 시스템 및 컴퓨터 판독 가능한 매체에 관한 것이다.
자바 스크립트(Java Script)는 미국의 넷스케이프 커뮤니케이션스사가 개발한 스크립트 언어이며, 다양한 환경에서 사용되고 있는데, 그 중 가장 대표적인 예로서 마이크로소프트사의 인터넷 익스플로러와 같은 웹브라우저에서 실행되는 스크립트 언어로 사용되고 있다. 이 경우 표준 HTML 문서에 삽입되어 인터랙티브(interactive)한 웹페이지를 제공할 수 있으며 특히 최근들어 클라이언트 컴퓨터의 성능이 좋아지면서 애니메이션이나 간단한 계산 등은 서버에 별도 요청을 하지 않아도 클라이언트 컴퓨터에서 자바 스크립트에 의한 프로그램 작동이 가능하기 때문에 서버와의 트래픽을 감소시키기 위해 최근 활용 범위가 넓어지고 있다.
하지만, 자바 스크립트는 스크립트 언어의 특성 상 소스 코드가 그대로 노출될 수 있어 보안상 취약할 수 있다. 그 예로서, 도 1a과 같이 소정 웹페이지는 자바 스크립트를 사용할 수 있으며, 도 1a의 웹페이지의 소스 코드는 도 1b에 도시되어 있다. 도 1b의 점선 부분에서 알 수 있는 바와 같이 도 1a의 웹페이지는 파일 포맷(format)이 일반적으로 JS인 자바 스크립트 파일을 포함(include)하는 방식으로 사용하고 있으며 자바 스크립트 파일의 경로 및 파일명도 확인할 수 있다. 이와 같이, 웹페이지에 자바 스크립트가 사용되는 경우 누구라도 소스 보기 등을 통해서 자바 스크립트 소스 코드, 또는 자바 스크립트 파일이 저장된 경로 및 그 파일명을 확인할 수 있기 때문에 제3자는 소스 코드 분석을 통한 악용에 사용할 수 있는 것이다.
따라서, 소스 코드가 쉽게 노출될 수 있는 자바 스크립트를 난독화하여 동일한 기능을 하면서도 제3자가 분석하기 쉽지 않도록 난독화하기 위한 기술이 요청되나 YUICompressor 또는 JSMin 같은 종래의 자바 스크립트 관련 기술들은 자바 스크립트 내의 파일의 크기를 최대한으로 줄이는 것이 목적일 뿐 난독화를 통해 소스 분석을 어렵게 하는 것을 목적으로 소스 코드를 변경하기 위한 방법은 제공하고 있지 않다.
본 발명의 목적은 위에서 언급한 종래 기술의 문제점을 해결하는 것이다.
본 발명의 일 목적은 자바 스크립트의 소스 코드를 컴파일을 통해 분석하고, 분석된 내용에 기반한 소스 코드 변경으로 난독화된 코드를 제공함으로써 자바스크립트의 보안상 취약점을 보완할 수 있도록 하는 것이다.
또한, 본 발명의 다른 목적은 자바스크립트의 소스 코드를 컴파일을 통해 분석하고, 분석된 내용에 기반한 소스 코드 변경으로 코드상의 오버헤드(overhead)를 감소시킨 코드를 제공함으로써 클라이언트 컴퓨터에서의 자바스크립트 실행 속도를 향상시킬 수 있도록 하는 것이다.
상기한 바와 같은 본 발명의 목적을 달성하고, 후술하는 본 발명의 특유의 효과를 달성하기 위한, 본 발명의 특징적인 구성은 하기와 같다.
본 발명의 일 태양에 따르면, 자바 스크립트 소스 코드의 난독화를 수행하기 위한 방법은 난독화를 수행할 소스 코드를 선택하는 코드 선택 단계, 상기 선택된 소스 코드를 컴파일을 통해 분석하는 코드 분석 단계, 상기 분석된 코드를 대상으로 특정 알고리즘에 기반한 난독화 작업을 수행하는 코드 난독화 단계 및 상기 난독화가 수행된 소스 코드를 저장하는 코드 저장 단계의 수행을 통해 얻어진다.
본 발명의 다른 태양에 따르면, 자바 스크립트 소스 코드의 난독화를 수행하기 위한 시스템은 난독화를 수행할 소스 코드를 선택하는 코드 선택 모듈, 상기 선택된 소스 코드를 컴파일을 통해 분석하는 코드 분석 모듈, 상기 분석된 코드를 대상으로 특정 알고리즘에 기반한 난독화 작업을 수행하는 코드 난독화 모듈 및 상기 난독화가 수행된 소스 코드를 저장하는 코드 저장 모듈을 포함한다.
상술한 바와 같이 본 발명에 따르면, 자바스크립트의 소스 코드를 컴파일을 통해 분석하고, 분석된 내용에 기반한 소스 코드 변경으로 난독화된 코드를 제공함으로써 자바스크립트의 보안상 취약점을 보완할 수 있다.
또한, 본 발명에 따르면, 자바스크립트의 소스 코드를 컴파일을 통해 분석하고, 분석된 내용에 기반한 소스 코드 변경으로 코드상의 오버헤드(overhead)를 감소시킨 코드를 제공함으로써 클라이언트 컴퓨터에서의 자바스크립트 실행 속도를 향상시킬 수 있다.
도 1은 본 발명의 일 실시예에 따라, 자바 스크립트를 사용하는 웹페이지 및 웹페이지의 소스 코드를 도시하는 예시적인 화면이다.
도 2는 본 발명의 일 실시예에 따라, 자바 스크립트를 난독화하고 난독화된 자바 스크립트를 사용하는 웹페이지를 사용자의 요청에 의해 제공하기 위한 전체 시스템의 전체적인 구성을 개략적으로 나타내는 도면이다.
도 3은 본 발명의 일 실시예에 따른 웹서버의 세부 구성도이다.
도 4는 본 발명의 일 실시예에 따라 웹서버 내의 자바 스크립트 난독화부의 세부 구성도이다.
도 5는 본 발명의 일 실시예에 따라 형 이름(Type Name) 변경 알고리즘에 의한 난독화 작업을 나타내는 예시적인 화면이다.
도 6은 본 발명의 일 실시예에 따라 셔플(Shuffle) 알고리즘에 의한 난독화 작업을 나타내는 예시적인 화면이다.
도 7은 본 발명의 일 실시예에 따라 더미(Dummy) 알고리즘에 의한 난독화 작업을 나타내는 예시적인 화면이다.
후술하는 본 발명에 대한 상세한 설명은, 본 발명이 실시될 수 있는 특정 실시예를 예시로서 도시하는 첨부 도면을 참조한다. 이들 실시예는 당업자가 본 발명을 실시할 수 있기에 충분하도록 상세히 설명된다. 본 발명의 다양한 실시예는 서로 다르지만 상호 배타적일 필요는 없음이 이해되어야 한다. 예를 들어, 여기에 기재되어 있는 특정 형상, 구조 및 특성은 일 실시예에 관련하여 본 발명의 정신 및 범위를 벗어나지 않으면서 다른 실시예로 구현될 수 있다. 또한, 각각의 개시된 실시예 내의 개별 구성요소의 위치 또는 배치는 본 발명의 정신 및 범위를 벗어나지 않으면서 변경될 수 있음이 이해되어야 한다. 따라서, 후술하는 상세한 설명은 한정적인 의미로서 취하려는 것이 아니며, 본 발명의 범위는 적절하게 설명된다면 그 청구항들이 주장하는 것과 균등한 모든 범위와 더불어 첨부된 청구항에 의해서만 한정된다. 도면에서 유사한 참조부호는 여러 측면에 걸쳐서 동일하거나 유사한 기능을 지칭한다.
이하, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명을 용이하게 실시할 수 있도록 하기 위하여, 본 발명의 바람직한 실시예들에 관하여 첨부된 도면을 참조하여 상세히 설명하기로 한다.
[본 발명의 바람직한 실시예]
본 발명의 실시예에서, 용어 "웹페이지"는 인터넷 익스플로러 등의 웹브라우저 프로그램을 직접적으로, 또는 간접적으로 이용하여 월드와이드웹(World Wide Web)을 통하여 열람할 수 있는 수동 또는 능동적인 문서 형식을 모두 포함하는 광의의 의미로 해석되어야 하며, 웹페이지의 파일 형식(file format)으로서 주로 HTML(HyperText Markup Language)이 사용되나, 반드시 이에 한정되지 않고 XML(eXtensible Markup Language), SGML(Standard Generalized Markup Language)를 포함하여 웹브라우저 프로그램을 이용하여 직접적으로 또는 간접적으로(플러그인이나 기타 별도의 프로그램과 연결되는 경우도 포함) 열람할 수 있는 문서 형식이라면 모두 웹페이지에 해당된다. 웹브라우저 프로그램을 이용하여 웹페이지를 열람하기 위해서는 일반적으로 웹문서가 위치하고 있는 주소를 URL로 입력하며, 그 주소 형식으로서 HTTP(HyperText Transfer Protocol)가 많이 사용되나 반드시 이에 한정되는 것은 아니다. 웹페이지는 자바 스크립트를 사용할 수 있으며, 그 사용 방식으로서 구체적인 자바 스크립트 소스 코드가 웹페이지 내에 직접적으로 삽입되어 있거나 특정 경로에 특정 파일명으로 저장되어 있는 자바 스크립트 파일을 간접적으로 포함(include)하는 방식이 존재할 수 있다.
전체 시스템 구성
도 1는 발명의 일 실시예에 따라, 자바스크립트를 난독화하고 난독화된 자바 스크립트를 사용하는 웹페이지를 사용자의 요청에 의해 제공하기 위한 전체 시스템의 전체적인 구성을 개략적으로 나타내는 도면이다.
도 1에 도시되어 있는 바와 같이 본 발명의 일 실시예에 따른 전체 시스템은, 데이터베이스를 포함하고 있는 웹서버(100)가 통신망(200)을 통하여 복수의 클라이언트 컴퓨터(300)와 연결되어 있다.
먼저, 본 발명의 일 실시예에 따르면, 웹서버(100)은 클라이언트 컴퓨터(300)로부터 특정 웹페이지에 대한 전송 요청을 수신하여, 해당 요청에 따른 웹페이지를 데이터베이스로부터 추출한 뒤 클라이언트 컴퓨터(300)로 전송하는 역할을 한다. 여기서 전송 요청은 웹 브라우저를 통한 URL(Uniform Resource Locator)의 입력을 통해 이루어질 수 있으며 웹페이지는 그 내부에 자바 스크립트가 직접적으로 삽입되어 있거나 소정 위치에 저장되어 있는 자바 스크립트 파일을 포함(include)하는 방식으로 간접적으로 포함할 수 있다. 또한, 웹서버(100)은 특정 웹페이지에 직접적으로 삽입된 또는 간접적으로 포함하는 방식으로 특정 웹페이지에 간접적으로 포함된 자바 스크립트의 소스 코드를 컴파일을 통해 분석하고, 분석된 내용에 기반한 소스 코드의 변경을 수행하여 난독화된 코드를 생성하고 저장하는 역할도 한다.
또한, 본 발명의 일 실시예에 따르면, 통신망(200)은 유선 및 무선 등과 같은 그 통신 양태를 가리지 않고 구성될 수 있으며, 단거리 통신망(PAN; Personal Area Network), 근거리 통신망(LAN; Local Area Network), 도시권 통신망(MAN; Metropolitan Area Network), 광역 통신망(WAN; Wide Area Network) 등 다양한 통신망으로 구성될 수 있다.
한편, 본 발명의 일 실시예에 따른 클라이언트 컴퓨터(300)는 사용자가 소정 질의어에 대한 검색 결과를 제공받기 위하여 통신망(200)을 통하여 웹서버(100)와 연결하기 위한 기능을 포함하는 입출력 장치를 의미하며, 데스크톱 컴퓨터뿐만 아니라 노트북 컴퓨터, 워크스테이션, 팜톱(palmtop) 컴퓨터, 개인 휴대 정보 단말기(personal digital assistant: PDA), 웹 패드, 스마트 폰을 포함하는 이동 통신 단말기 등과 같이 메모리 수단을 구비하고 마이크로 프로세서를 탑재하여 연산 능력을 갖춘 디지털 기기라면 얼마든지 본 발명에 따른 클라이언트 컴퓨터(300)로서 채택될 수 있다. 바람직하게는, 웹서버(100)와 연결하고, 자바 스크립트를 사용하는 특정 웹페이지를 웹서버를 통해 제공받아 클라이언트 컴퓨터 상에서 해석하고 보여주기 위해서 클라이언트 컴퓨터(300) 내의 웹 브라우저를 실행시키고 사용할 수 있으나, 반드시 이에 한정되는 것은 아니다.
웹서버의 세부 구성도
도 3은 본 발명의 일 실시예에 따른 웹서버(100)의 세부 구성도이다.
도 3을 참조하면, 본 발명의 일 실시예에 따른 웹서버(100)은 송수신부(110), 웹페이지 제공부(120), 자바 스크립트 난독화부(130) 및 데이터베이스(140)를 포함할 수 있다.
송수신부(110)는 클라이언트 컴퓨터(300)로부터 특정 웹페이지에 대한 전송 요청을 수신하여 웹페이지 제공부(120)로 전송하고, 웹페이지 제공부(120)로부터 수신받은 특정 웹페이지를 클라이언트 컴퓨터(300)로 전송한다. 여기서 전송 요청은 URL의 형식일 수 있다.
웹페이지 제공부(120)는 송수신부(110)로부터 수신한 전송 요청에 해당하는 특정 웹페이지를 데이터베이스(140)로부터 검색한다. 검색을 통해 매칭되는 특정 웹페이지는 클라이언트 컴퓨터(300)로 보내지기 위해 송수신부(110)로 전송된다.
자바 스크립트 난독화부(130)는 특정 웹페이지에 직접적으로 또는 간접적으로 포함된 자바 스크립트의 소스 코드를 선택한 뒤 해당 소스 코드를 컴파일을 통해 분석 작업을 수행한다. 또한, 자바 스크립트 난독화부(130)는 분석 작업의 결과에 기반한 소스 코드 변경을 수행하여 난독화된 코드를 생성하고 저장한다. 자바 스크립트 난독화부(130)의 상세한 기능에 대해서는 후술하도록 한다.
데이터베이스(140)는 웹페이지 제공부(120)가 검색할 수 있는 웹페이지, 자바 스크립트 난독화부(130)에서 선택할 수 있는 자바 스크립트의 소스 코드 및 저장되는 난독화된 코드 등을 저장하는 공간을 통칭하는 개념이다. 본 발명의 간략한 예시를 위하여 도 2에는 데이터베이스(140)가 하나만 도시되어 있지만, 본 발명의 다른 실시예에 따라, 앞서 나열한 다양한 데이터들이 하나 이상의 물리적으로 구별되는 별도의 데이터베이스에 저장될 수 있음은 본 발명이 속하는 분야에서 통상의 지식을 가진 자에게 있어 자명하다.
도 3에서의 송수신부(110), 웹페이지 제공부(120) 및 자바 스크립트 난독화부(130)는 물리적으로 하나의 기계 내에 구현될 수도 있고 일부 또는 그 각각이 물리적으로 다른 기계에 구현될 수도 있거나, 동일한 기능을 하는 물리적으로 복수 개 존재하는 기계가 병렬적으로 존재할 수도 있다. 이렇듯 본 발명은 각 구성부가 설치된 기계 또는 데이터베이스의 물리적인 개수 및 위치에 한정되지 않고 다양한 방식으로 설계 변경될 수 있음은 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 있어 자명하다.
자바 스크립트 난독화부
본 발명의 일 실시예에 따라 도 4에 도시된 웹서버(100) 내의 자바 스크립트 난독화부(130)를 더욱 상세히 설명하면, 자바 스크립트 난독화부(130)는 코드 선택 모듈(131), 코드 분석 모듈(132), 코드 난독화 모듈(133) 및 코드 저장 모듈(134)을 포함할 수 있다.
여기서 본 발명의 일 실시예에 따른 코드 선택 모듈(131)은 난독화를 수행하고자 하는 자바 스크립트 소스 코드를 선택한다. 이러한 선택의 일 실시예에 있어서, 코드 선택 모듈(131)은 데이터베이스(140)에 저장되어 있는 소정 웹페이지를 읽어들인 뒤 웹페이지 내에 직접적으로 삽입된 자바 스크립트 소스 코드를 선택할 수도 있고, 다른 실시예에 있어서는 읽어들인 웹페이지에 간접적으로 포함된 자바스크립트 소스 코드가 저장된 경로를 확인한 뒤 해당 경로에 저장되어 있는 자바스크립트 파일(일반적으로 파일 포맷이 JS로 되어 있는)을 읽어들이는 방식으로 선택할 수도 있으나 반드시 이에 한정되는 것은 아니며, 다양한 방식으로 난독화를 수행하고자 하는 자바 스크립트 소스 코드를 선택할 수 있다.
다음으로, 본 발명의 일 실시예에 따른 코드 분석 모듈(132)은 앞서 코드 선택 모듈(131)에서 선택된 자바 스크립트 소스 코드를 대상으로 컴파일을 통한 분석 작업을 수행한다. 분석 작업의 일 예로 코드 분석 모듈(132)은 자바 스크립트 소스 코드를 의미있는 토큰(token) 단위로 분해하고 분해된 토큰들로 이루어진 파스 트리(parse tree)를 만드는 파싱(parsing) 작업을 수행할 수 있으며, 이러한 분석 작업의 결과로 소스 코드 내에 포함되어 있는 각각의 함수 및 변수들이 분해되어 트리의 각 부분에 위치할 수 있다.
본 발명의 일 실시예에 따른 코드 난독화 모듈(133)은 앞서 코드 분석 모듈(132)을 통해서 분석된 자바스크립트 소스 코드를 대상으로 난독화 작업을 수행한다. 난독화 작업이란 제3자가 판독하기 어렵도록 자바스크립트 소스 코드를 수정, 변경하는 작업을 통칭하는 의미로 어느 하나의 실시예에 한정되지 않으며, 난독화 작업의 구체적인 예들은 다음과 같다.
먼저, 난독화 작업의 일 예로 코드 난독화 모듈(133)은 형 이름(Type Name)을 변경하는 알고리즘(이하 '형 이름 변경 알고리즘'을 사용하여 함수명 이나 변수명, 또는 숫자나 문자열 등의 상수를 변경할 수 있다. 구체적으로, 코드 난독화 모듈(133)은 도 5a에 도시된 예와 같이 좌측의 자바 스크립트 소스 코드로부터 변수명 및 함수명을 아무런 의미도 없는 변수명 및 함수명으로 변경하여 난독화된 우측의 [변경 1] 및 [변경 2] 등에 해당하는 결과를 도출할 수 있으며, 이 경우 각기 다른 여러 개의 형 이름 변경 알고리즘을 포함하는 방식으로 변경시마다 동일한 알고리즘을 사용하지 않음으로써 제3자가 변경 규칙을 찾을 수 없어 판독하기 어렵도록 할 수 있거나 또는 사용자의 선택에 의해 특정 알고리즘을 지정하도록 할 수도 있다. 또한, 형 변경 알고리즘의 하나로써 난수를 발생시키고, 이를 변수명이나 함수명의 일부로 사용하게 할 수 있으며 그 결과가 도 5a의 우측 하단의 [변경 2]에 해당한다.
도 5b는 형 이름 변경 알고리즘을 이용하여 상수를 변경하는 예를 도시한다. 도 5b의 좌측 자바스크립트 소스 코드를 살펴보면 각각 숫자 20100501 및 문자열 "Korea"를 갖는 변수 today 및 country가 있으나, 상수는 이처럼 알기 쉬운 형태로 소스 코드에 표시되므로 제3자에 의한 판독이 용이한 문제가 있다. 따라서, 상수를 난독화하기 위한 일 예로 코드 난독화 모듈(133)은 도 5b의 우측 상단의 [변경 1]과 같이 숫자를 다양한 진수(예를 들어 16진수, 8진수, 10진수, 2진수 등)의 결합으로 변경하고 문자열은 16진수 아스키(ASCII) 표기 형태로 치환하는 방식으로 변경할 수 있다. 즉, 도 5b의 우측 상단의 [변경 1]에서 0x11398C5는 10진수로 18061509의 16진수 표기법이며, 07312073은 10진수로 1938491의 8진수 표기법이다. 따라서 변경 후의 변수 today의 값은 10진수로 환산하면 18061509 + 1938491 + 100000 + 501이 되어 20100501을 나타내므로 변경 이전 값과 동일한 것을 알 수 있다. 마찬가지로, 도 5b의 우측 상단에서 \u004B는 "K"의 아스키 표기 형태이며, 마찬가지로 다른 값들도 각각 "o", "r", "e" 및 "a"의 아스키 표기형태이므로 변경 후의 변수 country의 값 역시 "Korea"로 변경 이전 값과 동일한 것을 알 수 있다. 상수를 난독화하기 위한 다른 예로 코드 난독화 모듈(133)은 도 5b의 우측 하단의 [변경 2]와 같이 암호화 및 복호화 로직을 사용할 수 있다. 특정 암호화 알고리즘에 의해 숫자 20100501을 암호화 한 값이 "xcvkj-s34819-v9d"로 나올 때, 복호화 하는 함수 descryptNumber(number)를 자바 스크립트 소스 코드에 추가하고 암호화 된 값을 함수의 파라미터로 넣는 방식으로 난독화 처리할 수 있다. 마찬가지로 문자열 "Korea"를 암호화 한 값이 "7c8v9xx0a8vdklmnafv0x3j8193"인 경우 이를 복호화하는 함수 descrypt(string)을 상기와 동일한 방식으로 사용하여 난독화 처리할 수 있다. 여기서 사용될 수 있는 암호화 알고리즘은 어느 특정 알고리즘에 한정되지 않는다.
형 이름 변경 알고리즘을 통해 함수명이나 변수명을 변경하는 경우, 코드 난독화 모듈(133)은 앞서 코드 분석 모듈(132)을 통해 분석된 결과를 이용하여 변경된 함수나 변수가 사용되는 모든 부분을 동일하게 변경한다.
난독화 작업의 다른 예로, 코드 난독화 모듈(133)은 소스 코드를 셔플(shuffle)하는 알고리즘(이하 '셔플 알고리즘'을 사용하여 실행에 영향을 주지 않는 범위에서 소스 코드 일부의 위치를 변경할 수 있다. 구체적으로 도 6a의 좌측에 있는 원본 소스 코드에서 함수 A() 및 B()의 선언 순서는 자바 스크립트 소스 코드의 실행에 영향을 주지 않는다는 것을 앞선 코드 분석 모듈(132)의 분석을 통해 확인할 수 있고, 따라서 코드 난독화 모듈(133)은 도 6a의 우측과 같이 실행에 영향을 주지 않는 함수 A() 및 B()의 선언 위치를 변경하는 방식으로 난독화를 수행할 수 있다.
셔플 알고리즘에 의하면 단지 함수의 선언 위치뿐 아니라 변수 선언 또는 특정 구문의 위치도 실행에 영향을 주지 않는 범위 내에서 변경할 수 있으며, 코드 난독화 모듈(133)은 도 6b의 좌측과 같이 변수 a, b, c의 선언 순서는 프로그램의 실행 결과에 영향을 주지 않는 것을 확인한 경우 도 6b의 우측과 같이 특정 순서에 의하거나 무작위로 위치를 변경하는 방식으로 난독화를 수행할 수 있다.
난독화 작업의 또 다른 예로, 코드 난독화 모듈(133)은 소스 코드에 더미(Dummy) 코드를 삽입하는 알고리즘(이하 '더미 알고리즘'을 사용하여 실행에 영향을 주지 않는 범위 내에서 실제로는 아무 동작을 하지 않는, 알아보기 어렵고 복잡한 더미 코드를 소스 코드 내에 삽입할 수 있다. 구체적으로, 코드 난독화 모듈(133)은 미리 저장되어 있는 다양한 더미 코드 리스트 중에서 하나 이상을 선택하여 삽입할 수 있는데 도 7의 좌측과 같은 함수 내부에 더미 코드를 삽입한 결과는 도 7의 우측과 같다. 도 7의 우측에서 A로 표시된 더미 코드는 작동하는 것처럼 보이나 실제로는 아무 일도 하지 않는 코드이다.
앞서 살펴본 세가지 난독화 알고리즘은 코드 난독화 모듈(133)에서 사용될 수 있는 실질적인 예시에 불과하며, 해당 분야의 기술 수준 및 당업자의 기술 상식에 따라 다양한 방법에 의해 상기 정보 적용의 예들을 단독으로, 또는 결합하여 사용하거나, 동일 또는 유사한 기능을 수행할 수 있도록 변형하여 사용할 수 있는 것은 인지되어야 한다.
또한, 코드 난독화 모듈(133)은 난독화 작업이 수행된 자바 스크립트 소스 코드를 대상으로 추가적으로 압축 및 코드 최적화 작업을 수행하거나, 또는 난독화 작업의 수행 전에 미리 압축 및 코드 최적화 작업을 수행할 수도 있다. 여기서 압축 작업은 자바 스크립트 소스 코드 내의 필요 없는 공백이나 주석을 제거하여 소스 코드의 용량을 줄이고 주석에 의해 제3자가 특정 구문의 역할이나 특성을 이해하는 것을 방지할 수 있다.
코드 최적화 작업은 소스 코드 상의 오버헤드(overhead)를 줄이는 작업으로, 예를 들어 반복되는 상수가 존재하는 경우 하나의 변수에 지정해서 사용하도록 소스 코드를 변경하거나, 자주 사용되는 속성 접근자의 경우 속성 자체를 따로 변수에 할당하여 속성 접근 속도를 높이도록 소스 코드를 변경할 수 있다. 이러한 코드 최적화 작업이라 할 지라도 난독화 작업 중 의도적으로 삽입된 더미 코드가 존재하는 경우 더미 코드는 코드 최적화 작업의 대상에 포함되지 않는다.
마지막으로, 본 발명의 일 실시예에 따른 코드 저장 모듈(134)은 코드 난독화 모듈(133)을 통해서 변경된, 즉 난독화된 소스 코드를 저장하는 기능을 수행한다. 저장 기능의 구체적인 일 예로, 자바 스크립트 소스 코드가 웹페이지 내에 직접적으로 포함되어 있는 경우 소스 코드 부분을 난독화 한 뒤 별도의 파일로 저장하고, 해당 웹페이지에서는 기존에 포함된 소스 코드 부분을 삭제한 뒤 난독화된 자바스크립트 파일을 간접적으로 포함하기 위한 문구를 삽입할 수 있다. 저장 기능의 다른 예로, 웹페이지가 복수의 자바 스크립트 파일을 간접적으로 포함하고 있는 경우, 그 각각을 난독화한 뒤 하나의 자바 스크립트 파일로 통합 저장하고 웹페이지에 기존의 자바 스크립트 파일을 포함하는 구문을 삭제한 뒤 통합 저장된 자바스크립트 파일을 간접적으로 포함하기 위한 문구를 삽입할 수 있다. 또한, 웹페이지에 간접적으로 포함되어 있는 기존의 자바 스크립트 파일을 난독화한 뒤 동일한 파일명으로 데이터베이스(140)에 덮어쓰기할 수도 있고, 또는 새로운 이름으로 데이터베이스(140)에 저장한 뒤 웹페이지 내부에 난독화된 자바 스크립트 파일을 간접적으로 포함하도록 웹페이지를 수정할 수도 있다.
본 발명에 따른 실시예들은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(Floptical disk)와 같은 자기-광 매체(megneto-optical media) 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 본 발명의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동되도록 구성될 수 있으며, 그 역도 마찬가지다.
이상과 같이 본 발명에서는 구체적인 구성 요소 등과 같은 특정 사항들과 한정된 실시예 및 도면에 의해 설명되었으나 이는 본 발명의 보다 전반적인 이해를 돕기 위해서 제공된 것일 뿐, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상적인 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다.
따라서, 본 발명의 사상은 설명된 실시예에 국한되어 정해져서는 아니되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등하거나 등가적 변형이 있는 모든 것들은 본 발명 사상의 범주에 속한다고 할 것이다.

Claims (17)

  1. 자바 스크립트 소스 코드의 난독화를 수행하기 위한 방법에 있어서,
    난독화를 수행할 소스 코드를 선택하는 코드 선택 단계;
    상기 선택된 소스 코드를 컴파일을 통해 분석하는 코드 분석 단계;
    상기 분석된 코드를 대상으로 특정 알고리즘에 기반한 난독화 작업을 수행하는 코드 난독화 단계; 및
    상기 난독화가 수행된 소스 코드를 저장하는 코드 저장 단계를 포함하되,
    상기 특정 알고리즘은 형 이름(Type Name) 변경 알고리즘이며,
    상기 형 이름 변경 알고리즘은 상기 분석된 코드 내의 함수명, 변수명 또는 상수를 소정 규칙에 의해 변경하는 알고리즘이고,
    상기 난독화를 수행할 소스코드를 포함하고 있는 웹 페이지가 복수의 난독화를 수행할 소스코드 파일을 간접적으로 포함하고 있는 경우,
    상기 코드 선택 단계, 상기 코드 분석 단계 및 상기 코드 난독화 단계는 각각의 소스코드에 대하여 수행되어 상기 복수의 난독화를 수행할 소스코드 각각을 난독화하며,
    상기 코드 저장 단계는 상기 난독화된 복수의 소스코드들을 하나의 소스코드 파일로 통합하여 저장하고, 상기 웹페이지에 상기 난독화를 수행할 소스코드 파일들 각각을 간접적으로 포함하하는 구문을 삭제한 후 상기 통합 저장된 소스코드 파일을 간접적으로 포함하기 위한 구문을 삽입하는 것을 특징으로 하는 난독화 방법.
  2. 청구항 1에 있어서,
    상기 코드 선택 단계는,
    데이터베이스에 저장된 소정 웹페이지를 읽어들이는 단계;
    상기 웹페이지 내부에 자바 스크립트 소스 코드가 삽입된 경우 상기 삽입된 소스 코드를 선택하는 단계; 및
    상기 웹페이지가 자바 스크립트 파일을 간접적으로 포함한 경우, 상기 간접적으로 포함된 자바 스크립트 파일을 선택하는 단계를 더 포함하는 것을 특징으로 하는 난독화 방법.
  3. 청구항 1에 있어서,
    상기 코드 분석 단계는,
    상기 선택된 소스 코드를 컴파일을 통해 토큰(token) 단위로 분해하는 단계; 및
    상기 분해된 토큰들로 이루어진 파스 트리(parse tree)를 생성하는 파싱 (parsing) 단계를 더 포함하는 것을 특징으로 하는 난독화 방법.
  4. 청구항 1에 있어서,
    상기 특정 알고리즘은 셔플(Shuffle) 알고리즘 또는 더미(Dummy) 알고리즘 중 적어도 하나를 더 포함하는 것을 특징으로 하는 난독화 방법.
  5. 청구항 1에 있어서,
    상기 형 이름 변경 알고리즘은 상기 분석된 코드 내의 함수명, 변수명 또는 상수를 암호화 로직에 따라 암호화하며,
    상기 코드 난독화 단계는 상기 암호화 로직에 따라 암호화된 정보를 복호화할 수 있는 복호화 함수를 상기 소스 코드에 추가하는 것을 특징으로 하는 난독화 방법.
  6. 청구항 4에 있어서,
    상기 셔플 알고리즘은,
    상기 분석된 코드 내의 함수 선언 구문 또는 변수 선언 구문의 순서를 상기 소스 코드의 실행에 영향을 주지 않는 범위 내에서 변경하는 알고리즘인 것을 특징으로 하는 난독화 방법.
  7. 청구항 4에 있어서,
    상기 더미 알고리즘은,
    미리 저장된 더미 코드 중 적어도 하나를 선택하여 상기 분석된 코드 내에 삽입하는 알고리즘인 것을 특징으로 하는 난독화 방법.
  8. 청구항 1에 있어서,
    상기 분석된 코드를 대상으로 필요 없는 공백이나 주석을 제거하는 압축 단계를 더 포함하는 것을 특징으로 하는 난독화 방법.
  9. 청구항 1에 있어서,
    상기 분석된 코드를 대상으로 오버헤드(overhead)를 줄이는 코드 최적화 단계를 더 포함하는 것을 특징으로 하는 난독화 방법.
  10. 자바 스크립트 소스 코드의 난독화를 수행하기 위한 시스템에 있어서,
    난독화를 수행할 소스 코드를 선택하는 코드 선택 모듈;
    상기 선택된 소스 코드를 컴파일을 통해 분석하는 코드 분석 모듈;
    상기 분석된 코드를 대상으로 특정 알고리즘에 기반한 난독화 작업을 수행하는 코드 난독화 모듈; 및
    상기 난독화가 수행된 소스 코드를 저장하는 코드 저장 모듈을 포함하되,
    상기 특정 알고리즘은 형 이름(Type Name) 변경 알고리즘이며,
    상기 형 이름 변경 알고리즘은 상기 분석된 코드 내의 함수명, 변수명 또는 상수를 소정 규칙에 의해 변경하는 알고리즘이고,
    상기 난독화를 수행할 소스코드를 포함하고 있는 웹 페이지가 복수의 난독화를 수행할 소스코드 파일을 간접적으로 포함하고 있는 경우,
    상기 코드 선택 모듈, 상기 코드 분석 모듈 및 상기 코드 난독화 모듈은 각각의 소스코드에 대하여 수행되어 상기 복수의 난독화를 수행할 소스코드 각각을 난독화하며,
    상기 코드 저장 모듈은 상기 난독화된 복수의 소스코드들을 하나의 소스코드 파일로 통합하여 저장하고, 상기 웹페이지에 상기 난독화를 수행할 소스코드 파일들 각각을 간접적으로 포함하하는 구문을 삭제한 후 상기 통합 저장된 소스코드 파일을 간접적으로 포함하기 위한 구문을 삽입하는 것을 특징으로 하는 난독화 시스템.
  11. 청구항 10에 있어서,
    상기 특정 알고리즘은 셔플(Shuffle) 알고리즘 또는 더미(Dummy) 알고리즘 중 적어도 하나를 더 포함하는 것을 특징으로 하는 난독화 시스템.
  12. 청구항 10에 있어서,
    상기 형 이름 변경 알고리즘은 상기 분석된 코드 내의 함수명, 변수명 또는 상수를 암호화 로직에 따라 암호화하며,
    상기 코드 난독화 모듈은 상기 암호화 로직에 따라 암호화된 정보를 복호화할 수 있는 복호화 함수를 상기 소스 코드에 추가하는 것을 특징으로 하는 난독화 시스템.
  13. 청구항 11에 있어서,
    상기 셔플 알고리즘은,
    상기 분석된 코드 내의 함수 선언 구문 또는 변수 선언 구문의 순서를 상기 소스 코드의 실행에 영향을 주지 않는 범위 내에서 변경하는 알고리즘인 것을 특징으로 하는 난독화 시스템.
  14. 청구항 11에 있어서,
    상기 더미 알고리즘은,
    미리 저장된 더미 코드 중 적어도 하나를 선택하여 상기 분석된 코드 내에 삽입하는 알고리즘인 것을 특징으로 하는 난독화 시스템.
  15. 청구항 10에 있어서,
    상기 코드 난독화 모듈은 상기 분석된 코드를 대상으로 필요 없는 공백이나 주석을 제거하는 압축 기능을 더 포함하는 것을 특징으로 하는 난독화 시스템.
  16. 청구항 10에 있어서,
    상기 코드 난독화 모듈은 상기 분석된 코드를 대상으로 오버헤드(overhead)를 줄이는 코드 최적화 기능을 더 포함하는 것을 특징으로 하는 난독화 시스템.
  17. 청구항 제1항 내지 제9항 중 어느 한 항에 기재된 방법의 각 단계를 컴퓨터 상에서 수행하기 위한 프로그램을 기록한 컴퓨터 판독 가능한 기록매체.
KR1020100066932A 2010-07-12 2010-07-12 자바스크립트의 소스 코드 보호를 위해 난독화를 하기 위한 방법, 시스템 및 컴퓨터 판독 가능한 기록 매체 Expired - Fee Related KR101157996B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020100066932A KR101157996B1 (ko) 2010-07-12 2010-07-12 자바스크립트의 소스 코드 보호를 위해 난독화를 하기 위한 방법, 시스템 및 컴퓨터 판독 가능한 기록 매체

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020100066932A KR101157996B1 (ko) 2010-07-12 2010-07-12 자바스크립트의 소스 코드 보호를 위해 난독화를 하기 위한 방법, 시스템 및 컴퓨터 판독 가능한 기록 매체

Publications (2)

Publication Number Publication Date
KR20120006288A KR20120006288A (ko) 2012-01-18
KR101157996B1 true KR101157996B1 (ko) 2012-06-25

Family

ID=45612063

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020100066932A Expired - Fee Related KR101157996B1 (ko) 2010-07-12 2010-07-12 자바스크립트의 소스 코드 보호를 위해 난독화를 하기 위한 방법, 시스템 및 컴퓨터 판독 가능한 기록 매체

Country Status (1)

Country Link
KR (1) KR101157996B1 (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101429229B1 (ko) * 2012-12-27 2014-08-12 한라대학교산학협력단 명령문 병합을 이용한 자바 난독화방법
KR101462114B1 (ko) 2013-03-28 2014-11-17 네이버 주식회사 동기식 스크립트 지연 로딩 시스템, 방법 및 컴퓨터 판독 가능한 기록 매체
KR101521765B1 (ko) * 2015-01-08 2015-05-20 숭실대학교산학협력단 분간이 난해한 식별자 변환을 이용한 코드 난독화 장치 및 방법
KR101619458B1 (ko) * 2016-03-02 2016-05-10 (주)케이사인 애플리케이션 코드 난독화 장치 및 이를 이용한 애플리케이션 코드 난독화 방법
CN114090964A (zh) * 2021-11-18 2022-02-25 北京五八信息技术有限公司 代码处理方法、装置、电子设备及可读介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003337629A (ja) * 2002-05-18 2003-11-28 Mitsuko Miyaji プログラム難読化方法及び装置
JP2004185064A (ja) 2002-11-29 2004-07-02 Matsushita Electric Ind Co Ltd プログラムの難読化装置及び難読化方法
KR20090084529A (ko) * 2008-02-01 2009-08-05 주식회사 안철수연구소 악성 스크립트 코드 복호화 방법 및 시스템
KR20100010749A (ko) * 2008-07-23 2010-02-02 한국전자통신연구원 난독화된 악성 웹페이지 탐지 방법 및 장치

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003337629A (ja) * 2002-05-18 2003-11-28 Mitsuko Miyaji プログラム難読化方法及び装置
JP2004185064A (ja) 2002-11-29 2004-07-02 Matsushita Electric Ind Co Ltd プログラムの難読化装置及び難読化方法
KR20090084529A (ko) * 2008-02-01 2009-08-05 주식회사 안철수연구소 악성 스크립트 코드 복호화 방법 및 시스템
KR20100010749A (ko) * 2008-07-23 2010-02-02 한국전자통신연구원 난독화된 악성 웹페이지 탐지 방법 및 장치

Also Published As

Publication number Publication date
KR20120006288A (ko) 2012-01-18

Similar Documents

Publication Publication Date Title
EP3440542B1 (en) Applying bytecode obfuscation techniques to programs written in an interpreted language
EP2976709B1 (en) Systems and methods for intercepting, processing, and protecting user data through web application pattern detection
JP6257754B2 (ja) データの保護
CN106778288B (zh) 一种数据脱敏的方法及系统
US8660976B2 (en) Web content rewriting, including responses
US8131753B2 (en) Apparatus and method for accessing and indexing dynamic web pages
US20180121680A1 (en) Obfuscating web code
KR101157996B1 (ko) 자바스크립트의 소스 코드 보호를 위해 난독화를 하기 위한 방법, 시스템 및 컴퓨터 판독 가능한 기록 매체
KR20100023880A (ko) 서버 측 분석 및 인스트루먼테이션을 통한 매쉬업 컴포넌트 격리
CN109508437A (zh) 一种搜索网站审计方法、系统及网关设备和存储介质
CN110309631B (zh) 一种编程语言结构混淆处理方法、智能终端及存储介质
CN114282233A (zh) Web性能优化方法、装置、计算机设备和存储介质
CA3150187C (en) Method and apparatus for protecting web script codes
CN107147645A (zh) 网络安全数据的获取方法及装置
CN111651781B (zh) 日志内容保护方法、装置、计算机设备和存储介质
Ablahd et al. Using flask for SQLIA detection and protection
CN114978649B (zh) 基于大数据的信息安全保护方法、装置、设备及介质
Yang et al. Exploring injection prevention technologies for security-aware distributed collaborative manufacturing on the Semantic Web
KR101296384B1 (ko) 웹 페이지 무결성 검증 시스템 및 방법
Le et al. Webassembly: portability and risks
Satyanarayana et al. Static analysis tool for detecting web application vulnerabilities
CN113590624A (zh) 一种数据处理方法及电子装置
CN118035958A (zh) 基于动态链接库提高源码安全的方法、装置、设备及介质
Chen et al. Compiler support for effective XSL transformation
HK1202666B (en) Method for data protection and device thereof

Legal Events

Date Code Title Description
A201 Request for examination
PA0109 Patent application

Patent event code: PA01091R01D

Comment text: Patent Application

Patent event date: 20100712

PA0201 Request for examination
E902 Notification of reason for refusal
PE0902 Notice of grounds for rejection

Comment text: Notification of reason for refusal

Patent event date: 20110819

Patent event code: PE09021S01D

AMND Amendment
PG1501 Laying open of application
E601 Decision to refuse application
PE0601 Decision on rejection of patent

Patent event date: 20120326

Comment text: Decision to Refuse Application

Patent event code: PE06012S01D

Patent event date: 20110819

Comment text: Notification of reason for refusal

Patent event code: PE06011S01I

AMND Amendment
PX0901 Re-examination

Patent event code: PX09011S01I

Patent event date: 20120326

Comment text: Decision to Refuse Application

Patent event code: PX09012R01I

Patent event date: 20111121

Comment text: Amendment to Specification, etc.

PX0701 Decision of registration after re-examination

Patent event date: 20120605

Comment text: Decision to Grant Registration

Patent event code: PX07013S01D

Patent event date: 20120425

Comment text: Amendment to Specification, etc.

Patent event code: PX07012R01I

Patent event date: 20120326

Comment text: Decision to Refuse Application

Patent event code: PX07011S01I

Patent event date: 20111121

Comment text: Amendment to Specification, etc.

Patent event code: PX07012R01I

X701 Decision to grant (after re-examination)
GRNT Written decision to grant
PR0701 Registration of establishment

Comment text: Registration of Establishment

Patent event date: 20120613

Patent event code: PR07011E01D

PR1002 Payment of registration fee

Payment date: 20120614

End annual number: 3

Start annual number: 1

PG1601 Publication of registration
FPAY Annual fee payment

Payment date: 20170328

Year of fee payment: 6

PR1001 Payment of annual fee

Payment date: 20170328

Start annual number: 6

End annual number: 6

FPAY Annual fee payment

Payment date: 20180328

Year of fee payment: 7

PR1001 Payment of annual fee

Payment date: 20180328

Start annual number: 7

End annual number: 7

FPAY Annual fee payment

Payment date: 20190325

Year of fee payment: 8

PR1001 Payment of annual fee

Payment date: 20190325

Start annual number: 8

End annual number: 8

PR1001 Payment of annual fee

Payment date: 20210324

Start annual number: 10

End annual number: 10

PC1903 Unpaid annual fee

Termination category: Default of registration fee

Termination date: 20240324