IE 액티브 X 컨트롤 실행 문제 패치 내용은 아래와 같습니다.



지난 1월 MS는 이올라스 테크놀로지(Eolas Technologies)와의 특허 침해 소송과 관련, 인터넷 익스플로러(이하 IE)를 부분 수정해 설계를 변경한다는 사실을 국내에 공표했다.

이올라스는 인터넷 익스플로러를 포함한 웹 브라우저에서 동작하는 액티브 X 컨트롤 실행 방식이 자신들이 보유한 특허를 침해했다고 주장하면서 MS를 제소했고, 작년 8월 법원이 이올라스의 손을 들어주면서 약 5억 달러를 배상하라고 판결했다. 이에 따라 MS는 항소를 제기하는 한편, 이올라스가 주장하는 특허권 침해를 우회하기 위해 IE 설계를 변경하기로 결정한 것이다.

웹 페이지 내에서 임베딩된 개체 표시 문제
이올라스가 가지고 있는 특허는 웹 페이지 내에서 임베딩된 개체를 표시하고 상호작용하기 위해 외부 응용 프로그램을 자동으로 호출하는 방법에 관한 것이다. 쉽게 말하자면 웹 페이지에서 'object', 'applet', 'embed' 태그를 사용해 임베딩된 개체를 보여주는 것이 문제가 된다.

이 문제가 심각한 이유 중 하나는 'object'나 'applet' 태그의 경우, IE에만 국한된 것이 아니라 W3C DOM 1.0에 정의된 표준이라는 것이다. 또한 이 특허를 인정하게 되면 웹 페이지에서 임베딩된 태그를 외부 응용 프로그램과 연결하는 것, 즉 바이너리 코드를 확장하는 것이 불가능해짐에 따라 앞으로 웹 관련 기술들의 발전에 지장을 줄 수 있게 된다. 따라서 이 문제는 단순히 IE뿐만 아니라 모질라, 파이어폭스와 같은 다른 브라우저 역시 영향을 받는 것이다. 이올라스가 최종적으로 승소할 경우, MS뿐만 아니라 다른 회사들에게 차례로 소송을 제기할 가능성이 높다.

이러한 이유로 웹의 창시자이자 웹 표준화 기구인 W3C의 의장을 맡고 있는 팀 버너스 리(Timothy John Berners-Lee) 원래 친 MS 주의자가 아니었음에도 불구하고 미 특허청에 서한을 보내 웹의 발전을 저해할지 모르는 이 특허의 심각한 문제점을 제기하고, MS에 소송을 제기한 이올라스를 비판하고 있다. W3C 역시 이 특허가 기존에 수립된 웹 표준에 심각한 영향을 주며, 파급 효과가 광범위하기 때문에 이 특허를 무효화해야 한다는 의견을 내고 있다.

IE 설계 변경에 따른 영향
IE 설계 변경에 따라서 달라지는 것은 무엇일까? 웹 페이지 내에서 'object', 'applet', 'embed' 태그에 의해 로드된 액티브 X, 자바 애플릿, 멀티미디어 파일의 경우, 사용자가 이를 클릭해서 명시적으로 활성화(Activation)시키기 전까지는 임베딩된 개체에 사용자가 직접 상호작용(Interaction)하는 것이 불가능하며, 상호작용과 관련된 DHTML 이벤트도 사용이 불가능하다는 것이다.

이번 패치의 영향을 받는 대상은 웹 페이지 내에 'bject','applet', 'embed' 태그를 사용해서 지정되고, 눈에 보이는 UI를 가지며, 사용자가 마우스나 키보드 입력을 통해 이벤트를 처리하는 상호작용 컨트롤에만 해당된다.

상호작용 컨트롤의 예는 미디어 플레이어, 애플의 퀵타임 플레이어, 매크로미디어의 플래시 등이 있다. UI를 가지지 않는 비상호작용 컨트롤이나 외부 스크립트를 통해 로딩된 상호작용 컨트롤에는 아무런 영향이 없다.

인터넷 뱅킹 시스템의 경우, UI가 없는 키 로깅 방지 컨트롤은 영향이 없으며, 공인 인증서도 UI가 웹 페이지 내에 임베딩된 것이 아니라 별도의 다이얼로그 창으로 나오기 때문에 영향을 받지 않는다.

아래 그림은 웹 페이지에 'object' 태그나 'embed' 태그를 사용해서 미디어 플레이어 액티브 X를 구동해 동영상 콘텐츠를 재생하고 있는 모습이다. 활성화되지 않은 상호작용 컨트롤은 마우스나 키보드 이벤트 등의 사용자 입력에 반응하지 않는다. 마우스 커서를 올려놓았을 때 컨트롤 주위에 점선 테두리가 나타나며, 그림과 같은 풍선 도움말이 나타난다.




