이글을 쓰고 보니 나는 요새 참으로 유감이 많은 모양이다.... 델 2007에 이어 액티부 엑수에 까정...
일전에 액티부 엑수에 대한 상당히 방대한 토론의 글이 있었다. 간혹 윈도우 진영 개발자들과 이야기하다 보면 액티부 엑수나 COM을 무슨 만병통치약 혹은 전지전능한 개발 개념으로 보는 사람들이 많다. 심지어 COM을 개발기법 중에서 단군신화적인 존재로 보듯 하는 사람도 있다.
이 개발이라는 바닥에 오래 있다보면 대 벤더들의 허무맹랑한 말장난에 무지 어이가 없는 경우가 많다. 희안한 약어를 들이대면서 대빵 엄청난 개념이 담겨져 있는 것처럼 선전하지만, 실제 그 정체를 알고보면 가소롭기 그지 없는 개념들이 무지 많다는 것이다. COM, DCOM, OLE, Active X 이 모든 개념들이 사실 알고보면 그나물에 그밥같은 개념들이다. 그런데 이런 약어들의 들이댐 앞에서 상당수의 개발자들은 쉽게 속아넘어가거나 먼가 대단한 것이 있을 거라고 믿는 것 같다.
액티부 엑수(Active X)! 그 이름에서 조차 뭔가 대단히 애매모호하지 않는가? 헐리우드의 허접한 삼류 영화들 제목 중에 영문 X(엑수)가 매우 잘 등장하지 않던가? 왜 이런 이름을 지었는지 알수 없지만, "활동적인 엑수" 정말 기막힌 이름이다. 정체가 먼지 대단히 아리송하게 이름을 지은 것 같다. 그러나, 그 실체는 알고보면 정말로 어이가 없다.
액티부엑스의 기본개념은 COM에서 발전한 것이다. COM의 허접한 정체는 다음 기회에 밝히기로 하고, 오늘은 액티부 엑스의 정체를 알아보자. 액티부 엑수는 두가지 용도가 있다. 하나는 델파이의 콤포넌트 비슷하게 비주얼 베이직에서 사용하는 외부 콘트롤같은 용도이다. 이 경우 액티부 엑수는 타 개발툴에서 불러 쓸 수 있는 미약한 기능의 클래스 같은 기능이다. 또 다른 기능은 웹부라우저, 그것도 오로지 IE 진영에서만 사용할 수 있는 액티부 엑수의 용도이다.
IE에서의 액티부 엑수의 기능이란, 요약하면 다음과 같은 기능이다.
"HTML에 약속한 표현식으로 링크를 삽입하면, 그 링크에 지정된 실행 파일을 웹서버로 부터 다운받아서 사용자 피시에 설치하고 실행하도록 하는 기능"
이말을 달리 말하면 웹에서의 액티부 엑수란 실행파일을 서버로부터 다운 받아서 클라이언트(사용자) 컴에서 바로 실행토록 하는 것이다. 예전 IE는 서버로부터 실행파일을 다운받고 설치하는 과정에서 사용자도 모르게 지 맘대로 자동으로 처리하는 기능이 있었다. "사용자 모르게 실행파일을 설치하고 실행한다!" 그렇다. 이 기능은 엄밀히 말하면 바이러스 프로그램과 거의 비슷한 매우 위험한 기능이다. 이 때문에 액티부 엑수는 보안의 기본 ABC마저 위반한다고 그렇게 많은 지탄을 받아왔던 것이다. 액티부 엑수는 보안에 대한 개념이 과거 아주 희박했던 엠에수의 결정적 실수였다.
이후 엠에수는 부랴부랴 엑티부 엑수에 대한 편법적 대책으로 두가지 정책을 내 놓은다. 첫번째는 베리사인 같은 특정 회사로 부터 내가 만든 액티부 엑수 실행파일 내에 아무런 위험한 혹은 악의적 기능이 없음을 증명받는 인증서를 사도록 하는 것, 즉 액티부 액수 인증제이다. 두번째는 IE에서 액티부 엑수를 설치하기 전에 사용자의 반드시 동의를 득하도록 하는 것이다.
베리사인같은 곳으로부터의 인증제는 효과가 있을까? 이게 참 웃기는 것이 돈이면 머든 다 되는 요즘같은 세상에 베리사인이 모든 액티부엑수에 대해서 어셈블리 레벨의 철저한 점검을 다 해줄것이라고 믿는다면 너무 어리석은 것이다. 사용자 동의 또한 여전히 문제가 많다. 컴이 많이 보급됬다고는 하지만, 아직도 무지한 사람이 많기 때문에, 이거 깔아야 되요라고 하면 그냥 쉽게 오케이 버튼을 클릭하는 사람들이 무지 많다는 것이다.
그런데, 이 독약같은 액티부 엑수는 보안을 위배할 수 있다는 것, 즉 사용자 피시에 실행파일을 자동 설치 실행할 수 있다는 기능 때문에 무지 남발되어 왔다. 사실 웹 개발자에게 이보다 더 막강한 기능이 어디 있겠는가? 웹서버 쪽에서 자바로 혹은 닷넷으로 혹은 귀신 씨나락으로 만들었던 간에, 근본적으로 웹이란, 웹부라우저의 자바스크립트와 HTML의 짬봉 파싱 능력에 의존하게 되어 있다. 이 자바스크립트와 HTML의 조합만으로는, 아무리 해도 실행파일보다는 할 수 있는 기능들이 무지 적다. 실행파일은 원하면 사용자 컴을 포맷할수 도 있지만, 자바스크립트와 HTML만으로는 불가능하다.
즉 액티부 엑수는 개발자가 맘만 먹는다면 얼마든지 악용할 수 있다는 것이다. 과거 액티부 엑수의 이런 보안 결함적 단점을 극복하기 위한 대안으로 자바 애플릿이 등장한 때가 있었다. 당시 선은 액티부 엑수의 보안결함을 자바 애플릿을 사용하면 극복할 수 있다고 무지 광고를 해댔었다. 그러나....
자바 애플릿의 단점은 보안을 너무 신경 쓴 나머지, 상당히 많은 기능에 대해 심한 제한을 걸었던 것에 있었다. 자바 애플릿으로 사용자 컴에 파일을 읽거나 쓰거나 하려면 대부분 거부되고, 상당히 미션 크리티컬한 기능들 역시 보안 이유로 금지된다. 즉 자바 애플릿의 문제는, 보안 때문에 차포를 떼고보니 할만한 기능이 없더라 였다. 그래서 자바 애플릿은 시들시들 사라져갔다. 이 때문에 현재 국내외를 막론하고 자바 애플릿을 사용하는 사이트는 매우 적은 편이다. 최근 내가 자주 들아가는 사이트들에서는 자바 애플릿을 거의 잘 본적이 없을 정도이다.
비수타에서는 액티부 엑수의 이런 보안적 결함을 막기 위해, 사용자 컴에 위해를 가할 수 있는, 액티부 엑수같은 외부 실행 파일의 특정 윈 API 콜을 차단하는 기능이 있다고 한다. 그런데, 위험성이 높은 윈 API 호출은 감지할지 몰라도, 어셈블러 레벨로 접근하는 매우 위험한 코드들을 비수타가 모조리 다 차단할 수 있을지는 무지 의아스럽다.
설령 비수타가 어셈블러 레벨의 모든 위험한 코드까지 싸그리 차단해 준다고 치자. 그러면 비수타에서 액티부 엑수는 자바 애플릿의 꼴을 당하게 된다. 즉 보안 때문에 이런 저런 기능을 막고 나니, 액티부 엑수가 예전에 비해서 아주 별볼일 없게 되는 것이다.
액티부 엑수의 편리함은 오래전에 웹 관련 개발을 할때 나역시 이미 잘 알고 있었다. 특히 델파이는 액티부 엑수 만들기에 VC++보다 월등히 편한 존재인데도 불구하고, 나는 액티부 엑수를 사용하지 않았다. 액티부 엑수로 해결하면 무지 편한 경우가 무지 많음은 부인할 수 없는 사실이다. 사용자 컴에 깔려 바로 실행되는 실행파일인데 대체 못하는 기능이 뭣이 있단 말인가? 액티부 엑수로 내가 못하는 기능이 있다면 나의 코딩 실력이 부족하여 그 방법을 어떻게 구현할지 모를때 뿐일 것이다.
그러나, 그 당시에 나는 액티부 엑수를 사용해서는 안된다고 믿었기에 사용하지 않았을 뿐이다. 그런데, 우리 나라 웹개발자들이 액티부 엑수를 너무 남발하여 사용한다는 것을 알게 된 것은, 내가 웹쪽 개발을 그만둔지 한참 지나서였다. 아마도 당시에도 생각 깊은 웹 개발자들은 액티부 엑수 사용을 매우 꺼려했을 것이다.
그러나, 사악하더라도 쉽고 편한 방법에 한번 맛들이면, 그것을 버리기가 무지 힘들듯이, 우리나라의 액티부 엑수 문제는, 세계의 다른 개발자들 대부분이 사용을 금기했던 사악한 기법을 너무 애용했다는 것이 가장 큰 원인일 것이다.
|