KR20140095217A - 보안 및 성능 모두를 만족시키기 위한 필터링 방법 및 시스템 - Google Patents

보안 및 성능 모두를 만족시키기 위한 필터링 방법 및 시스템 Download PDF

Info

Publication number
KR20140095217A
KR20140095217A KR1020130007863A KR20130007863A KR20140095217A KR 20140095217 A KR20140095217 A KR 20140095217A KR 1020130007863 A KR1020130007863 A KR 1020130007863A KR 20130007863 A KR20130007863 A KR 20130007863A KR 20140095217 A KR20140095217 A KR 20140095217A
Authority
KR
South Korea
Prior art keywords
parser
code
filtering
parsing
memory
Prior art date
Application number
KR1020130007863A
Other languages
English (en)
Other versions
KR101539139B1 (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 KR1020130007863A priority Critical patent/KR101539139B1/ko
Publication of KR20140095217A publication Critical patent/KR20140095217A/ko
Application granted granted Critical
Publication of KR101539139B1 publication Critical patent/KR101539139B1/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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

보안 및 성능 모두를 만족시키기 위한 필터링 방법 및 시스템이 개시된다. 코드를 필터링하는 필터링 방법은, 현재 사용 가능한 메모리 용량을 확인하는 단계, 상기 코드의 용량을 확인하여 제1 파서(parser)를 통해 파싱(parsing)을 진행하는 경우에 예상되는 메모리 사용량을 계산하는 단계, 상기 메모리 용량 및 상기 메모리 사용량에 기초하여 상기 제1 파서 및 제2 파서 중 하나의 파서를 선택하는 단계, 상기 선택된 파서를 통해 상기 코드의 파싱을 진행하여 파싱 결과를 생성하는 단계 및 상기 생성된 파싱 결과를 이용하여 상기 코드의 필터링을 수행하는 단계를 포함할 수 있다.

Description

보안 및 성능 모두를 만족시키기 위한 필터링 방법 및 시스템{FILTERING METHOD AND SYSTEM FOR SATISFYING BOTH SECURITY AND PERFORMANCE}
본 발명의 실시예들은 보안 및 성능 모두를 만족시키기 위한 필터링 방법 및 시스템에 관한 것이다.
XSS(Cross Site Scripting)는 타 사용자의 정보를 추출하기 위해 사용되는 공격 기법으로, 게시판이나 검색입력 창과 같이 사용자의 입력을 받는 부분에 공격자가 스크립트 코드(XSS 코드)를 삽입하여 XSS 코드가 삽입된 내용을 열람한 타 사용자의 정보로 로그인하거나 개인정보를 탈취하는 등의 악의적인 행동이 가능해진다. 따라서, 게시판이나 검색입력 창에서 HTML(Hyper Text Markup Language)을 허용하는 경우, 사용자가 입력한 데이터에 악의적인 태그 및 스크립트가 포함되어 있는지 여부를 필터링하는 과정이 꼭 필요하다.
일례로, XSS 필터는 XSS의 위험을 줄이기 위하여, 사용자가 입력한 데이터 중에서 자바스크립트 등의 허용되지 않은 코드의 식별 및 무효화 처리를 담당하는 웹 보안 필터이다.
다수의 웹 기반 사용자 서비스들은 XSS에 대한 처리를 개별 프로젝트 수준에서 개발하여 적용하거나 오픈 소스 라이브러리를 이용하기 때문에 보안 담당 부서에 의해 일괄된 XSS 보안 정책이 적용되는 것이 아니라 사용자 서비스마다 각기 다른 규칙과 로직에 의해 XSS 필터링이 수행된다는 문제점이 있으며, 메일 서비스와 같이 대용량 컨텐츠에 대해 DOM(document Object Model) 파서(parser) 방식의 XSS 필터를 사용하는 경우, OOM(Out Of Memory) 오류가 발생할 수 있는 문제점이 있다. 뿐만 아니라, 종래기술의 XSS 필터들은 잘 정형화된(welformed) HTML 코드에 대해서만 완벽한 파싱이 가능하여 비 정형화된(malformed) HTML 코드에 대한 파싱에 취약한 문제점이 있다.
사용 가능한 메모리 용량과 필터링 대상 코드의 용량을 비교하여 DOM(document Object Model) 마크업 파서(markup parser)와 SAX(Simple API for XML) 마크업 파서 중 하나를 선택적으로 활용함으로써, 메모리 사용량 및 필터링 속도를 향상시킬 수 있는 필터링 방법 및 필터링 시스템을 제공한다.
DOM 마크업 파서를 이용한 파싱을 통해, 스택 오버플로우(stack overflow) 오류의 발생이 감지되는 경우, DOM 마크업 파서를 스택 오버플로우 오류가 원적적으로 발생하지 않는 SAX 마크업 파서로 자동 전환하여 파싱을 수행할 수 있는 필터링 방법 및 필터링 시스템을 제공한다.
블랙리스트 필터링 방식이 아닌 화이트리스트 필터링 방식을 활용하여 일관된 XSS 보안 정책의 수립 및 적용이 가능한 필터링 방법 및 필터링 시스템을 제공한다.
코드를 필터링하는 필터링 방법에 있어서, 현재 사용 가능한 메모리 용량을 확인하는 단계, 상기 코드의 용량을 확인하여 제1 파서(parser)를 통해 파싱(parsing)을 진행하는 경우에 예상되는 메모리 사용량을 계산하는 단계, 상기 메모리 용량 및 상기 메모리 사용량에 기초하여 상기 제1 파서 및 제2 파서 중 하나의 파서를 선택하는 단계, 상기 선택된 파서를 통해 상기 코드의 파싱을 진행하여 파싱 결과를 생성하는 단계 및 상기 생성된 파싱 결과를 이용하여 상기 코드의 필터링을 수행하는 단계를 포함하는 필터링 방법이 제공된다.
일측에 따르면, 상기 제1 파서는, 상기 코드에 포함된 전체 태그에 대한 트리를 상기 파싱 결과로서 생성하여 제공하는 파서를 포함하고, 상기 제2 파서는 상기 코드에 포함된 태그들을 상기 파싱 결과로서 순차적으로 제공하는 파서를 포함하는 것을 특징으로 할 수 있다.
다른 측면에 따르면, 상기 하나의 파서를 선택하는 단계는, 상기 메모리 용량 및 상기 메모리 사용량을 비교하여 상기 제1 파서(parser)를 이용한 파싱을 통해 OOM(Out Of Memory) 오류가 발생하는지 여부를 판단하는 단계 및 상기 OOM 오류가 발생하지 않는 경우에 상기 제1 파서를 선택하고, 상기 OOM 오류가 발생하는 경우에 상기 제2 파서를 선택하는 단계를 포함하는 것을 특징으로 할 수 있다.
또 다른 측면에 따르면, 상기 하나의 파서를 선택하는 단계는, 상기 메모리 용량이 상기 메모리 사용량보다 기설정된 용량 이상 큰 경우, 상기 제1 파서를 선택하고, 상기 메모리 용량이 상기 메모리 사용량보다 상기 기설정된 용량 이상 크지 않은 경우, 상기 제2 파서를 선택하는 것을 특징으로 할 수 있다.
또 다른 측면에 따르면, 상기 파싱 결과를 생성하는 단계는, 상기 제1 파서가 상기 하나의 파서로 선택된 경우, 상기 제1 파서를 이용하여 상기 코드의 파싱을 진행하면서, 스택 오버플로우(stack overflow) 오류의 발생 여부를 모니터링하는 단계 및 상기 스택 오버플로우 오류의 발생이 감지되는 경우, 상기 선택된 제1 파서를 상기 제2 파서로 전환하여 상기 제2 파서를 통해 상기 코드의 파싱을 재수행하여 상기 파싱 결과를 생성하는 단계를 포함하는 것을 특징으로 할 수 있다.
또 다른 측면에 따르면, 상기 코드의 필터링을 수행하는 단계는, 상기 파싱 결과와 화이트리스트 설정을 비교하여 상기 파싱 결과에 포함된 코드(또는 태그)들 중 상기 화이트리스트 설정을 통해 허용된 코드(또는 태그)들을 제외한 나머지 코드(또는 태그)들을 변경 또는 삭제하여 상기 코드에 대한 필터링을 수행하는 것을 특징으로 할 수 있다.
또 다른 측면에 따르면, 상기 화이트리스트 설정은, 화이트리스트 상위 설정 파일의 필터링 규칙이 화이트리스트 하위 설정 파일로 상속 또는 오버라이딩되도록 구현되는 것을 특징으로 할 수 있다.
코드를 필터링하는 필터링 시스템에 있어서, 적어도 하나의 프로세서 및 적어도 하나의 메모리를 포함하고, 상기 적어도 하나의 프로세서는, 상기 적어도 하나의 메모리에 대해, 현재 사용 가능한 메모리 용량을 확인하고, 상기 코드의 용량을 확인하여 제1 파서(parser)를 통해 파싱(parsing)을 진행하는 경우에 예상되는 메모리 사용량을 계산하고, 상기 메모리 용량 및 상기 메모리 사용량에 기초하여 상기 제1 파서 및 제2 파서 중 하나의 파서를 선택하고, 상기 선택된 파서를 통해 상기 코드의 파싱을 진행하여 파싱 결과를 생성하고, 상기 생성된 파싱 결과를 이용하여 상기 코드의 필터링을 수행하는 것을 특징으로 하는 필터링 시스템이 제공된다.
코드를 필터링하기 위한 라이브러리를 제공하는 라이브러리 제공 시스템에 있어서, 상기 라이브러리의 설치를 위한 파일을 클라이언트 시스템으로 제공하는 파일 제공부를 포함하고, 상기 라이브러리는, 상기 적어도 하나의 메모리에 대해, 현재 사용 가능한 메모리 용량을 확인하도록 상기 클라이언트 시스템을 제어하는 모듈, 상기 코드의 용량을 확인하여 제1 파서(parser)를 통해 파싱(parsing)을 진행하는 경우에 예상되는 메모리 사용량을 계산하도록 상기 클라이언트 시스템을 제어하는 모듈, 상기 메모리 용량 및 상기 메모리 사용량에 기초하여 상기 제1 파서 및 제2 파서 중 하나의 파서를 선택하도록 상기 클라이언트 시스템을 제어하는 모듈, 상기 선택된 파서를 통해 상기 코드의 파싱을 진행하여 파싱 결과를 생성하도록 상기 클라이언트 시스템을 제어하는 모듈 및 상기 생성된 파싱 결과를 이용하여 상기 코드의 필터링을 수행하도록 상기 클라이언트 시스템을 제어하는 모듈을 포함하는 것을 특징으로 하는 라이브러리 제공 시스템이 제공된다.
사용 가능한 메모리 용량과 필터링 대상 코드의 용량을 비교하여 DOM(document Object Model) 마크업 파서(markup parser)와 SAX(Simple API for XML) 마크업 파서 중 하나를 선택적으로 활용할 수 있다.
DOM 마크업 파서를 이용한 파싱을 통해, 스택 오버플로우(stack overflow) 오류의 발생이 감지되는 경우, DOM 마크업 파서를 스택 오버플로우 오류가 원적적으로 발생하지 않는 SAX 마크업 파서로 자동 전환하여 파싱을 수행할 수 있다.
블랙리스트 필터링 방식이 아닌 화이트리스트 필터링 방식을 활용하여 일관된 XSS 보안 정책을 수립 및 적용할 수 있다.
도 1은 본 발명의 일실시예에 있어서, 필터링 시스템의 일례를 설명하기 위한 블록도이다.
도 2는 본 발명의 일실시예에 있어서, 필터링 과정의 일례를 설명하기 위한 흐름도이다.
도 3은 본 발명의 일실시예에 있어서, OOM 오류를 방지하기 위한 방법의 일례를 설명하기 위한 흐름도이다.
도 4는 본 발명의 일실시예에 있어서, 스택 오버플로우 오류를 방지하기 위한 방법의 일례를 설명하기 위한 흐름도이다.
도 5는 본 발명의 일실시예에 있어서, 필터링 시스템 및 파일 제공 시스템을 도시한 블록도이다.
도 6은 본 발명의 일실시예에 있어서, 필터링 방법을 도시한 흐름도이다.
이하, 본 발명의 실시예를 첨부된 도면을 참조하여 상세하게 설명한다.
본 발명의 일시예들에 따른 필터링 시스템은 일관된 XSS(Cross Site Scripting) 보안 정책 수립 및 적용이 가능하도록 xml(extensible markup language) 기반의 화이트리스트 필터링 방식을 사용할 수 있다. 또한, 필터링 시스템은 DOM(document Object Model) 파서(parser) 뿐만 아니라, 메모리 사용량 및 속도가 개선되고 스택 오버플로우(stack overflow) 오류가 발생하지 않는 SAX (Simple API for XML) 파서를 선택적으로 또는 적응적으로 이용하여 OOM(Out Of Memory) 오류의 발생을 막을 수 있으며, 비 정형화된(malformed) 코드(일례로, HTML 코드)에 대해서도 적절한 파싱(parsing)을 수행할 수 있다.
도 1은 본 발명의 일실시예에 있어서, 필터링 시스템의 일례를 설명하기 위한 블록도이고, 도 2는 본 발명의 일실시예에 있어서, 필터링 과정의 일례를 설명하기 위한 흐름도이다. 본 실시예에 따른 필터링 시스템(100)은 적어도 하나의 프로세서(미도시)와 적어도 하나의 메모리(미도시)를 포함할 수 있다. 이때, 적어도 하나의 프로세서에 의해 코드의 필터링을 위한 필터 객체(110)가 생성될 수 있다. 예를 들어, 필터 객체(110)는 입력 코드(120)를 필터링하여 출력 코드를 생성 및 제공하기 위한 라이브러리 모듈로, 입력 코드의 필터링을 위해 적어도 하나의 프로세서에 의해 생성될 수 있다. 이 경우, 생성된 필터 객체(110)는 상술한 적어도 하나의 메모리에 적재(loading)될 수 있다.
필터 객체(110)는 도 1에 도시된 바와 같이, 필터 코어(filter core)(111), 설정 빌더(configuration builder)(112) 및 파서(113)를 포함할 수 있다. 여기서, 필터 객체(110), 필터 코어(filter core)(111), 설정 빌더(configuration builder)(112) 및 파서(113)는 각각 적어도 하나의 프로세서의 동작을 제어하기 위한 라이브러리 모듈일 수 있다.
여기서, 본 실시예에 따른 필터링 과정에 포함된 단계들은 필터링 시스템(100) 또는 필터링 시스템(100)이 포함하는 적어도 하나의 프로세서에 의해 수행될 수 있다. 이후에서는 설명의 편의를 위해, 각 단계들이 필터링 시스템(100)에 의해 수행되는 것으로 설명한다.
단계(210)에서 필터링 시스템(100)은 입력 코드(120)의 필터링을 위해 필터 객체(110)가 생성되면, 화이트리스트 설정(white list configuration)(140)에 정의된 내용을 설정 빌더(112)로 리딩(reading)할 수 있다. 여기서, 화이트리스트 설정 방식은 미리 기술된 설정 내용만을 허용하고, 다른 모든 부분에 대하여 필터링을 수행하는 설정 방식으로, 보안성이 뛰어나다. 일례로, 허용되지 않는 내용을 기술하는 방식의 블랙리스트(black list) 설정 방식은 신규공격 패턴을 막을 수 없기 때문에 보안에 취약하다. 일례로, 화이트리스트 설정(140)은 xml 파일의 형태로 저장 및 유지될 수 있다. 이때, 화이트리스트 설정은 화이트리스트 상위 설정 파일에 대한 상속(일례로, 자바 환경에서의 객체(object) 또는 클래스(class)의 상속) 및 오버라이딩(overriding)이 가능하도록 구현될 수 있다. 따라서, 파일 객체(110)에서는 상위 설정 파일을 상속받는 것만으로도 기본 보안 정책이 파일 객체(110)에 적용될 수 있다. 또한, 서비스에 따라 변경이 불가피한 필터링 규칙은 하위 파일에서 재정의할 수 있기 때문에 서비스에 맞게 필터링 규칙을 수정하는 것도 가능해진다.
단계(220)에서 필터링 시스템(100)은 화이트 리스트 설정(140)을 필터 코어(111)로 전달할 수 있다. 이때, 화이트 리스트 설정(140)의 전달을 통해 필터링을 위한 초기화 작업이 이루어질 수 있다. 예를 들어, 보안 정책과 같은 필터링 규칙들이 화이트 리스트 설정(140)을 이용하여 적용될 수 있다. 도 1에 도시된 바와 같이, 필터 객체(110)는 설정 빌더(112)를 통해 개별적으로 화이트리스트 설정을 리딩하여 필터 코어(111)로 전달하고, 필터 코어(111)에서 화이트리스트 설정이 적용되기 때문에 서비스마다 서로 다른 규칙과 로직을 이용하는 것이 아니라, 일관되고 통합된 XSS 보안 정책을 적용하는 것이 가능해진다.
단계(230)에서 필터링 시스템(100)은 입력 코드(120)를 파서(113)로 제공한다. 이때, 입력 코드는 필터링 되지 않은 HTML 코드로서, 악의적인 XSS 코드를 포함할 수 있다. 일례로, 입력 코드(120)는 필터 코어(111)를 통해 파서(113)로 전달될 수 있다. 본 실시예에서 파서(113)는 DOM 파서(114)와 SAX 파서(115)를 모두 포함할 수 있다. 이때, DOM 파서(114)와 SAX 파서(115) 중 어느 파서를 이용하여 입력 코드(120)를 파싱할 것인가는, 필터 코어(111)에 의해 결정될 수도 있고, 파서(113)에 의해 결정될 수도 있다.
예를 들어, 필터 객체(110)로 입력 코드(120)가 전달되는 경우, 입력 코드(120)와 함께 사용옵션이 더 전달될 수 있다. 이때, 사용옵션은 아래 (1) 내지 (3)과 같이 세 가지 옵션 중 선택된 하나의 옵션에 대한 정보를 포함할 수 있다.
(1) DOM 방식을 사용하는 옵션 - 일례로, DOM 파서(114)를 이용하여 입력 코드(120)를 파싱함.
(2) SAX 방식을 사용하는 옵션 - 일례로, SAX 파서(115)를 이용하여 입력 코드(120)를 파싱함.
(3) DOM 방식을 기본적으로 사용하되, 필요에 따라 SAX 방식으로 자동전환하여 SAX 방식을 사용하는 옵션 - 일례로, DOM 파서(114)를 이용하여 입력 코드(120)를 파싱함에 있어서, OOM 오류의 발생이 예상되는 경우, 또는 DOM 파서(114)를 이용하여 입력 코드(120)를 파싱하는 도중에 스택 오버플로우 오류가 발생하는 경우, DOM 파서(114)를 SAX 파서(115)로 전환하여 SAX 파서(115)를 이용하여 입력 코드(120)를 파싱함.
옵션 (3)과 관련하여 DOM 파서(114)를 SAX 파서(115)로 전환하는 조건과 방법에 대해서는 도 3 및 도 4를 통해 더욱 자세히 설명한다.
단계(240)에서 필터링 시스템(100)은 파서(113)를 통해 입력 코드(120)를 파싱하여 필터 코어(111)로 전달할 수 있다. 이때, DOM 파서(114)를 이용하는 경우, 파서(113)에서는 전체 코드 DOM 태그 트리가 생성될 수 있고, 생성된 전체 코드 DOM 태그 트리가 필터 코어(111)로 전달될 수 있다. 또한, SAX 파서(115)를 이용하는 경우에는 전체 코드가 아니라, 순서대로 태그를 하나씩 읽어내어 필터 코어(111)로 전달하는 스트리밍 방식을 통해 태그들이 필터 코어(111)로 전달될 수 있다.
단계(250)에서 필터링 시스템(100)은 필터 코어(111)를 통해 파서(113)의 파싱 결과와 화이트 리스트 설정(140)을 비교하여 입력 코드(120)를 필터링할 수 있다. 예를 들어, 필터 코어(111)에서는 파싱 결과와 화이트 리스트 설정(140)을 비교를 통해 허용된 코드를 제외한 나머지 코드들이 필터링되어 제공될 수 있다. 이때, DOM 파서(114)를 통해 제공된 파싱 결과는 전체 코드 DOM 태그 트리를 구성하기 때문에 자식태그의 삭제나 교정 등과 같이 코드의 구조를 변경하는 것이 가능하다. 또한, SAX 파서(114)를 통해 제공된 파싱 결과를 통해서는 코드의 구조를 변경하는 것은 불가능하나, 스트리밍 방식을 사용하기 때문에 속도가 빠르고, 메모리 사용량을 대폭 감소시킬 수 있다. 따라서, 상술한 사용옵션을 통해 적절한 파서를 선택적으로 활용함으로써, 보안과 성능을 모두 만족시킬 수 있는 필터링 시스템(100)을 제공하는 것이 가능해진다.
도 3은 본 발명의 일실시예에 있어서, OOM 오류를 방지하기 위한 방법의 일례를 설명하기 위한 흐름도이다. 본 실시예에 따른 방법은 도 1을 통해 설명한 필터링 시스템(100)에 의해 수행될 수 있다. 일례로, 필터링 시스템(100)은 도1을 통해 설명한 필터 객체(110)를 이용하여 또는 필터 객체(110)의 제어를 통해 본 실시예에 따른 방법을 수행할 수 있다.
단계(310)에서 필터링 시스템(100)은 필터링이 시작되면, 현재 사용 가능한 메모리의 용량을 확인할 수 있다. 일례로, 자바(Java) 기반의 환경에서는, JVM(Java Virtual Machine)에서 사용 가능한 힙메모리(heap memory)의 용량을 확인할 수 있다.
단계(320)에서 필터링 시스템(100)은 대상 코드의 용량을 확인하여 DOM 파서를 통해 파싱을 진행하는 경우에 예상되는 메모리 사용량을 계산할 수 있다.
단계(330)에서 필터링 시스템(100)은 현재 사용 가능한 메모리의 용량과 예상되는 메모리 사용량을 비교하여 OOM 오류의 발생 여부를 판단할 수 있다.
단계(340)에서 필터링 시스템(100)은 OOM 오류의 발생 여부에 따라 DOM 파서 및 SAX 파서 중 하나의 파서를 선택하고, 선택된 하나의 파서를 통해 파싱을 진행할 수 있다. 예를 들어, 필터링 시스템(100)은 OOM 오류가 발생하지 않을 것으로 판단되는 경우에는 DOM 파서를 이용하여, OOM 오류가 발생할 것으로 판단되는 경우에는 SAX 파서를 이용하여 코드의 파싱을 진행할 수 있다. 이때, 필터링 시스템(100)은 OOM 오류의 발생 여부를 판단하기 위해, 다양한 방법을 이용할 수 있다. 예를 들어, 필터링 시스템(100)은 단순히 현재 사용 가능한 메모리의 용량이 메모리 사용량 미만인 경우, OOM 오류가 발생할 것으로 판단할 수 있다. 다른 예로, 필터링 시스템(100)은 현재 사용 가능한 메모리의 용량이 메모리 사용량보다 기설정된 용량 이상 크지 않은 경우에 OOM 오류가 발생할 것으로 판단할 수도 있다.
이러한 파서의 선택은 DOM 파서와 SAX 파서가 갖는 특징에 따른 것이다. 예를 들어, 자바(Java) 기반의 환경에서, DOM 파서는 대상이 코드의 용량 대비 8배 정도의 메모리 사용량을 요구하는 반면, SAX 파서는 필터링의 대상이 되는 코드의 용량 대비 3배 정도의 메모리 사용량을 요구한다. 따라서, DOM 파서를 이용하는 경우에 OOM 오류가 발생할 것으로 예상되면, 필터링 시스템(100)은 DOM 파서 대신 요구 메모리 사용량이 상대적으로 작은 SAX 파서를 이용하여 코드의 파싱을 진행할 수 있다.
도 4는 본 발명의 일실시예에 있어서, 스택 오버플로우 오류를 방지하기 위한 방법의 일례를 설명하기 위한 흐름도이다. 본 실시예에 따른 방법은 도 1을 통해 설명한 필터링 시스템(100)에 의해 수행될 수 있다. 일례로, 필터링 시스템(100)은 도1을 통해 설명한 필터 객체(110)를 이용하여 또는 필터 객체(110)의 제어를 통해 본 실시예에 따른 방법을 수행할 수 있다. 또한, 본 실시예에 따른 방법은 DOM 파서를 이용하여 코드의 파싱을 진행하는 과정에 포함될 수 있다.
단계(410)에서 필터링 시스템(100)은 DOM 파서를 이용하여 코드의 파싱을 진행하면서, 스택 오버플로우 오류의 발생 여부를 모니터링할 수 있다.
단계(420)에서 필터링 시스템(100)은 스택 오버플로우 오류의 발생이 감지되는 경우, DOM 파서를 SAX 파서로 자동 전환하여 파싱을 재수행할 수 있다. SAX 파서는 도 1 및 도 2를 통해 이미 설명한 바와 같이, 코드에 포함된 태그들을 순차적으로 스트리밍 방식으로 필터 코어(111)로 전달한다. 따라서, 근본적으로 스택 오버플로우 오류가 발생하지 않기 때문에, DOM 파서를 SAX 파서로 자동 전환하여 파싱을 재수행함으로써, 결과적으로, 스택 오버플로우 오류의 발생으로 인한 문제를 해결할 수 있다.
DOM 파서와 SAX 파서 중 하나의 파서를 이용하여 파싱된 파싱 결과는 도 1을 통해 설명한 필터 코어(111)로 전달되어 대상 코드의 필터링에 이용될 수 있다.
아래 표 1은 DOM 파서를 이용하는 방식과 SAX 파서를 이용하는 방식의 성능테스트 결과의 일례를 나타내고 있다.
SAX 방식 DOM 방식
성능
요구 메모리 3배 8배
속도 1초 1.4초
안정성
스레드 안전 Yes Yes
메모리 누수 No No
OOM Yes Yes
스택 오버플로우 No Yes
표 1에서 '요구 메모리'는, SAX 방식과 DOM 방식이 자바 환경에서 입력 HTML 코드의 용량 대비 각각 3배와 8배의 메모리를 요구하는 예를 나타내고 있다. '속도'는, 6 메가바이트 용량의 HTML 코드를 처리하는데 걸리는 시간의 예를 나타내고 있다. 이때, DOM 방식에서는 코드에서 중첩된 태그의 깊이가 깊어지면, 재귀함수의 호출이 많아져서 속도가 심하게 느려질 수 있다.
또한, 표 1에서 '스레드 안전'은 파서들을 사용함에 있어 멀티 스레드(thread)환경에서 실행이 안전한가를, '메모리 누수'는 파서에 메모리 누수 버그가 존재하는지 여부를 각각 나타내고 있다.
또한, 표 1에서 'OOM'은 OOM 오류가 발생 가능한가를 나타내고 있다. 이때, DOM 파서와 SAX 파서는 모두 OOM 오류가 발생할 가능성이 존재한다. 그러나, DOM 파서를 이용하는 경우에는 1024 메가바이트 가용메모리 상황에서 9명의 사용자가 동시에 6 메가바이트 용량의 HTML 코드의 필터링을 요청하는 경우, OOM 오류가 발생 가능한 반면, SAX 파서를 이용하는 경우에는 동일한 가용메모리 상황에서 22명의 사용자가 동시에 6 메가바이트 용량의 HTML 코드의 필터링을 요청하는 경우에 OOM 오류가 발생 가능하다. 즉, DOM 파서를 이용하는 경우보다 SAX 파서를 이용하는 경우, OOM 오류가 발생할 가능성이 상대적으로 매우 감소함을 알 수 있다.
또한, 표 1에서 "스택 오버플로우"는 스택 오버플로우 오류가 발생하는지 여부를 나타내고 있다. 이미 설명한 바와 같이 DOM 파서를 이용하는 방식에서는 코드의 전체 태그를 파싱해서 태그트리를 제공한다. 이때, 태그의 깊이가 깊을 경우 많은 수의 재귀함수가 호출되어 스택 오버플로우 오류가 발생할 가능성이 존재하는 반면, SAX 파서를 이용하는 방식에서는 태그 하나하나를 순차적으로 파싱해서 각각 제공하기 때문에 근본적으로 스택 오버플로우 오류가 발생하지 않는다.
본 발명의 일시예들에 따른 파서들(DOM 파서 및 SAX 파서)은 EBNF(Extended Backus-Naur Form) 표기법(notation)을 기반으로 재정의된 파싱 규칙을 사용할 수도 있다. EBNF 표기법은 XML 1.0 스펙에 정의된 표기법으로, 파서가 비 정형화된 코드를 파싱할 수 있도록 파싱 규칙을 재정의하기 위해 이용될 수 있다. EBNF(Extended Backus-Naur Form) 표기법을 이용함으로써, 특정 브라우저에만 적용되는 코드(일례로, CSS 핵(Counter-Strike Source hack))와 같이 특수한 형태의 태그가 포함된 코드에 대해서도 파싱 규칙에 규칙을 추가하는 간단한 방식을 통해 쉽게 인식될 수 있다.
또한, 본 발명의 일실시예에 따른 필터링 시스템은 엘리먼트 리스너(element listener)나 어트리뷰트 리스너(attribute listener)를 제공할 수 있다. 일례로, 악의적인 XSS 코드를 변환/삭제하는 기능 이외에 특정 요소에 하위 요소를 추가하거나 또는 데이터를 변경할 수 있도록 이벤트 처리 인터페이스를 제공할 수 있다.
또한, 본 발명의 일실시예에 따른 필터링 시스템은 검출된 XSS 코드를 로그수집시스템으로 전송하는 기능을 제공할 수 있다. 예를 들어, 실제 서비스로 유입되는 사용자 입력 중 필터링 과정에서 검출되는 XSS 코드에 대한 로그를 전사로그수집시스템으로 전송하고, 전사로그수집시스템에서 XSS 필터 로그를 관리할 수 있다. 수집된 XSS 필터 로그는 향후 보안대책을 위해 활용될 수 있다. 이때, 검출된 XSS 코드를 전사로그수집시스템으로 전송하는 기능은 본 실시예에 따른 필터링 시스템을 이용하는 기존 서비스의 동의 하에 설정 기반으로 동작여부가 결정될 수 있다.
또한, 본 발명의 일실시예에 따르면, 도 2 내지 도 4를 통해 설명한 방법들은, 필터링 시스템(또는 적어도 하나의 프로세서와 적어도 하나의 메모리를 포함하는 컴퓨터 시스템)에 설치된 라이브러리에서 해당 방법들의 단계들을 수행하도록 상기 필터링 시스템(또는 상기 컴퓨터 시스템)을 제어함으로써, 수행될 수도 있다. 예를 들어, 상기 라이브러리는 상기 방법들의 단계들을 상기 필터링 시스템(또는 상기 컴퓨터 시스템)이 수행하도록 제어하는 모듈들을 포함할 수 있다. 이 경우, 상기 라이브러리는 상기 라이브러리의 설치를 위한 파일을 배포하는 파일 배포 시스템에 의해 상기 필터링 시스템(또는 상기 컴퓨터 시스템)으로 전송되어 설치될 수 있다.
도 5는 본 발명의 일실시예에 있어서, 컴퓨터 시스템 및 파일 제공 시스템을 도시한 블록도이고, 도 6은 본 발명의 일실시예에 있어서, 필터링 방법을 도시한 흐름도이다. 도 5는 컴퓨터 시스템(510), 라이브러리(520) 및 라이브러리 제공 시스템(530)을 도시하고 있다. 컴퓨터 시스템(510)은 적어도 하나의 프로세서(미도시)와 적어도 하나의 메모리(미도시)를 포함할 수 있으며, 라이브러리 제공 시스템(530)은 라이브러리의 설치를 위한 파일을 클라이언트 시스템으로 제공하는 파일 제공부(531)를 포함할 수 있다. 이 경우에는 컴퓨터 시스템(510)이 상기 클라이언트 시스템에 대응될 수 있다.
또한, 본 실시예에 따른 필터링 방법은 도 5에 도시된 컴퓨터 시스템(510)에 의해 수행될 수 있다. 일례로, 필터링 방법은 라이브러리 제공 시스템(530)이 제공하는 라이브러리(520)가 설치된 컴퓨터 시스템(510)의 적어도 하나의 프로세서에 의해, 라이브러리(520)의 제어에 따라 수행될 수 있다.
단계(610)에서 컴퓨터 시스템(510)은 현재 사용 가능한 메모리 용량을 확인할 수 있다. 일례로, 컴퓨터 시스템(510)은 컴퓨터 시스템(510)에 포함된 적어도 하나의 메모리에 대해, 현재 사용 가능한 메모리 용량을 확인할 수 있다.
단계(620)에서 컴퓨터 시스템(510)은 코드의 용량을 확인하여 제1 파서(parser)를 통해 파싱(parsing)을 진행하는 경우에 예상되는 메모리 사용량을 계산할 수 있다. 여기서, 제1 파서는 코드에 포함된 전체 태그에 대한 트리를 파싱 결과로서 생성하여 제공하는 파서를 포함할 수 있다. 일례로, 이미 설명한 DOM 파서가 제1 파서로서 이용될 수 있다.
단계(630)에서 컴퓨터 시스템(510)은 메모리 용량 및 메모리 사용량에 기초하여 제1 파서 및 제2 파서 중 하나의 파서를 선택할 수 있다. 여기서, 제2 파서는 코드에 포함된 태그들을 파싱 결과로서 순차적으로 제공하는 파서를 포함할 수 있다. 일례로, 이미 설명한 SAX 파서가 제2 파서로 이용될 수 있다.
하나의 파서를 선택하기 위한 예로, 컴퓨터 시스템(510)은 메모리 용량 및 메모리 사용량에 기초하여OOM(Out Of Memory) 오류가 발생하는지 여부를 판단하고, 판단 결과에 따라 하나의 파서를 결정할 수 있다. 이를 위해, 단계(630)는 메모리 용량 및 메모리 사용량을 비교하여 제1 파서(parser)를 이용한 파싱을 통해 OOM(Out Of Memory) 오류가 발생하는지 여부를 판단하는 단계(미도시) 및 OOM 오류가 발생하지 않는 경우에 제1 파서를 선택하고, OOM 오류가 발생하는 경우에 제2 파서를 선택하는 단계(미도시)를 포함할 수 있다.
하나의 파서를 선택하기 위한 다른 예로, 컴퓨터 시스템(510)은 단계(630)에서 메모리 용량이 메모리 사용량보다 기설정된 용량 이상 큰 경우, 제1 파서를 선택하고, 메모리 용량이 메모리 사용량보다 상기 기설정된 용량 이상 크지 않은 경우, 제2 파서를 선택할 수 있다.
단계(640)에서 컴퓨터 시스템(510)은 선택된 파서를 통해 코드의 파싱을 진행하여 파싱 결과를 생성할 수 있다. 이미 설명한 바와 같이, 제1 파서는 코드에 포함된 전체 태그에 대한 트리를 상기 파싱 결과로서 생성하여 제공할 수 있고, 제2 파서는 코드에 포함된 태그들을 상기 파싱 결과로서 순차적으로 제공할 수 있다.
이때, 제1 파서를 이용하여 파싱 결과가 생성되는 경우, 컴퓨터 시스템(510)은 스택 오버플로우 오류의 발생 여부를 판단하여 제1 파서를 제2 파서로 전환할 수 있고, 전환된 제2 파서를 통해 코드의 파싱을 재수행할 수 있다. 이를 위해, 단계(640)은 제1 파서가 하나의 파서로 선택된 경우, 제1 파서를 이용하여 코드의 파싱을 진행하면서, 스택 오버플로우 오류의 발생 여부를 모니터링하는 단계(미도시) 및 스택 오버플로우 오류의 발생이 감지되는 경우, 선택된 제1 파서를 제2 파서로 전환하여 제2 파서를 통해 코드의 파싱을 재수행하여 파싱 결과를 생성하는 단계(미도시)를 포함할 수 있다.
단계(650)에서 컴퓨터 시스템(510)은 생성된 파싱 결과를 이용하여 코드의 필터링을 수행할 수 있다. 예를 들어, 컴퓨터 시스템(510)은 파싱 결과와 화이트리스트 설정을 비교하여 파싱 결과에 포함된 코드(또는 태그)들 중 화이트리스트 설정을 통해 허용된 코드(또는 태그)들을 제외한 나머지 코드(또는 태그)들을 변경 또는 삭제하여 코드에 대한 필터링을 수행할 수 있다. 여기서, 화이트리스트 설정은, 화이트리스트 상위 설정 파일의 필터링 규칙이 화이트리스트 하위 설정 파일로 상속 또는 오버라이딩되도록 구현될 수 있다.
도 5 및 도 6에서 생략된 내용은 도 1 내지 도 4를 참조할 수 있다.
이와 같이, 본 발명의 실시예들에 따르면, 사용 가능한 메모리 용량과 필터링 대상 코드의 용량을 비교하여 DOM(document Object Model) 마크업 파서(markup parser)와 SAX(Simple API for XML) 마크업 파서 중 하나를 선택적으로 활용할 수 있다. 또한, DOM 마크업 파서를 이용한 파싱을 통해, 스택 오버플로우(stack overflow) 오류의 발생이 감지되는 경우, DOM 마크업 파서를 스택 오버플로우 오류가 원적적으로 발생하지 않는 SAX 마크업 파서로 자동 전환하여 파싱을 수행할 수 있다. 또한, 블랙리스트 필터링 방식이 아닌 화이트리스트 필터링 방식을 활용하여 일관된 XSS 보안 정책을 수립 및 적용할 수 있다.
이상에서 설명된 장치는 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPA(field programmable array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 실시예들이 비록 한정된 실시예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.
100: 필터링 시스템
110: 필터 객체
110: 필터 코어
120: 설정 빌더
130: 파서

Claims (17)

  1. 코드를 필터링하는 필터링 방법에 있어서,
    현재 사용 가능한 메모리 용량을 확인하는 단계;
    상기 코드의 용량을 확인하여 제1 파서(parser)를 통해 파싱(parsing)을 진행하는 경우에 예상되는 메모리 사용량을 계산하는 단계;
    상기 메모리 용량 및 상기 메모리 사용량에 기초하여 상기 제1 파서 및 제2 파서 중 하나의 파서를 선택하는 단계;
    상기 선택된 파서를 통해 상기 코드의 파싱을 진행하여 파싱 결과를 생성하는 단계; 및
    상기 생성된 파싱 결과를 이용하여 상기 코드의 필터링을 수행하는 단계
    를 포함하는 필터링 방법.
  2. 제1항에 있어서,
    상기 제1 파서는, 상기 코드에 포함된 전체 태그에 대한 트리를 상기 파싱 결과로서 생성하여 제공하는 파서를 포함하고,
    상기 제2 파서는 상기 코드에 포함된 태그들을 상기 파싱 결과로서 순차적으로 제공하는 파서를 포함하는 것을 특징으로 하는 필터링 방법.
  3. 제2항에 있어서,
    상기 하나의 파서를 선택하는 단계는,
    상기 메모리 용량 및 상기 메모리 사용량을 비교하여 상기 제1 파서(parser)를 이용한 파싱을 통해 OOM(Out Of Memory) 오류가 발생하는지 여부를 판단하는 단계; 및
    상기 OOM 오류가 발생하지 않는 경우에 상기 제1 파서를 선택하고, 상기 OOM 오류가 발생하는 경우에 상기 제2 파서를 선택하는 단계
    를 포함하는 것을 특징으로 하는 필터링 방법.
  4. 제2항에 있어서,
    상기 하나의 파서를 선택하는 단계는,
    상기 메모리 용량이 상기 메모리 사용량보다 기설정된 용량 이상 큰 경우, 상기 제1 파서를 선택하고, 상기 메모리 용량이 상기 메모리 사용량보다 상기 기설정된 용량 이상 크지 않은 경우, 상기 제2 파서를 선택하는 것을 특징으로 하는 필터링 방법.
  5. 제2항에 있어서,
    상기 파싱 결과를 생성하는 단계는,
    상기 제1 파서가 상기 하나의 파서로 선택된 경우, 상기 제1 파서를 이용하여 상기 코드의 파싱을 진행하면서, 스택 오버플로우(stack overflow) 오류의 발생 여부를 모니터링하는 단계; 및
    상기 스택 오버플로우 오류의 발생이 감지되는 경우, 상기 선택된 제1 파서를 상기 제2 파서로 전환하여 상기 제2 파서를 통해 상기 코드의 파싱을 재수행하여 상기 파싱 결과를 생성하는 단계
    를 포함하는 것을 특징으로 하는 필터링 방법.
  6. 제1항에 있어서,
    상기 코드의 필터링을 수행하는 단계는,
    상기 파싱 결과와 화이트리스트 설정을 비교하여 상기 파싱 결과에 포함된 코드(또는 태그)들 중 상기 화이트리스트 설정을 통해 허용된 코드(또는 태그)들을 제외한 나머지 코드(또는 태그)들을 변경 또는 삭제하여 상기 코드에 대한 필터링을 수행하는 것을 특징으로 하는 필터링 방법.
  7. 제6항에 있어서,
    상기 화이트리스트 설정은, 화이트리스트 상위 설정 파일의 필터링 규칙이 화이트리스트 하위 설정 파일로 상속 또는 오버라이딩되도록 구현되는 것을 특징으로 하는 필터링 방법.
  8. 제1항 내지 제7항 중 어느 한 항의 방법을 수행하는 프로그램을 기록한 컴퓨터 판독 가능 기록 매체.
  9. 코드를 필터링하는 필터링 시스템에 있어서,
    적어도 하나의 프로세서; 및
    적어도 하나의 메모리
    를 포함하고,
    상기 적어도 하나의 프로세서는,
    상기 적어도 하나의 메모리에 대해, 현재 사용 가능한 메모리 용량을 확인하고,
    상기 코드의 용량을 확인하여 제1 파서(parser)를 통해 파싱(parsing)을 진행하는 경우에 예상되는 메모리 사용량을 계산하고,
    상기 메모리 용량 및 상기 메모리 사용량에 기초하여 상기 제1 파서 및 제2 파서 중 하나의 파서를 선택하고,
    상기 선택된 파서를 통해 상기 코드의 파싱을 진행하여 파싱 결과를 생성하고,
    상기 생성된 파싱 결과를 이용하여 상기 코드의 필터링을 수행하는
    것을 특징으로 하는 필터링 시스템.
  10. 제9항에 있어서,
    상기 제1 파서는, 상기 코드에 포함된 전체 태그에 대한 트리를 상기 파싱 결과로서 생성하여 제공하는 파서를 포함하고,
    상기 제2 파서는 상기 코드에 포함된 태그들을 상기 파싱 결과로서 순차적으로 제공하는 파서를 포함하는 것을 특징으로 하는 필터링 시스템.
  11. 제10항에 있어서,
    상기 적어도 하나의 프로세서는, 상기 하나의 파서를 선택하기 위해,
    상기 메모리 용량 및 상기 메모리 사용량을 비교하여 상기 제1 파서(parser)를 이용한 파싱을 통해 OOM(Out Of Memory) 오류가 발생하는지 여부를 판단하고,
    상기 OOM 오류가 발생하지 않는 경우에 상기 제1 파서를 선택하고, 상기 OOM 오류가 발생하는 경우에 상기 제2 파서를 선택하는
    것을 특징으로 하는 필터링 시스템.
  12. 제10항에 있어서,
    상기 적어도 하나의 프로세서는, 상기 하나의 파서를 선택하기 위해,
    상기 메모리 용량이 상기 메모리 사용량보다 기설정된 용량 이상 큰 경우, 상기 제1 파서를 선택하고, 상기 메모리 용량이 상기 메모리 사용량보다 상기 기설정된 용량 이상 크지 않은 경우, 상기 제2 파서를 선택하는
    것을 특징으로 하는 필터링 시스템.
  13. 제10항에 있어서,
    상기 적어도 하나의 프로세서는, 상기 파싱 결과를 생성하기 위해,
    상기 제1 파서가 상기 하나의 파서로 선택된 경우, 상기 제1 파서를 이용하여 상기 코드의 파싱을 진행하면서, 스택 오버플로우(stack overflow) 오류의 발생 여부를 모니터링하고,
    상기 스택 오버플로우 오류의 발생이 감지되는 경우, 상기 선택된 제1 파서를 상기 제2 파서로 전환하여 상기 제2 파서를 통해 상기 코드의 파싱을 재수행하여 상기 파싱 결과를 생성하는
    것을 특징으로 하는 필터링 방법.
  14. 제9항에 있어서,
    상기 적어도 하나의 프로세서는, 상기 코드의 필터링을 수행하기 위해,
    상기 파싱 결과와 화이트리스트 설정을 비교하여 상기 파싱 결과에 포함된 코드(또는 태그)들 중 상기 화이트리스트 설정을 통해 허용된 코드(또는 태그)들을 제외한 나머지 코드(또는 태그)들을 변경 또는 삭제하여 상기 코드에 대한 필터링을 수행하는
    것을 특징으로 하는 필터링 방법.
  15. 제14항에 있어서,
    상기 화이트리스트 설정은, 화이트리스트 상위 설정 파일의 필터링 규칙이 화이트리스트 하위 설정 파일로 상속 또는 오버라이딩되도록 구현되는 것을 특징으로 하는 필터링 방법.
  16. 코드를 필터링하기 위한 라이브러리를 제공하는 라이브러리 제공 시스템에 있어서,
    상기 라이브러리의 설치를 위한 파일을 클라이언트 시스템으로 제공하는 파일 제공부
    를 포함하고,
    상기 라이브러리는,
    상기 적어도 하나의 메모리에 대해, 현재 사용 가능한 메모리 용량을 확인하도록 상기 클라이언트 시스템을 제어하는 모듈;
    상기 코드의 용량을 확인하여 제1 파서(parser)를 통해 파싱(parsing)을 진행하는 경우에 예상되는 메모리 사용량을 계산하도록 상기 클라이언트 시스템을 제어하는 모듈;
    상기 메모리 용량 및 상기 메모리 사용량에 기초하여 상기 제1 파서 및 제2 파서 중 하나의 파서를 선택하도록 상기 클라이언트 시스템을 제어하는 모듈;
    상기 선택된 파서를 통해 상기 코드의 파싱을 진행하여 파싱 결과를 생성하도록 상기 클라이언트 시스템을 제어하는 모듈; 및
    상기 생성된 파싱 결과를 이용하여 상기 코드의 필터링을 수행하도록 상기 클라이언트 시스템을 제어하는 모듈
    을 포함하는 것을 특징으로 하는 라이브러리 제공 시스템.
  17. 제16항에 있어서,
    상기 제1 파서는, 상기 코드에 포함된 전체 태그에 대한 트리를 상기 파싱 결과로서 생성하여 제공하는 파서를 포함하고,
    상기 제2 파서는 상기 코드에 포함된 태그들을 상기 파싱 결과로서 순차적으로 제공하는 파서를 포함하는 것을 특징으로 하는 라이브러리 제공 시스템.
KR1020130007863A 2013-01-24 2013-01-24 보안 및 성능 모두를 만족시키기 위한 필터링 방법 및 시스템 KR101539139B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020130007863A KR101539139B1 (ko) 2013-01-24 2013-01-24 보안 및 성능 모두를 만족시키기 위한 필터링 방법 및 시스템

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020130007863A KR101539139B1 (ko) 2013-01-24 2013-01-24 보안 및 성능 모두를 만족시키기 위한 필터링 방법 및 시스템

Publications (2)

Publication Number Publication Date
KR20140095217A true KR20140095217A (ko) 2014-08-01
KR101539139B1 KR101539139B1 (ko) 2015-07-23

Family

ID=51743711

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130007863A KR101539139B1 (ko) 2013-01-24 2013-01-24 보안 및 성능 모두를 만족시키기 위한 필터링 방법 및 시스템

Country Status (1)

Country Link
KR (1) KR101539139B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113360454A (zh) * 2021-06-30 2021-09-07 广州虎牙科技有限公司 一种内存快照文件的压缩、解压缩方法及相关装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101083311B1 (ko) * 2010-03-29 2011-11-15 한국전자통신연구원 악성 스크립트 분석 시스템 및 그를 이용한 악성 스크립트 분석 방법

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113360454A (zh) * 2021-06-30 2021-09-07 广州虎牙科技有限公司 一种内存快照文件的压缩、解压缩方法及相关装置
CN113360454B (zh) * 2021-06-30 2024-03-01 广州虎牙科技有限公司 一种内存快照文件的压缩、解压缩方法及相关装置

Also Published As

Publication number Publication date
KR101539139B1 (ko) 2015-07-23

Similar Documents

Publication Publication Date Title
US9027075B2 (en) Enforcing security rules at runtime
WO2016164036A1 (en) Modifying web page code to include code to protect output
US9940464B2 (en) Static security analysis using a hybrid representation of string values
Patil et al. Towards fine-grained access control in javascript contexts
US8904492B2 (en) Method of controlling information processing system, computer-readable recording medium storing program for controlling apparatus
KR20220116341A (ko) 권한 제어 방법 및 장치, 컴퓨터 디바이스 및 저장 매체
CN113138836B (zh) 一种使用基于Docker容器的防逃逸系统的防逃逸方法
KR102015108B1 (ko) 이종 서비스 간 서비스 제공 방법과 사용자 단말 및 웹 서버
CN111191226A (zh) 利用提权漏洞的程序的确定方法、装置、设备及存储介质
CN104468546A (zh) 一种网络信息处理方法及防火墙装置、系统
CN114065196A (zh) Java内存马检测方法、装置、电子设备与存储介质
EP3161613A2 (en) System and method of generating a secured communication layer
KR101539139B1 (ko) 보안 및 성능 모두를 만족시키기 위한 필터링 방법 및 시스템
CN113779578A (zh) 移动端应用的智能混淆方法和系统
KR20140068940A (ko) 애플리케이션용 콘텐츠 핸들링 기법
CN104239514A (zh) 网页渲染方法、装置及移动终端
KR101800280B1 (ko) 보안 페이지 실행 방법 및 이를 수행하는 단말
JP5665984B2 (ja) クライアント装置、ウェブデータの権限管理方法をコンピュータで行わせるための記録媒体、及び権限管理情報提供装置とその方法
CN115544509A (zh) 进程安全检测方法、装置、电子设备及存储介质
Mao et al. Automatic permission inference for hybrid mobile apps
KR101348590B1 (ko) 네트워크 인라인 필터링을 이용한 웹쉘 차단 방법
CN114465766B (zh) 基于ssh的远程访问方法、装置、电子设备和存储介质
CN117131515B (zh) 一种应用请求执行方法、装置、计算机设备和存储介质
US20230362198A1 (en) Dynamic security policy enforcement method for container system, recording medium and system for performing the same
CN112995803B (zh) 认证信息的修改方法、光网络单元及无源光网络系统

Legal Events

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

Payment date: 20190701

Year of fee payment: 5