컨트롤을 활성화하려면 마우스로 해당 컨트롤을 클릭하거나 탭 키로 포커스를 이동한 후 스페이스 바나 엔터 키를 누르면 된다. F5 키를 눌러서 페이지를 갱신했을 경우 컨트롤이 다시 비활성화되며, 페이지 내에 컨트롤이 여러 개 있는 경우에는 각각을 활성화해야 한다는 것에 주의해야 한다.

혼동해서는 안 될 것은 상호작용이 불가능하다는 것이지, 임베딩한 개체가 아예 로드되지도 않고 작동하지도 않는다는 것은 아니다. 즉, 위의 예에서 동영상 콘텐츠 자체가 아예 재생되지 않는 것은 아니다. 다만, 동영상을 멈추기 위해서 정지 버튼을 누르려면(즉 상호작용을 하려면) 컨트롤을 클릭해서 활성화시켜야 한다는 것이다.

국내 웹사이트의 파급 효과
위에서 예로 든 멀티미디어 콘텐츠(동영상, 음악) 외에 국내 사이트에서 이 패치에 대해 영향을 받는 것은 어떤 것이 있을지 몇 가지 예를 들어보자.

요즘 몇몇 사이트들에서는 사진이나 그림을 업로드하기 전에 이미지를 편집할 수 있도록, 이미지 툴 액티브 X를 제공하는 곳이 있다. 이러한 이미지 툴 컨트롤을 사용하려면, 컨트롤을 한 번 클릭해서 활성화시켜야 한다. 또한 업무용 시스템을 보면 차트, 그리드와 같은 요소를 서드파티 액티브 X 컨트롤로 사용하는 경우가 많다. 이 경우 상호작용을 하려면 화면 내의 컨트롤을 각각 활성화시켜야 한다.

액티브 X 컨트롤도 문제지만, 필자가 생각하기에 국내에서 가장 광범위하게 영향을 받을 것이라고 생각되는 것은 바로 플래시다. 국내 사이트들은 메뉴 등의 네비게이션 UI, 광고, 플래시 게임, 플래시 축하카드 등 플래시에 대한 의존도가 매우 높다. 거의 모든 UI를 플래시로 도배한 모 사이트의 경우, 화면의 대다수가 비활성화되는 현상이 발생했다(하다못해 필자 회사 홈페이지도 메뉴가 플래시로 돼 있다).

마우스를 올렸을 때 팝업 형태로 메뉴를 보여주는데, 비활성화된 상태에서는 메뉴가 전혀 나타나지 않는다. 사실 활성화를 위해 클릭 한 번 하는 것이 별로 힘든 일은 아니지만, 잘 모르는 사용자의 경우에는 상당히 당황스러울 수 있다는 생각이 든다.

이러한 사용자들의 혼란을 방지하려면 'object', 'applet', 'embed' 태그를 사용하는 페이지의 경우 수정이 불가피하다. 이를 위해 MS는 상호작용 컨트롤이 이전과 동일하게 즉시 활성화되게 하고 싶으면 외부 스크립트에 의해 상호작용 컨트롤을 로드하라고 권하고 있다.

예를 들어 다음과 같이 'embed' 태그를 사용하는 페이지가 있다고 가정하자.


<html>
<body>
<object src="examplecontrol">
MyPage.html을 로드하면 해당 컨트롤은 비활성화된 상태가 된다. 이를 방지하려면, 다음과 같이 'embed' 태그를 write 해주는 코드를 외부 스크립트 파일(embed.js)로 작성해서 빼고, MyPage.html에서는 이 스크립트 파일을 지정하면 된다. 이렇게 하면 이전과 동일하게 이 컨트롤은 로드 후 즉시 활성화된다.
<html>
<body>
<script src="Embed.js"></script>
</body>

Embed.js
document.write(‘<object src=”examplecontrol”>’);

액티브 X, 플래시의 남발 자제해야

이러한 준비는 언제까지 마쳐야 할까?
MS는 1차적으로 3월 1일에 이 IE 패치를 윈도우 업데이트를 통해 선택적으로 배포할 예정이다. 즉 설치를 원하는 사용자만 이 패치를 설치하면 된다. 그러나 4월부터는 보안 업데이트에 일괄 적용되므로, 보안 업데이트를 설치하면 이 패치를 함께 설치하게 된다. 그러므로 사실상 4월 전까지는 위 방법을 통해 패치에 대한 대비책을 세우는 것이 바람직하다고 생각된다.

