中島 震,Reda Ahroum, Daniel Balouek (NII)

Slides:



Advertisements
Similar presentations
1 プリミティブ Web サービスの 入出力データに関する一考察 2005 年 3 月 21 日 松江工業高等専門学校 情報工学科 奈良先端科学技術大学院大学 情報科学研究科 越田高志 電子情報通信学会 2005年総合 大会.
Advertisements

1 安全性の高いセッション管理方 式 の Servlet への導入 東京工業大学 理学部 千葉研究室所属 99-2270-6 松沼 正浩.
関心事指向アーキテクチャモデリング環 境 Concern-oriented Architecture Modeling Environment 九州工業大学大学院情報工学府 情報科学専攻 鵜林研究室 M1 佐藤 友紀 1.
OWL-Sを用いたWebアプリケーションの検査と生成
Web アプリをユーザー毎に カスタマイズ可能にする AOP フレームワーク
DB(データベース)のおはなし 作成者:小野正広 DBと言っても、  ドラゴンボール ではないですぞ! 3/1/2017.
JPAを利用した RESTful Webサービスの開発
Riding the Design Wave II
名古屋大学大学院人間情報学研究科 物質生命情報学専攻 情報処理論講座 原 崇
JavaServlet&JSP入門 01K0018 中村太一.
第4回 個人の動画配信補足のためのWeb構築
Web App Semi 2008 #1 Web App Semi 2008 #1.
AspectScope によるアスペクトとクラスのつながりの視覚化
Day3 Day4 Day3 Day4.
同期的にアドバイスを活性化できる分散動的アスペクト指向システム
PHPの基礎と開発手法 Based on PHP5
ユーザ毎にカスタマイズ可能な Web アプリケーション用のフレームワークの実装
アスペクト指向プログラミングを用いたIDSオフロード
入出力データ型に透過な Webサービス動的実行システム 松江工業高等専門学校 情報工学科 越田高志 情報処理学会第68回全国大会
遠隔ポイントカット - 分散アスペクト指向プログラミング のための言語機構
第8章 Web技術とセキュリティ   岡本 好未.
プログラム実行履歴を用いたトランザクションファンクション抽出手法
細かい粒度でコードの再利用を可能とするメソッド内メソッドのJava言語への導入
ソフトウェア工学 知能情報学部 新田直也.
暗黙的に型付けされる構造体の Java言語への導入
関心事ごとに視点を切り替えて プログラムを編集できる 統合開発環境の提案と実装
理学部 情報科学科 指導教官 千葉 滋 助教授 学籍番号 03_03686 内河 綾
オブジェクト指向プログラムにおける エイリアス解析手法の提案と実現
ユーザ毎にカスタマイズ可能な Webアプリケーションの 効率の良い実装方法
インターネットにおける真に プライベートなネットワークの構築
実行時情報に基づく OSカーネルのコンフィグ最小化
只見町 インターネット・エコミュージアムの「キーワード」検索の改善
Javaプログラムの変更を支援する 影響波及解析システム
アスペクト指向に基づく 拡張可能な MDAモデルコンパイラ
横断的関心事に対応したオブジェクト指向言語GluonJとその織り込み関係の可視化ツール
活性化のタイミング制御の実装を分離記述可能な分散動的アスペクト指向言語
通信機構合わせた最適化をおこなう並列化ンパイラ
オープンソース開発支援のための ソースコード及びメールの履歴対応表示システム
オープンソース開発支援のための リビジョン情報と電子メールの検索システム
豊富な情報を基にした pointcut を記述できるアスペクト指向言語
オブジェクト指向言語論 第八回 知能情報学部 新田直也.
端末およびサービス透過的な 情報閲覧支援システムの構築
アスペクト指向言語のための 独立性の高いパッケージシステム
pointcut に関して高い記述力を持つ アスペクト指向言語 Josh
プログラムの織り込み関係を可視化するアウトラインビューの提案と実装
コーディングパターンの あいまい検索の提案と実装
拡張可能なアスペクト指向モデリングにおける織り合わせの検証
JavaScriptを含んだHTML文書に対する データフロー解析を用いた構文検証手法の提案
福岡工業大学 情報工学部 情報工学科 種田研究室 于 聡
ソフトウェア工学 知能情報学部 新田直也.
分散 Java プログラムのための アスペクト指向言語
Webアプリケーションと JSPの基本 ソフトウェア特論 第4回.
同期処理のモジュール化を 可能にする アスペクト指向言語
C#プログラミング実習 第3回.
dcNavi:デバッグ支援のための グラフベース推薦システム
様々なAOPメカニズムをモデル化する パラメータ化インタプリタ
アスペクト指向言語のための視点に応じた編集を可能にするツール
プログラムの差分記述を 容易に行うための レイヤー機構付きIDEの提案
メソッドの同時更新履歴を用いたクラスの機能別分類法
ユビキタスコンピューティングの ための ハンドオーバー機能付きRMIの実装
状況に応じて適切な 例外処理が行なえる アスペクト指向分散環境実験の 支援ツール
プログラム分散化のための アスペクト指向言語
開発者との対話を活かした 横断的構造の表現
エイリアス関係を考慮した Javaプログラム用静的スライシングツール
複雑度メトリクスを用いた JAVAプログラム品質特性の実験的評価
コードクローン解析に基づく デザインパターン適用候補の検出手法
Javaとは Javaとはオブジェクト指向言語でJava VM(Java仮想マシン)と呼ばれるプログラム上で動作します。
オブジェクト指向言語における セキュリティ解析アルゴリズムの提案と実現
GluonJ を用いたビジネスロジックからのデータベースアクセスの分離
Josh : バイトコードレベルでのJava用 Aspect Weaver
Presentation transcript:

中島 震,Reda Ahroum, Daniel Balouek (NII) Webアプリケーションの特性とAOP 九州工業大学大学院 外村慶二 鵜林 尚靖,成瀬 龍人,塩塚 大 (九工大) 中島 震,Reda Ahroum, Daniel Balouek (NII) 1

概要 Webアプリの横断的関心事 Webアプリ開発に特化したAOP機構の開発 サニタイジング,アクセス制御,アクセス解析等 AOWP ページアクセスとユーザセッションのサポート 2

目次 WebアプリケーションとAOP Webアプリ開発に特化したAOP機構の開発 AOWPの適用事例 議論とまとめ AOWP オープンソースを対象とした記述実験 AOPベースのWebアプリケーション開発 議論とまとめ 3

WebアプリケーションとAOP 4

Webアプリケーション Webアプリケーションは、サーバ/クライアント型のシステムで、 クライアントがHTTPリクエストを送信し、サーバ側のプログラムが実行され 実行結果をHTML形式で生成してクライアントにHTTPレスポンスとして返します。 5

Webアプリの横断的関心事 関心事 影響を与える処理,関係するコンテキスト情報 サニタイジング [Masuhara2003] データベースアクセス,HTML出力,データフロー アクセス制御 [Lemos2006] ページアクセス,ユーザごとの認証状態 バージョニング ファイルアクセス,データベースアクセス ファイル圧縮 (変換) ファイルアクセス アクセス解析 ページアクセス,ユーザ/アプリケーションごと サービス監視 ページアクセス, ユーザごとのページ遷移履歴 [Tan2002] 構造 [Kojarski2003] Webページの構造,データベースの構造 サニタイジングは、SQLインジェクションや、クロスサイトスクリプティングを防止する為にクライアントからの送信データに対してエスケープ処理をする事です。 サービス監視について、特に[Tan2002] の中では、各ユーザのページ遷移履歴を監視し、その特徴を解析する事で、Webロボットの検出を行っている。 [Kojarski2003] では、Webアプリで取り扱うデータ構造が、データベース、クラス、画面等の構造に横断的に影響を及ぼす事を指摘している。 [Tan2002] Discovery of Web Robot Sessions Based on their Navigational Patterns, Pang Ning Tan and Vipin Kumar, Data Mining and Knowledge Discovery, 2002 [Kojarski2003] Domain driven web development with WebJinn, Sergei Kojarski and David H. Lorenz, OOPSLA, 2003 6

