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のサポートを考えていることを提示した。