이 패치가 궁극적으로 국내 웹사이트에 미치는 영향이 얼마나 될지는 아직 미지수다. 하지만 분명히 외국 사이트에 비해서는 상당히 파급 효과가 클 것으로 예상된다. 그 이유는 국내 사이트들이 액티브 X, 플래시 등에 대한 의존도가 매우 높으며, 많이 사용하고 있기 때문이다. 특히 해외에서 국내 사이트들에 접속해보면 새삼스레 국내 네트워크 인프라의 우수성에 놀라게 된다.

국내 웹사이트들은 윈도우 XP 서비스팩 2에서 팝업 창 차단 때문에 대대적인 수정을 하는 홍역을 치른 적이 있다. 이제 시도때도 없이 뜨는 팝업 창뿐만 아니라 여기저기에서 남발됐던 액티브 X 및 플래시에도 제재가 들어오게 된 셈이다.

이러한 소동과 후유증을 겪어야 하는 것은 이올라스나 MS에도 책임이 있겠지만 웹 기획자, 디자이너, 개발자들, 고객이 스스로 이러한 문제를 초래했다는 것을 부인하지 못할 것이다.

이번 사건 이후에 액티브 X나 플래시 사용을 자제하는 바람직한 모습으로 가는 계기가 될지, 아니면 XP 서비스팩의 팝업 창 차단 이후 레이어를 통해 팝업 창을 흉내내는 기괴망측한 꽁수가 등장했듯이, 이번 사건 역시 개발자에게 스크립트 작업만을 잔뜩 추가해주게 될지는 두고 볼 일이다.

웹 관련 기술의 미래를 생각한다면
마지막으로 필자가 덧붙이고 싶은 점은 그동안 MS에 관련돼 이어진 소송들에 대해 어느 것은 찬성, 어느 것은 반대하는 것들이 있었지만, 이번 소송만큼은 반드시 MS가 이겼으면 한다는 것이다.

당장 겪게 되는 사용자들의 불편함과 번거로운 수정 작업도 중요한 문제지만, 더 큰 문제는 많은 전문가들이 지적하고 있듯이 웹의 현재가 아닌 미래에 커다란 악영향을 미치게 된다는 것이다.

필자의 회사 역시 HTML 태그를 통한 바이너리 확장과 관련된 기술을 연구하고 있는데, 이올라스의 주장대로라면 필자의 회사 역시도 특허를 침해하게 되는 셈이다. 따라서 필자의 회사뿐만 아니라 유사한 웹 관련 기술을 연구, 개발하는 수많은 회사들은 이올라스에 로열티를 주거나 해당 사업 및 연구를 포기할 수밖에 없다.

결국 이 소송의 승패는 단순히 MS가 벌금을 물어준다고 해결되는 문제가 아니라 장차 웹 관련 기술의 운명이 달려있는 것이다.

[출처] ZDNet Korea (06/02/15)

==========================================================================================

* 첫번째

<script language='javascript' src='http://www.whois.co.kr/embed/embed.js'></script>


헤더에 이거 넣고


<script>playFlash('swf/menu.swf','865','91','menu','transparent','true');</script>

//경로.가로.세로. 임,투명





* 두번째

웹페이지에 삽입되어있는 플래시파일 <object...></object>을 document.write('...')를 이용해서 별도의 파일로 저장합니다.



수정전

<object classid=...>

<param...>

<param...>

</object>



수정후

document.write('<object classid=...>');

document.write('<param...>');

document.write('<param...>');

document.write('</object>');



파일의 확장자는 반드시 js로 저장합니다.



예)a.js



파일을 별도로 저장한뒤 플래시를 노출시킬 해당 웹페이지로 가서 아래 스크립트를 삽입합니다.



<script src='a.js'> </script>



의 형태로 저장합니다.



* 세번째  

여러가지 방법들이 있는데...제가 해 본 결과중 가장 간편한 방법은 아래와 같습니다.



<! -- 순서1. embed_patch.js 화일 생성 -->

function WriteEmbed(emb_id){
    document.write(document.getElementById(emb_id).value);
}

<! -- 위의 3줄을 카피해서 embed_patch.js 화일을 생성 한 다음 root 디렉토리에 저장 -->



<! -- 순서2. head 부분에 아래 스크립트 삽입 -->

<script language="JavaScript" type="text/JavaScript" src="/embed_patch.js"></script>


<! -- 순서3. 플래시 삽입 시작되는 부분에 아래 한줄을 삽입 -->