WebアプリとAOP言語 AspectJ,AOPHP等 dflow [Masuhara2003] (サニタイジング, データフローのサポート (サニタイジング等) AspectJ,AOPHP等 (サニタイジング, ファイルアクセス,キャッシング等) 汎用的なAOP言語をWebアプリ開発に適用する場合、サーバサイドのプログラムを対象として、 特定のメソッド呼び出し等に対してアドバイスを実行するアスペクトを記述する。 7

本日の話 関心事 影響を与える処理,関係するコンテキスト情報 サニタイジング [Masuhara2003] データベースアクセス,HTML出力,データフロー アクセス制御 [Lemos2006] ページアクセス,ユーザごとの認証状態 バージョニング ファイルアクセス,データベースアクセス ファイル圧縮 (変換) ファイルアクセス アクセス解析 ページアクセス,ユーザ/アプリケーションごと サービス監視 ページアクセス, ユーザごとのページ遷移履歴 [Tan2002] 構造 [Kojarski2003] Webページの構造,データベースの構造 本研究では、特にページアクセスや、ユーザセッション等の、Webアプリケーションのコンセプトに対して横断的な関心事のモジュール化を対象としている。 8

(アクセス制御,アクセス解析,サービス監視等) 本日の話 AOWP ページアクセス, ユーザセッションのサポート (アクセス制御,アクセス解析,サービス監視等) dflow [Masuhara2003] AspectJ,AOPHP等 本研究では、特定のプログラミング言語の実行モデルに基づいたAOP機構ではなく、 ページアクセス、ユーザセッション等の、HTTPプロトコルの実行モデルに基づいたAOP機構であるAOWPを提案する。 9

Webアプリ開発に特化したAOP機構の開発 10

ページアクセスをプログラム実行に対応付ける必要がある 研究動機 ページアクセスの取扱いの難しさ 例: Webアプリ全体に アクセス制御を追加する 研究動機を説明する為に、Webアプリケーション全体に、汎用的なAOP言語を用いて、ユーザ認証に基づくアクセス制御を追加する事を考える。 汎用的なAOP言語を利用する場合、 アクセス制御を追加する箇所を指定する場合、ページアクセスと対応するサーバサイドのプログラムの実行点をプログラマが見つけ出し、 それを選択するポイントカットを記述しなければならない。 この作業は、対象のWebアプリケーションが大規模にな場合に、容易な事ではない。 ページアクセスをプログラム実行に対応付ける必要がある 11

研究動機 ユーザセッションの取扱いの難しさ 例: Webアプリ全体に アクセス制御を追加する 各ユーザごとに、ユーザ認証結果を保存する為に、ユーザセッションを管理するコードをプログラミングする必要がある。 複雑な状態になったとき、この作業は大変となる。 ユーザセッションを取り扱う為のコード記述が必要 12

Webアプリの特性に合わせたインスタンス生成機構 AOWP Webアプリの特性に合わせたインスタンス生成機構 前述の問題を解決する為に、 AOWPでは、ページアクセスを取り扱う為のジョインポイントとポイントカット機構と、 Webアプリの特性に会わせたインスタンス生成機構を定義している。 例えば、先ほどのアクセス制御の例の場合、全てのページアクセスを選択するポイントカットを定義し、 アスペクトをユーザごとにインスタンス化し、各インスタンスのメンバ変数として認証結果を保存するようなアスペクトを 容易に記述する事ができる。 リクエスト ジョインポイントと それらを扱う為のポイントカット記述子 13

リクエストジョインポイント request ポイントカット AOWP ページアクセスの取扱い Webクライアント Webサーバ before アドバイス after リクエストジョインポイント サーバサイドのプログラム ページアクセスを表すジョインポイントを、リクエストジョインポイントとして定義した。 requestポイントカット記述子は、リクエストURL等のHTTPリクエストに含まれる情報に基づいて、リクエストジョインポイントを選択する事ができる。 サーバサイドのプログラム around アドバイス request (URL_PAT, FD_PATS, COOKIE_PATS, HEADER_PATS) URL_PAT: 選択するHTTPリクエストに含まれるURLのパターン FD_PATS: フォームデータの内容を指定するパターン COOKIE_PATS: クッキーの内容を指定するパターン HEADER_PATS: HTTPリクエストヘッダの内容 (IPアドレス等) を指定するパターン request ポイントカット 14

AOWP アスペクトのインスタンス生成機構 実行時のコンテキストに基づいて 参照できるインスタンスを制限 AOWPでは、ユーザごと、HTTPリクエストの処理ごと、アプリケーション内で1つ、という3種類のアスペクトのインスタンス生成を行う事ができる。 あるユーザに対する処理中に、他のユーザのセッション情報にアクセスするような事があると、 セキュリティ上問題となる可能性がある為、実行時のコンテキストに基づいてアクセスできるインスタンスに制限をかけている。 リクエスト処理ごと,ユーザごと,アプリケーションで1つ, の3種類のインスタンス生成方法 15

AOWPの実装 PHPを対象としたプロトタイプ実装 PHPに基づくAOP機構 + Webに特化したAOP機 構 コード変換により織り込みを行う リクエスト ジョインポイントとポイントカットはPHPのプログラム実行と対応付けて織り込み Web固有のアスペクトのインスタンス生成機構を実現するファクトリクラスを作成 AOPフレームワークとして実装 アスペクトをPHPのクラスとして記述 16

AOWPの実装 リクエストJP & PCの実装 before around addUser.php <?php include ‘func.php’; $success = addUser( $_POST[‘name’], $_POST[‘password’] ); if (!$success) { exit(); } displayPage(); ?> func.php <?php /** omission **/ ?> http://xxx.com/addUser.php after リクエストジョインポイントへの織り込みは、対応するPHPのプログラム実行点に対応付けて織り込みを行っている。 after アドバイスの種類 対応するPHPプログラムの実行点 before HTTPリクエストと対応するPHPスクリプトの呼び出し時 after HTTPリクエストと対応するPHPスクリプトの処理終了時 exit関数の呼び出し前 around HTTPリクエストと対応するPHPスクリプトの処理全体 17

AOWPの実装 アスペクトのインスタンス生成機構の実装 Web固有のアスペクトのインスタンス生成機構は、クッキー、インスタンスの永続化、静的クラス変数等を利用して実装している。 クッキー インスタンスの永続化 PHPの静的変数 インスタンスの永続化 インスタンスを管理するファクトリクラスを作成 18

アスペクトのインスタンスの取扱い方法を指定 AOWPの実装 アスペクトの記述方法 アスペクトのインスタンスの取扱い方法を指定 00: 01: 02: 03: 04: 05: 06: 07: 08: 09: 10: 11: 12: 13: 14: 15: 16: 17: ... 61: class AuthAspect extends PerSessionAspect { private $_authed = false; public function __construct() { $accChkPC = new RequestPointcut('.*'); $accChkAdv = new BeforeAdvice(); $accChkAdv->setPointcut($accChkPC); $accChkAdv->setAdviceBody('accChk'); $this->addAdvice($accChkAdv); } public function accChk(JoinPoint $jp) { if (!$this->_authed) { jumpToLoginPage(); ... ポイントカットの定義 AOWPのフレームワークでは、アスペクトをPHPのクラスとして記述する。 親クラスで、アスペクトのインスタンス生成の方法を指定する。 ポイントカットとアドバイスは、アスペクトのコンストラクタの中で、フレームワークが提供するクラスのインスタンスとして定義する。 アドバイスの定義 19

AOWPの適用事例 (1) オープンソースを対象とした記述実験 20

AOWPの適用事例 (1) PukiWikiを対象とした記述実験 ユーザ認証アスペクト (認証結果の保存) アンケートアスペクト (時間の取扱い) モニタアスペクト (Webアプリの利用状況の取扱い) AOWPのWeb固有なAOP機構を使って、現実的なアプリケーションに対して、どのような横断的関心事をモジュール化できるかを確かめる為に、 オープンソースのWikiシステムのPukiWikiを対象として記述実験を行った。 ユーザ認証アスペクトは、PukiWiki全体にユーザ認証に基づくアクセス制御を追加する。 アンケートアスペクトは、PukiWikiにアクセスして1分間経過したユーザに対して、アンケートを表示する。 モニタアスペクトは、PukiWikiのコンテンツ管理を行う為のページアクセスを監視し、一度に大量のページアクセスが発生した時に 一時的にサービスを停止する。 コード行数: 17925 行 ファイル数: 107 個 21

AOWPの適用事例 (1) ユーザごとの状態に基づくアスペクト このアスペクトは、PukiWikiの全てのページアクセスに対してアドバイスが実行される。 また、このアスペクトは、ユーザごとにインスタンス化され、インスタンスのメンバ変数の中で、各ユーザの認証結果を保持し、 その結果に基づいてアクセス制御を行う。 22

AOWPの適用事例 (1) ユーザの滞在時間に基づくアスペクト このアスペクトは、PukiWikiの全てのページアクセスに対してアドバイスが実行される。 また、ユーザごとにインスタンス化され、メンバ変数の中で各ユーザの最初にPukiWikiにアクセスした時間を保持し、 滞在時間を計算する事でアドバイスを実行を制御している。 23

AOWPの適用事例 (1) Webサーバの利用状態に基づくアスペクト このアスペクトは、PukiWikiのコンテンツ管理の為のページアクセスに対してアドバイスを実行する。 PukiWikiシステム全体で、1つのインスタンスが生成され、全体としてコンテンツ管理の為のページアクセスが多くなった時に アドバイスを実行する。 24

AOWPの適用事例 (2) AOPベースのWebアプリケーション開発 25

AOWPの適用事例 (2) 写真管理システムの開発 Webアプリを一から開発 する際にAOWPをどのよ うに利用できるか? RedaさんとDanielさんが 約1ヶ月間開発 写真の閲覧 / 登録 / 変更 ができるシステム Webアプリケーションを一から開発する場合に、Web固有なAOP機構をどのように利用できるかを確かめる為に、 写真を管理する為のWebアプリケーションの開発を行った。 26

AOWPの適用事例 (2) ベース機能とアスペクト システム全体を、ベース機能と、非機能に分け、ベース機能を先に開発後、非機能をアスペクトとして段階的に実装するという開発方法をとった。 画面のデザインとデータの保存機能のみを ベース機能として開発 アクセス制御等の非機能要求を アスペクトとして追加開発 27

AOWPの適用事例 (2) Web固有の関心事 と それ以外の関心事 ページアクセスに横断的な関心事はWeb に特化したAOP機構を使用 ユーザ認証アスペクト アクセス解析アスペクト アクセス履歴アスペクト 警告アスペクト データベースアクセスやファイルアクセス 等に関係する関心事は,プログラミング言 語に基づくAOP機構を使用 ファイル圧縮アスペクト 入力値検証アスペクト メール検証アスペクト 全部で7つのアスペクトを定義し、4つのアスペクトが、AOWPが提供するWebに固有なAOP機構のみを用いて定義できた。 また、ファイルアクセスやデータベースアクセスに関係する箇所は、関数呼び出しを選択するポイントカットのような、汎用的なAOP機構を用いてアスペクト記述が行われた。 28

議論とまとめ 29

実行時の機能の付け替えができる事が望ましい 実行時の動的織り込みが有効 議論 (1) 実行時の動的織り込み 関心事 影響を与える処理,関係するコンテキスト情報 サニタイジング [Masuhara2003] データベースアクセス,HTML出力,データフロー アクセス制御 [Lemos2006] ページアクセス,ユーザごとの認証状態 バージョニング ファイルアクセス,データベースアクセス ファイル圧縮 (変換) ファイルアクセス アクセス解析 ページアクセス,ユーザ/アプリケーションごと サービス監視 ページアクセス, ユーザごとのページ遷移履歴 [Tan2002] 構造 [Kojarski2003] Webページの構造,データベースの構造 実行時の機能の付け替えができる事が望ましい 実行時の動的織り込みが有効 1つの今後の計画は、実行時に柔軟に変更できるアクセス解析やサービス監視の為の基盤を実現する為に、 動的織り込みに対応する事である。 30

議論 (1) 実装方法の検討 プリコンパイル型 プロキシ型 事前にサーバサイドプログラムに アドバイスの実行コードを Webサーバ Webサーバ Weaver Weaver その実現方法として、プロキシサーバでユーザからのリクエストを横取りし、織り込みを行う手法を考えている。 取り扱うジョインポイントを、リクエストジョインポイントに限定する事で、実用的なAOP機構が開発できないかと考えいる。 [久保2008] AOJS: アスペクトを完全分離記述可能な JavaScript アスペクト指向プログラミング・フレームワーク, 久保淳人 and 水町友彦 and 鷲崎弘宜 and 深澤良彰 and 鹿糠秀行 and 小高敏裕 and 杉本信秀 and 永井洋一 and 山本里枝子 and 吉岡信和, ソフトウェア工学の基礎ワークショップ (FOSE), 2008 aspectPHP, http://www.cs.toronto.edu/~yijun/aspectPHP/ プログラム プログラム Webクライアント Webクライアント Webクライアント プログラム Webクライアント プログラム 事前にサーバサイドプログラムに アドバイスの実行コードを 埋め込む方法 (AspectJ等) HTTPリクエストを横取りして 織り込みを行う方法 (AOJS [久保2008], aspectPHP) 実行性能の最適化が行いやすい 動的織り込みに適している 31

ページ遷移履歴を直接取り扱う為のサポート 議論 (2) ページ遷移履歴の取扱い 関心事 影響を与える処理,関係するコンテキスト情報 サニタイジング [Masuhara2003] データベースアクセス,HTML出力,データフロー アクセス制御 [Lemos2006] ページアクセス,ユーザごとの認証状態 バージョニング ファイルアクセス,データベースアクセス ファイル圧縮 (変換) ファイルアクセス アクセス解析 ページアクセス,ユーザ/アプリケーションごと サービス監視 ページアクセス, ユーザごとのページ遷移履歴 [Tan2002] 構造 [Kojarski2003] Webページの構造,データベースの構造 さらに、もう1つの今後の計画は、[Tan2002] で提案されたような複雑なサービス監視に対応する為に、 ページ遷移履歴を容易に取り扱う為のAOP機構の拡張を検討している。 ページ遷移履歴を直接取り扱う為のサポート 32

Webアプリの監視において,アクセス履歴を取り扱う事は重要 議論 (2) ページ遷移履歴に基づくPC機構 プログラムの実行履歴を取り扱う為のポイントカット機構の研究に基づいて、 ページ遷移履歴を取り扱う為のAOP機構の拡張を検討している。 [Walker2004] Implementing protocols via declarative event patterns, Walker, Robert J. and Viggers, Kevin, FSE, 2004 [Douence2004] Composition, Reuse and Interaction Analysis of Stateful Aspects, Rémi Douence and Pascal Fradet and Mario Südholt, AOSE, 2004 [Allan2005] Adding Trace Matching with Free Variables to AspectJ, Chris Allan and Pavel Avgustinov and Aske Simon Christensen and Laurie Hendren and Sascha Kuzins and Ondřej Lhoták and Oege de Moor and Damien Sereni and Ganesh Sittampalam and Julian Tibble, OOPSLA, 2005 Webアプリの監視において,アクセス履歴を取り扱う事は重要 実行履歴を取り扱うAOP [Walker2004, Douence2004, Allan2005] ユーザごとのアクセス履歴を,プログラムの実行履歴に対応付けるのは大変 リクエストジョインポイントとper-sessionのアスペクトインスタンスを利用する事 で実用的なものが作れないだろうか? 33

まとめ Webアプリケーションにも様々な横断的関心事がある 横断的関心事の特徴に合わせたAOP機構の開発は有効 AOWP: ページアクセスとユーザセッションのサポート 34