InfoQ

News

HDIV 2.0:セキュリティフレームワークがSpring MVCとJSTLを統合

作者 Ryan Slobojan, 翻訳者 編集部 投稿日 2007年9月18日 午後11時26分

コミュニティ
Java
トピック
セキュリティ,
オープンソース,
Webフレームワーク
タグ
Spring,
JSF,
Struts,
HDIV
オープンソースWebアプリケーションセキュリティフレームワークであるHDIV(サイト・英語)が最近そのバージョン2.0をリリースした。InfoQはこのリリースの詳細を探るため、HDIVプロジェクトのリーダであるRoberto Velasco Sarasola氏に尋ねた。

Sarasola氏は、HDIVをSQLインジェクション、クロスサイトスクリプティング、パラメータタンパリングのような一般的なWebアプリケーションの脆弱性を防ぐのを狙いとしたJava Webアプリケーションセキュリティフレームワークであると説明している。HDIVは、どんなHTTPクライアントリクエストでもアタックを誘発しうる事を想定して、そのリクエストが何らかのアタックでないことを検証する。また、それは現在あるフレームワークの検証ストラテジーとのギャップについて訴えかけるものである。

現在のWebフレームワークは検証機能を備えているのだが、ほとんどの場合検証における需要の高いニーズを満たしていない。例えばもし情報を読むためにhttp://www.myhost.com/action1.do?account=56というリンクをWebアプリケーションに持っていたとしよう。ここで、クライアントは誰でも他の人のアカウントをチェックするために、例えばaccount=40のように値を更新することができてしまうのである。

標準的なセキュリティ検証機能では(編集可能なデータ検証により適している)それをチェックするのは不可能で、それに対応するカスタムな検証機能を自分でつくならなければならない。このセキュリティ問題はインスタンスレベルのセキュリティとして知られており、Webアプリケーション内には検証される必要のある同じようなリクエストがたくさん存在しているので、これを解決するのは困難なのだ。

Sarasola氏はそのHDIVがこのような脆弱性と戦う機能を搭載していることを説明した。

  • データ統合-HDIVはサーバーから生成された読み出し専用の(例:隠されたフィールト等)をパラメータタンパリング攻撃から防ぐため、クライアント上でそれが編集されないよう保証する。
  • 編集可能なデータ検証-HDIVはクロスサイトスクリプティングとSQLインジェクション攻撃を除去するため、全ての編集可能フィールドを解析する 。
  • データの機密性-HDIVはパラメータ名と値を不明確にすることによって編集不可データを機密性にする。それによりコラム名かWebディレクトリのような内部データがクライアントにさらされるのを防ぐ。
  • 詳細攻撃ログ-HDIVはURLやユーザーネーム、IPアドレス、攻撃タイプ等の発見された攻撃一つ一つの情報をログする。

HDIVは通常のリンクとフォームタグの代用品である、カスタムJSPタグの使用を通してJava Webアプリケーションに統合されている。HDIV Webフィルタはアプリケーションのweb.xmlに挿入され、自動的に全てのリクエストに対して検証が行われる。一つ前のHDIVのバージョン(記事)は Struts 1.xとStruts 2.xをサポートしているが、今回のリリースではSpring MVC2.0とJSTLにも対応している。これらの新しいフレームワークのサポートは、HDIV機能に加えるためにSpringとJSTLタグそれ自体を拡張することによって加えられた。コアのHDIVライブラリもWebフィルタもこれをサポートするのに何の変更も必要無い。またSpringとStrutsが両方ともアクションベースのフレームワークであるので、HDIVの視点から見てそれら二つはとても類似しているのである。Sarasola氏は、 拡張ポイントがタグ上においてほとんど定義されておらず存在していないのと同様だったので、フレームワークタグ自体を拡張するのが一番大変であったと述べている。また彼は他のフレームワークデベロッパ達に、統合をもっと簡単にする明瞭なタグの拡張ポイントを付け加えて欲しいという願望を表した。

また私たちはSarasola氏にHDIVの未来に関して尋ねたところ、彼はWebflow統合のプランに関して述べた。