<textarea id="emb_01" style="display:none;" cols="0" rows="0">



<! -- 순서4. 플래시 끝나는 부분에 아래 두줄을 삽입 -->

</textarea>
<script language="javascript">WriteEmbed('emb_01')</script>



<! -- 끝 -->



** 참고로 한 페이지에 플래시가 여러개 있을 경우 순서3,4에 명시된 'emb_01' 을 각 플래시 마다, 'emb_02' , 'emb_03' , ...이렇게 적어 주시면 됩니다.





*  네번째


--------- 여기서 부터 복사해서.. ---------------

// Flash Activating Script
// 2005-12-05
// inome _at_ nhncorp.com
// Don't Edit Below! Never!

// s: source url
// d: flash id
// w: source width
// h: source height
// t: wmode ("" for none, transparent, opaque ...)
function mf(s,d,w,h,t){
return "<object classid=\"clsid:d27cdb6e-ae6d-11cf-96b8-444553540000\" codebase=\"http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0\" width="+w+" height="+h+" id="+d+"><object src="+s+" quality=high wmode="+t+" type=\"application/x-shockwave-flash\" pluginspage=\"http://www.macromedia.com/shockwave/download/index.cgi?p1_prod_version=shockwaveflash\" width="+w+" height="+h+"></object></object>";
}

// write document contents
function documentwrite(src){
document.write(src);
}

// assign code innerHTML
function setcode(target, code){
target.innerHTML = code;
}


------------ 여기까지.. 'flash.js' 라는 js파일을 하나 만드세요 ----------



그리고 플래시를 적용할 html 문서 부분에 스크립트를 넣어줍니다.

<!-- 플래시 부분에 삽입되는 소스 -->

<script src="http://도메인명/flash.js"></script>
<script>var ff = mf("filename.swf", "id", width값, height값, "opaque");documentwrite(ff);</script>

<!-- 플래시 부분에 삽입되는 소스 -->

flash.js 경로 부분이랑 파일네임, 사이즈 정도만 수정하면
쉽게 쓸 수 있더라구요.





* 다섯번째

코드를 작성하는 부분에 아래 코드를 복사해서 붙입니다.



function flash(c,d,e) {
var flash_tag = "";
flash_tag = '<OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" ';
flash_tag +='codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0" ';
flash_tag +='WIDTH="'+c+'" HEIGHT="'+d+'" >';
flash_tag +='<param name="movie" value="'+e+'">';
flash_tag +='<param name="quality" value="high">';
flash_tag +='<embed src="'+e+'" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" ';
flash_tag +='type="application/x-shockwave-flash"  WIDTH="'+c+'" HEIGHT="'+d+'"></embed></object>'

document.write(flash_tag);

}



위의 내용을  저장하고 이름을 정합니다.

이름은 개인의 편의에 맞춰서 정합니다.

저는 a.js로 정하겠습니다.





다음에는 플래시를 삽입한 htm을 열어서 수정합니다.



플래시가 삽입되어 있던 부분을 다음과 같이 수정합니다.

<script language="JavaScript" src="js파일이 있는 곳"></script>

<script language="javascript">
      flash('무비의 넓이','무비의 높이','무비가 있는 곳');

        </script>









<script language="JavaScript" src="js파일이 있는 곳"></script>



예를 들어 css폴더에 있는 a.js파일을 호출한다면

<script language="JavaScript" src="/css/a.js"></script>

이렇게 작성하시면 됩니다.



html파일이 있는 같은 폴더에 js파일을 업로드하셨으면 src="a.js" 이렇게 작성하시면 됩니다.




<script language="javascript">
      flash('무비의 넓이','무비의 높이','무비가 있는 곳');

        </script>



예를 들어서 flash 폴더에 있는 넓이 900에 높이가 600인 index라는 이름의 플래시 무비가 있다면

이렇게 작성하시면 됩니다.

<script language="javascript">
      flash('900','600','/flash/index.swf');

        </script>

 

그리고 플래시 배경을 투명하게 하시고 싶으시면

flash_tag +='<param name="wmode" value="transparent">';를

js파일에 flash_tag가 있는 부분에 복사해서 붙여 넣기하시면 됩니다.



* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- 출처 : 인터넷 비즈니스 픽스넷
http://pixnet21.co.kr/zeroboard/zboard.php?id=news&page=1&sn1=&divpage=1&sn=off&ss=on&sc=on&select_arrange=headnum&desc=asc&no=24&PHPSESSID=ef1ce3c2217685c461b591c1063adf38
Posted by 귀찮은 여니씨
,