現在地 HOME > 掲示板 > 昼休み4 > 448.html ★阿修羅♪ |
|
Tweet |
ActiveXの裏側(その1)【がんばれ!!ゲイツ君】かなり前の記事ですが、拾っときます。
http://www.asahi-net.or.jp/~FV6N-TNSK/gates/activex1.html
いやはや、最近はホントにドタバタしてますね。つい昨日なんかもAppleのリストラ計画が発表になって、今業界はその話題で持ちきりです。
先々週ヒストリカル・シリーズを開始した時は、まさかこんなにいろんな話題が出てくるとは夢にも思ってなかったんですが、まぁだからこの業界てのは面白いってのもあるんでしょうねぇ。
てなワケでヒストリカル・シリーズの第2話はちょいと先に伸ばして、今週と来週の2回に渡ってActive-Xのお話しをしたいと思います。落ち着いたらまた復帰しますんで、よろしくお願いしますね。
それにしても先々週のActiveXのバグ騒ぎはすさまじかったですね。
そもそもこのバグっていう言葉は、昔ハーバード大のマークIって名付けられたコンピューターが誤動作を起こした時、回路中の真空管と配線の中に一匹の蛾を見付けたことから言われているらしいですが(なんとくだんの蛾は、米国海軍海面兵器センターに保存されているとのこと!!)、まぁ季節も春だし虫がわいて来てもおかしくないのかもしれませんけどね。
ただActiveXのバグはあまりにもお粗末。JAVAにもちょこっとセキュリティー・ホールの話は出てますが、ActiveXの致命的なバグとは比べものにならないような些細なもんです。(それを鬼の首でも取ったように騒いでいる会社もいますけどねぇゲイツ君(笑))
でもなんてこんなに出来不出来に差がついてしまったんでしょ?
まずJAVAとActiveXの違いからちょっと解説します。
そもそもJAVAってのは、情報家電製品向けのOSとして開発されきたものです。家電製品ってPCと違って素人が扱うワケだから、信頼性とかやリアルタイム性に優れたものじゃダメなのは当然ですよね。たとえばなんかの拍子にプログラムが暴走したりすることなんて絶対に許されないんです。電子レンジに猫を入れてしまった有名な話じゃないけど、万一の時にPL法でいくら賠償されるかなんて解ったもんじゃないですからね。
その他にも、プログラムがコンパクトなものでなければならないとか、移植性に富んでなけでばならないとか厳しい制約があります。
でも、ここで終らなかったのがSunのエライ所。Sunって会社は結構前から「Network is computer」ってスローガンを掲げていて、会長のスコット・マクネリは3年以上も前から「企業はメインフレームやPCへの投資を止めて、ネットワークに投資すべきた!」って説いてました。まさに今はマクネリの読みがズバっと当たってSunはインターネット関連のフロンティアベンダーとしてかつて無い収益を上げるに至ってます。(ただ、もっと収益を上げているのがルーター作っているCiscoですけどね。)
で、当然この言語もWebの技術として最適であることを見抜き、1995年のSunWorldで大々的に発表したワケです。その後、Netscapeがこれをいちはやく自社のブラウザの標準サポートとすることを打ち出し、それ以来爆発的に広まって今日に至ってるんですね。
このJAVAってネーミングも、昔はOakインタープリタって呼ばれてたんですが、後にこの親しみ易いネーミングに変えられてます。ここらへんのセンスはゲイツ君も自分の服装にでもちょっとは見習えばいいのにね。
さて、一方のActiveXはと申しますと、登場の経緯はこんな感じです。
マイクロソフトは結構前から、自社でCOM(Componet Object Model)って技術を持ってました。これはアプリケーションやドキュメント同士の連係を実現させる技術で、WinユーザーにとってはおなじみのOLEもこの技術を使っているんですね。
さあそこへ空前のインターネットブームです。聞く所によるとJAVAなんてものが出てきたら、マルチプラットフォームでなんでもアプリが動いてしまうらしい。このままじゃWindowsで世界制覇するっていうゲイツ君の野望も崩れ去ってしまう。なんとか覇権を取りもどしてWindows帝国の安泰をはからねば!
そう思ったMSはこの古びたCOMテクノロジーを使ってちょいちょいとネットワーク対応に書き直し、JAVAもどきのダイナミカルなWebページを作成する技術をでっち上げたというワケです。これがActiveX誕生の経緯です。
Winを使っているヒトは知っていると思いますが、あのOLEってのはAppleのOpenDocとは違って、完璧にWindows上のみで動作することを想定して作られたものです。最近はいくらか軌道修正してますが、そもそも単体PC上の既存アプリ同士の連係を想定して作られた技術なんだからネットワークで使うには無理があるし、当然セキュリティなんて考えて作っているワケが無い。
JAVAが何でセキュリティが高いのかについてもうちょっと言いましょう。
まず。JAVAのアプレットを走らせるとしますね。その時はそのアプレットのホストであるWebブラウザがアプレットの特権を完全にコントロールしているんです。これ、JAVAの標準のクラスにセキュリティマネージャってのがあって、これがあるんでアプレットはローカルマシンのOSの機能を使ったり、ファイルアクセスをしたりするのは本質的に禁じられているんですね。
その上アプレットのロード時に、ブラウザ側で全命令をチェックし、JAVAの規約がちゃんと守られていることを確認し、それからそのアプレットを実行させる様になっているんです。だから、サーバーからどんな悪質なアプレットが来たとしても、クライアント側のJAVAVMがちゃんとガードしてくれる手はずになってるというわけ。
で、一方ActiveXはと言うと、そんなガードなんて全然考えられちゃいない。ActiveXコントロールはOSはもとより、ネイティブなコードを書くとその下のハードウェアにも簡単にアクセスできてしまう。
MSはブラウザ側で付け焼き刃のパッチをあてりゃぁ大丈夫だろうって踏んでたんでしょうが(要は、アラートを出してごまかそうというヤツですね)、その付け焼き刃の対応も*.urlとか*.lnkとかの拡張子のものはノーガードだったっていうんだから大笑い。この2つのファイルはいずれも実行プログラムへのリンクを示しているもので、当然ながらMS自身がそういったものを作ったんです。
(こういうのを、自分が掘った落し穴に自分が落ちたと言う)
ここのサイトにそのテストURLが載ってまして、私も実際会社のIEを使ってアクセスしてみましたが、いやー計算機プログラムがなんの警告も無しに実行されちゃうんですね。こりゃひどいわ。
ところで、アメリカではActiveXがあまりひどいんで、それを揶揄してCaptiveXなんて呼ばれているそうです。まぁ罠に落ちたらそれまでよって事ですね(笑)。
で、MSもこれじゃ悔しいってんで、JAVAのことをRe ActiveX(逆向きのX?)なんて呼ぶようにしているらしいですが、でもこれMS関係者にしか広まってないらしいです(笑)。残念だったねぇゲイツ君!!
さて、今週はJavaとActiveXの基礎的な話しをして見ましたが、来週は今回起きたバグ騒動について、もうちょっと考察してみたいと思います。それではみなさま来週までごきげんよう。
97.8/31補足:しかし、この時以来ブラウザのセキュリティ問題がかなり騒がれるようになってきましたね。でもまだこのCyberSnot問題を超えるものは残念ながら出てきていないです(笑)。