現在HDIVは三つのステートマネージメントストラテジーをサポートしている。メモリとハッシュ上にてHDIVはJSP内で処理されたそれぞれの存在可能なリクエスト用にオブジェクトをサーバ側で保存する。スケーラビリティの観点から見てサーバ側のキャッシュのサイズを制限するのはとても面白いことである。現在のリリースでは最大のキャッシュサイズを定義するのが可能なのだが、それはアプリケーションに依存しているのでほとんどの場合正確な数字を出すのは困難なのである。

この問題を解決するため私たちはWebflowを考慮に入れた。なぜならそれはクライアントナビゲーションを論理的に分離させる方法を提供するからである。HDIVはキャッシュからいつオブジェクトを削除するのかを決断するため、Webflowリスナーの機能を使用する。

もう一つ興味深い機能は、HDIVのカスタムタグを使用してWebflowの実行キーをそれぞれのリンクかもしくはフォームに自動で付け加える機能である。現在はStruts、Struts 2とSpring MVCアプリケーション内において手動で付け加えなければならないので、そのタスクを自動化したいということだ。

また彼は将来的にWebWork、StripesとJSFのサポートを考えていることを提示した。

原文はこちらです:http://www.infoq.com/news/2007/09/hdiv

ブックマーク
digg+,
reddit+,
del.icio.us+,
dzone+,
Hatena

No comments

返信

特集コンテンツ一覧

トップスポーツチームの監督に教わる秘訣

この論文では、氏が発見した原則を要約し、その原則をいかにしてソフトウェア開発に応用するかを説明します。

事例研究:Dutch Railwaysのプロジェクトにおける分散拠点でのスクラム・プロジェクト

この記事では、私達がどのようにして大規模(240人月、10万行強)でインドとオランダの開発者も参加したスクラム・プロジェクトを成功させたのかを示しています。

Agile2008チーム参加レポート - 帰国そして変化

Agileカンファレンスに「参加者としてだけでなく、発表者として参加しよう」を掲げたチームgoyattomは、サブミッションを提出し、7つのセッションが日本から選択されました。参加者はカンファレンスで各々の発表や、各セッションへの参加、諸外国のエンジニアとの出会い、ステージ上で DearXPを熱演などの様々な思い出を抱えて、無事日本に戻ってきました。

SilverlightとJavaのインターオペラビリティ

マイクロソフトのRobert Bellが、SilverlightとJavaを使用したインターオペラビリティのシナリオを紹介し、サンプルコードを例にとってアーキテクチャの手引きを提供します。

Agile2008 チーム参加レポート - カンファレンス参加編

Agileカンファレンスに「参加者としてだけでなく、発表者として参加しよう」を掲げたチームgoyattomは、サブミッションを提出し、7つのセッションが日本から選択されました。サブミッションが選択された人、そうでない人も含めて、個々の目的意識の確認、膨大なプログラムから聞きたいセッションの選択、旅行の準備、プレゼンテーションの準備の期間を終えて、無事当日を迎えました。

Agile2008 チーム参加レポート - 動機/準備編

筆者はアジャイルソフトウェア開発についての年に一度の国際会議であるAgile2008に初めて参加してきました。今年の日本からの参加者の数は14名にも及び、発表者は5名、受け持ったセッションは8つに及び、例年にない活躍を見せました。なぜ今年のAgile2008では、これほど多くの日本人が参加し発表に至ったのか? そのレポートをお届けします。

Javaトラブルシューティングメルマガ総集編 2008/08~09

エスエムジーでは、Java全般を対象にしたトラブルシューティングサービス「JaTS」を提供しています。この記事では、前回に引き続き、JaTSにて蓄積したトラブル事例とその解決ノウハウの一部をお送りしている「Javaトラブルシューティングメールマガジン」(JTSMM)の総集編として、過去2ヶ月のトラブル事例と追加情報をダイジェストとして提供いたします。

モデル駆動アプローチがうまく機能しない(しなくなる)8 つの理由

この記事では、モデル駆動アプローチがうまく機能しない、または機能しなくなることによって期待した結果が実現できなくなる 8 つの理由について書きたいと思います。