AJAX
태그 :
- 개념
- Ajax(Asynchronous JavaScript and XML)의 개념 1) Active-x나 플래시 등이 플러그인 없이도 Interactive한 웹 페이지를 작성할 수 있는 기술로 XMLHttpRequest 와 JavaScript를 이용한 비동기 데이터 교환 방식 2) 대화형 웹 애플리케이션의 제작을 웹 개발 기법
I. Web2.0 사상을 따르는 개방기술 Ajax의 개요
가. Ajax(Asynchronous JavaScript and XML)의 개념
1) Active-x나 플래시 등이 플러그인 없이도 Interactive한 웹 페이지를 작성할 수 있는 기술로 XMLHttpRequest 와 JavaScript를 이용한 비동기 데이터 교환 방식
2) 대화형 웹 애플리케이션의 제작을 웹 개발 기법
나. Ajax의 등장 배경
1) 2005년 2월 Jesse James Garrett에 의하여 처음 사용됨
2) 기존에 있는 기술을 이용하여 웹에 비동기라는 개념을 접목
3) 구글맵에 의해 이슈화되기 시작함
다. Ajax의 특징
특징 |
설 명 |
개방성 |
모든 웹 브라우저에서 동작 |
효율성 |
Reload가 필요 없는 웹페이지 작성(비동기식 처리) |
기술결합 |
기존기술의 조합을 활용 XML + JavaScript, XML 및 XSLT를 통한 데이터 교환 및 이용 Ajax 애플리케이션은 XML/XSLT 대신 미리 정의된 HTML이나 일반 텍스트, JSON, JSON-RPC를 이용할 수 있다. |
속도향상 |
DOM을 사용하여 다이나믹한 표현 제공 웹 브라우저나 웹서버간의 교환되는 데이터의 감소로 응답성이 좋아지고 웹서버의 처리량도 감소함 |
II. Ajax의 구성도 및 요소기술
가. Ajax의 구성도
그림 1
나. Ajax의 요소 기술
핵심기술 |
내 용 |
---|---|
XHTML |
기존의 HTML명령어 형태를 유지하면서 XML포맷에 맞도록 필요한 요소를 추가 정보 표현 |
CSS |
HTML내 글자크기, 글자체, 줄 간격 등을 효과적으로 적용하기 위하여 기술해 놓은 스타일 시트 정보 표현 |
DOM |
XML문서를 트리 구조로 접근할 수 있게 해주는 API 동적인 화면 출력 및 표시정보와의 상호 작용 |
JavaScript |
웹브라우저의 Client상에서 동작하는 Client 프로그램 동적인 화면 출력 및 표시정보와의 상호 작용 |
XML |
웹 상에서 구조화 된 문서의 표현 및 전송이 가능하도록 W3C에서 표준화한 ,markup 언어 웹 서버와 비동기적으로 데이터를 교환하고 조작 |
XSLT |
XML문서를 다른 XML문서로 변환하기 위한 스타일 언어 웹 서버와 비동기적으로 데이터를 교환하고 조작 |
XMLHttpRequest |
Ajax 개체를 생성하는 함수 서버와 통신하기 위한 JavaScript 로서 브라우저 별로 XMLHttpRequest객체의 종류가 상이 웹 서버와 비동기적으로 데이터를 교환하고 조작 |
다. Ajax 장점과 단점
장 점 |
단 점 |
페이지이동 없이 고속으로 화면을 전환 서버처리를 기다리지 않고 비동기 요청가능 PHP 및 Perl 등의 서버 측 처리를 각 PC에 분산 가능 수신하는 데이터 양을 줄일 수 있음 실시간 인터랙티브 성능이 올라감 기본 웹 기술을 그대로 사용 유료 소프트웨어가 없어도 개발이 가능함 플러그인의 가동시간 없이 다양한 OS, Web 브라우저에서 정상 동작 |
Cross Browser화의 노하우 필요(JavaScript에 의존) AJAX 사용 못하는 브라우저에 대한 대책 필요 JavaScript Open 소스로 차별화 어려움 HTTP Client 기능 한정 보안주의 필요(신중한 경계 필요) 현재의 처리상황 정보 필요 요청을 남발하면 서버 부하가 늘어남 |
1) Ajax사용시 일부 비즈니스 로직이 client상에 존재하여 업무 Data 및 악의적인 사용자의 공격에 노출 될 수 있음
2) 비동기방식 처리시 Ajax가 로컬정보를 캐시하고 있다가 필요 시 서버에 전달할 때 평문으로 전달하기 때문에 정보가 쉽게 노출 될 수 있음
3) 사용자가 요청한 것과 Ajax가 요청한 것과의 차이가 없기 때문에 부인방지 효과가 없음
4) XSS(Cross Site Scripting)가 Ajax를 이용한 공격에 노출 될 수 있음
5) Ajax Bridging을 이용하여 보안 우회 가능성이 있음
III. AJAX의 보안 취약점 및 해결과제
가. AJax 보안에 대한 취약점
\
- XMLHTTPRequest가 Get, Post방식으로 요청하고 XML 및 문자열 형태로 응답받기 때문에 정보노출 가능
공격기법 |
주요 내용 |
XSS |
- APP 계층 공격기법, JavaScript를 통해 가능한 공격 - Web page를 불러오는 과정에서 악의적 코드 삽입, 한번 신뢰 사이트는 지속적 신뢰함으로 방화벽 우회 |
JavaScript 소스 노출 |
- JavaScript는 HTML에 포함되어 소스보기가 가능 - 공격자가 클라이언트 소스를 수정 하거나 유사한 동작으로 Ajax APP를 개발하여 악용 |
Client Side 보안 |
- Ajax는 서버로부터 데이터만 받아오고 데이터 처리는 클라이언트가 수행하므로, 클라이언트에 대한 보안 필요 |
Web Platform 취약성 |
- Ajax가 Web Platform을 기반으로 하기 때문에 Web Platform상의 보안 취약성 문제가 존재 |
- 자바 스크립트로 작성된 AJAX Engine의 보안 위협
- 일부 로직이 클라이언트에 놓이게 되어 노출 우려
- AJAX 엔진이 서버에 요청 시 plain text로 요청하기 때문에 정 노출
- 사용자 요청과 AJAX 엔진 요청의 차이가 없어 Repudiation(부인방지) 효과가 없음
- XSS (Cross-Site Scripting) 공격에 노출 가능
나. AJAX 보안 대응 방안
대응기법 |
주요내용 |
JavaScript 특수문자 처리 |
XSS는 JavaScript에 악성 스크립트를 삽입하고 실행 할 때 실행 시에 필요한 “<”, “>” 등과 같은 문자열을 다른 문자로 교체 |
Token사용 |
UUID(Universally Unique Identifier)와 같은 토큰을 사용하여 유효한 사용자 요청에만 응답, 세션키를 저장하여 활용 |
문자열 암호화 |
문자열 자체를 암호화 하여 데이터 전송 수행 |
IV. Ajax의 적용 사례 및 발전 전망
가. Ajax의 적용 사례
사 례 |
설 명 |
Google map |
Ajax로만 구현 완벽한 멀티 플랫폼 서비스 위성사진 제공, API 공개로 각종 변종 서비스 제공 MSN Virtual Earth, A9 Maps등 경쟁서비스 봇물 |
Daum |
주소정렬, 검색, 편집 시 DOM Handling고 Ajax 사용 주소를 두 번 클릭하면 간단하게 정보를 수정할 수 있음 메일 검색 시에 순차적으로 검색결과를 가져옴 |
Flicker |
가장 중요한 사진 미리 보기 기능에서 플래시를 완전히 걷어내고 Ajax로 전환 다음 플랫닛에도 유사서비스 제공 |
나. Ajax의 향후 전망
관점 |
설 명 |
기술적 측면 |
Web 2.0의 핵심기술 선점 효과 –Ajax 기반의 웹플랫폼 기술로 시장 선점, Web 2.0 소프트웨어 개발 도구의 확보 – 생산성과 품질 향상을 위한 도구 제공 브라우저 종속 및 ActiveX 탈피 – 표준화 및 Web의 플랫폼화 제공 |
시장성 측면 |
Web 2.0 서비스 개발 시장의 참여 – 서비스 수익 모델의 창출에 기여 Web S/W 개발도구의 시장의 확보 – WYSIWYG 기능을 제공하는 도구의 활용 Web 컴포넌트 S/W 개발 시장의 개척 – 재사용가능한 Plug-in 형태의 도구 지원 기업용 애플리케이션 개발 시장의 확보- X-Internet를 대체하는 표준기술로 제공 |
산업적 측면 |
S/W 산업의 발전과 웹 서비스 시장의 확대-SaaS의 실제적인 구현 모델로 활용 S/W 생산성 향상 및 유지보수 비용 감소-WYSIWYG 및 Plug-in 형태의 도구 지원 S/W 사업 모델의 변화 – Web 기반의 SasS 모델의 제시 가능 |
- Web을 더욱 다이나믹하게 하면서 풍부한 UI를 구현
- Ajax기술이 표준화를 통하여 Web의 기본 기술로 정착
- XUL(eXtensible User Language)등과 함께 강력한 RIA제작이 가능
- Ajax는 Web2.0을 위한 RIA기술의 핵심