e知識「e-chishiki.com」では、インドでの著名なIT著者、IT教育者、eセキュリティーの大家により作成された様々な種類のプログラミング言語に関する技術的なコンテンツを知識情報データーベースとして提供します。
週刊eセキュリティシーリズ(Web アプリケーションセキュリティ)
.NET プラットフォーム : セキュリティで保護された Web アプリケーションを構築するための開発者の選択
Vijay Mukhi
今日、Web アプリケーションを開発する場合、3 つのフレームワーク (.NET、Java Struts、および PHP) からフレームワークを選択します。他のフレームワークも出回ってはいますが、Web アプリケーションで使用する言語によって、上記の 3 つのフレームワークが広範に使用されています。この記事の一部の結論に同意できない場合があるかもしれませんが、ほとんどのユーザーがここでの分析に同意してくださることを願っています。
強み 1 : フレームワークの機能
Microsoft は .NET プラットフォームが Web アプリケーション フレームワークに最適なプラットフォームの 1 つであるとしています。巨額の投資に加えて、最高クラスのプログラマが Visual Studio IDE および .Net Framework を作成したため、近々発売される Visual Studio 2008 を除けば、Visual Studio 2005 に迫ることができる環境はありません。
コーダーに役に立つ開発環境を提供すれば、大幅に生産性が向上し、高品質なセキュリティ コードが作成される、とプログラマは考えています。今日、フレームワーク市場では、IDE、スピード、ユーザー インターフェイス、スケーラビリティ、操作性などの要素に関して、Visual Studio .NET フレームワークが提供する機能に匹敵し得る製品はありません。Eclipse のようなオープン ソース製品も比べものにはなりません。
"1 回戦は Microsoft の KO 勝ち" です。
強み 2 : フレームワークのアセンブリおよびライブラリ
フレームワークはプログラマの作業を単純にするライブラリを提供します。.NET の世界のクラスは、数の多さとコードの品質の両面において、他製品のクラスを凌駕しています。多くの営利企業も商用クラス ライブラリを販売しています。しかし、これは Java および PHP の世界ではまだ考えられないことです。オープン ソースのプログラマの仕事ぶりがすばらしいのは確かですが、より完全なフレームワークを量産する場合、お金に勝るものはありません。ライブラリの開発または優れたクラスの購入に Microsoft が投資している金額は、他の追随を許しません。今日 Microsoft は、給与が最も高い企業のうちの 1 つと考えられており、最高クラスの人材を雇用してトップ レベルの製品を作成しています。反 Microsoft 陣営の多くのプログラマが日夜、PHP および Java のクラス ライブラリと取り組んでおり、その競争は激化していますが、Microsoft 製品は現在のところ最も確実なものとしての地位を維持しています。"2 回戦は Microsoft のポイント (ただし、大差)" です。
強み 3 : 自動コード生成
OWASP のトップ 10 の攻撃を見れば、どのプログラム言語でも同じように起こり得るコーディング エラーに起因するものがあることがわかります。たとえば、SQL インジェクション攻撃は、コードが記述された言語 (C#、Java、PHP など) とは関係なく発生しています。こうした問題はまったくフレームワークに関連したものではありません。
OWASP のトップ 10 の攻撃のうち 8 つは、プログラマによってのみ解決できるものです。コード内にセキュリティ機能をすべて組み込むだけでよいのです。ただし、これは、プログラマがビジネス ロジックに関連したコードをあまり記述せずに済み、フレームワークに他の基本的な問題を処理するコードを生成させることができる場合にのみ可能です。その場合、プログラマは GUI やスケーラビリティなどの側面に集中する必要がなく、アプリケーション内のセキュリティ問題に注力することができます。
Microsoft はこの方面にも取り組んでいます。たとえば、ASP.NET 2.0 では、ASP.NET 1.0 と比較して大幅にコードが削減されます。これは PHP や Java には当てはまらないことです。この自動コード生成は私たちの製品の強みであり、プログラマは面倒なコードを記述する必要がなくなり、セキュリティなどの問題に集中することができます。"3 回戦は Microsoft のポイント" です。
強み 4 : フレームワークの認証機能
Web アプリケーションは、信頼性の高い認証スキームを備えている必要があります。すべてのフレームワークは、適切な認証スキームを提供していますが、私たちの観点から見れば、Microsoft の全体的な認証フレームワークの方が、豊富な機能のコントロールでユーザーにより高い柔軟性を提供しており、はるかに安全で強力です。Microsoft の認証フレームワークには、暗号アルゴリズムの複雑さをすべて隠蔽してくれる暗号用ライブラリが搭載されています。
次に、PHP フレームワークは、実行時に関数ライブラリおよびコードを組み込むために、Web アプリケーションでの "require" および "include" などの関数の使用をサポートしています。攻撃者はこの機能を使用して自由にコードを組み込み、その後、致命的な攻撃を実行することができます。これは .NET Framework では起こり得ません。"4 回戦はまたもや Microsoft のポイント" です。
強み 5 : コンパイラ
コンパイラは、コンパイル時にセキュリティ機能をプログラムに組み込み、オペレーティング システムで実行される最適化されたコードを生成します。.NET Framework で生成されたすべてのコードは、C# であれ ASP .NET であれ VB.NET であれ、セキュリティのため、まず中間言語 (IL) にコンパイルされます。その後、マシン命令に変換されます。Java でも同じような概念を使用しています。このため、Microsoft 版の Java は Sun のものよりはるかに高速に実行されます。.NET Framework の cl.exe や csc.exe などのコンパイラは、速度および機能を重視しています。
さらに、Microsoft には、広範なエラー チェック メカニズムが備わっており、他のフレームワークのどのコンパイラよりもはるかに効率的です。Visual Studio にバンドルされている FxCop は、プログラマがフレームワークによって定められた規則に確実に従うようにします。Linux/Unix の世界で長年使用されている gcc のようなオープン ソースのコンパイラもありますが、あらゆる種類のアプリケーションで、Microsoft の方が圧倒的に優れています。"KO でまたもや Microsoft の勝利"
プログラマにとって肝心なのは、健全な競争が行われることであって、最終的な勝者は重要ではありません。競走馬が 1 頭で走っても、競馬とは言えません。しかし不幸なことに、Web アプリケーションの分野では、Java および PHP は負け試合を戦っているようです。オープン ソースの世界にも非常に優れた製品が存在することには同意しますが、より広い視野で見れば、Microsoft は、他の製品をすべて合わせた場合よりも多くのものを単独で提供できるため、真の勝者になります。今日、FireFox は Internet Explorer よりはるかに柔軟にカスタマイズ可能ですが、このトップとしての地位をどれくらい維持できるのかは疑問です。
一時期、セキュリティ ツールは、Linux オペレーティング システムでしか動作しませんでしたが、現在はそういうことはありません。Linux、Java、PHP、Apache の分野におけるすべての優れたイノベーションに対して、Windows の方が優れているとは言わないまでも同等のものが存在します。
要約
まとめると、至るところにイノベーションは存在しますが、すべてを考慮に入れると、大規模アプリケーションを開発する場合には、.Net が最適な手段になります。Microsoft が 1 番だと言うと、悪魔に魂を売り渡す行為であると多くの人が非難するでしょうが、トレーナーとしては、真実を伝えざるを得ないと考えています。



