Recommanded Free YOUTUBE Lecture: <% selectedImage[1] %>

사용된 기술

  • JavaScript
  • XML(:12)
  • HTTP(:12)
  • HTML(:12)
특별한 기술이 없음을 알 수 있다. 이전에도 널리 사용되던 기술들이다.

Ajax의 의의

기존의 HTTP(:12)에서 사용하던 GET/POST 방식의 데이터 교환에서 문제가 되는 점은 데이터페이지 (UI)가 동기화 되어야 한다는 점이다. 일반적은 데스크탑 응용 프로그램들은 처리해야할 데이터UI가 비동기적으로 움직이는 것과는 다른 개념이다. 해서 웹응용의 경우 처리해야할 데이터와 UI를 모두 함께 보내게 된다.

이렇게 데이터와 UI가 동기화 됨으로써 발생하는 문제는 다음과 같은 것들이 있다.
  1. 불편한 UI : 데이터와 페이지를 다시 화면에 표시한다. 이때 걸리는 시간은 0.1초에서 수초에 이르며, UI의 연속성을 해친다.
  2. 속도 : 페이지 전체를 새로 받아온다. 여기에는 HTML, JavaScript, CSS 등등의 요소들이 포함된다. 만약 세션이 만들어져 있는 상태라면, 서버측은 별도의 파일작업을 하게 된다. 여기에는 상당히 많은 시간이 소비될 수 있다. 특히 동시접속인원이 많은 서버라면 시간지연이 누적되게 될것이다.
이러한 문제를 해결하기 위해서, iframe 등을 사용할수는 있겠지만 공통적으로 사용가능한 일반적인 방식은 아니다. Ajax는 공통적으로 사용가능한 일반적인 방식을 제공했다는데 의의를 둘 수 있을 것이다.

Ajax vs ActiveX vs 플레쉬

여기에서 ActiveX 는 웹에서 사용되는 ActiveX로 한정한다.

이들은 고유의 장점과 단점을 가지고 있다. 그러므로 어느 하나가 나머지를 완전히 대체하는 일은 발생하지 않을 것이다.

Ajax는 기존의 웹자원을 그대로 사용할 수 있다는 장점을 가진다. 완전히 개방된 환경을 지원한다. 그러나 반대로 기존의 웹자원이 지니고 있는 단점역시 가지고 있다. 비교적 느리게 작동하며, 표현에 있어서도 한계를 지닌다. HTML과 CSS를 이용해서 쓸만한 UI를 만들어내는건 상당한 도전과제다.

위의 모든 기술이 자기가 잘 할 수 있는 분야에서 사용될 것이다. 최근에는 2개 이상의 기술이 함께 사용되는 경우도 심심찮게 볼 수 있다.

보안

보안은 여러 단계에 걸쳐서 이루어진다. 그러므로 특정 단계에 있는 응용 프로그램(혹은 서비스)는 하위 단계들이 가지고 있는 보안적 결함까지 상속받게 된다. 예로 웹서비스는 운영체제(:12)결함, TCP(:12)결함, HTTP(:12)결함을 가지게 된다.

attachment:sec.png

Ajax, ActiveX, 플레쉬는 모두 OS, 네트워크, HTTP와 관련된 공통된 결함을 가진다. 그러므로 이들 겸한은 제외하고 각자의 고유의 결함을 가지는지에 대해서 알아봐야 할 것이다.

이들 기술들이 이슈화되면서, 보안관련되어서 서로의 기술을 비교하는 기사가 실리는걸 자주 볼 수 있다. 그런데 많은 기사들이 이러한 하위 계층에서 발생하는 공통의 보안문제와 해당기술이 가지는 보안문제를 혼동해서 비교하는 오류를 범하고 있다.

http://www.zdnet.co.kr/news/internet/etc/0,39031281,39149821,00.htm 의 기사다. 여기에서는 공격의 한예로 크로스 사이트 스크립팅, 일명 XSS라는 공격을 예로 들고 있다. 이 공격이 이루어지려면 다음의 결정적인 조건을 만족해야 한다.
  • 취약하다고 판단되는 사이트에 JavaScript, VBScript, ActiveX, HTML, Flash를 투입한다. 혹은 소스코드를 변경한다.
어떻게 해서든지 시스템자원에 대한 권한을 획득해야 한다는 점이다. 한마디로 시스템/네트워크상에서 이미 치명적인 공격을 당한 시스템이란 얘기다. 이러한 상태에서는 XSS공격을 하든 아니면 다른 공격을 하던 이건 부차적인 문제다.

또한 위에서 보면 알 수 있겠지만 XSS라는 것은 시스템과 네트워크 HTTP 프로토콜의 취약점을 공격하는 일반적인 공격방식이지 자바스크립트만의 취약성으로 생기는 공격기법이 아니다.

내가 생각하는 보안 강도는 JavaScript == 플레쉬 > ActiveX 다.

본질적으로 트로이목마와 구분될 수 없으며, 시스템 자원에 직접접근 가능하다는 점 때문에 ActiveX의 보안수준을 제일 낮게 잡았다.

브라우저에 의해서 실행되는 JavaScript는 브라우저 안에서 능력이 제한되지만, ActiveX는 시스템에 직접접근할 수 있기 때문에 발생되는 피해역시 커질 수 밖에 없기 때문이다. 윈도우 비스타에서 ActiveX 기술에 제한을 거는 것도 이러한 이유 때문이다.

Ajax에서의 비동기의 의미

네트워크 프로그래밍에서 속도의 개선등을 목표로 사용되는 비동기통신의 의미가 아니다. 여기에서의 비동기란 일반 데스크탑 응용처럼 UI와 데이터 통신이 비동기적으로 발생된다라는 의미로 해석해야 할 것이다.

이는 웹응용이 좀더 인간친화적인 UI를 가질 수 있도록 도와준다. 사소한 것이라고 생각할 수도 있지만, 매우 중요한 문제다.

참고문헌

  • http://www.ibm.com/developerworks/kr/library/s-csscript