データベースを使用したウェブアプリケーションの開発 手法

13
デデデデデデデデデデデデデデデデデデデデデデ デデデデデ デデデデ デデデデ デデデデ デデデデデデデデ : デデデデ デデ 2006.12.19@3A402

description

データベースを使用したウェブアプリケーションの開発 手法. 筑波大学 情報学類 吉田光男 アドバイザー教員 : 天笠俊之 先生 2006.12.19@3A402. ウェブアプリケーション開発. ユーザ認証のためのテーブル設計 セッション・ハイジャックの防止 複数ブラウザへの対応 IE, Firefox, Opera Flash の利用 ライブラリの利用 CPAN, Web API キャッシュの利用 バッファリング制御. ユーザ認証のためのテーブル設計. ユーザ管理テーブル UserID, Email, Password セッション管理テーブル - PowerPoint PPT Presentation

Transcript of データベースを使用したウェブアプリケーションの開発 手法

Page 1: データベースを使用したウェブアプリケーションの開発 手法

データベースを使用したウェブアプリケーションの開発手法

筑波大学 情報学類 吉田光男アドバイザー教員 : 天笠俊之 先生

2006.12.19@3A402

Page 2: データベースを使用したウェブアプリケーションの開発 手法

ウェブアプリケーション開発• ユーザ認証のためのテーブル設計

– セッション・ハイジャックの防止

• 複数ブラウザへの対応– IE, Firefox, Opera– Flash の利用

• ライブラリの利用– CPAN, Web API

• キャッシュの利用• バッファリング制御

Page 3: データベースを使用したウェブアプリケーションの開発 手法

ユーザ認証のためのテーブル設計

• ユーザ管理テーブル– UserID, Email, Password

• セッション管理テーブル– UserID, SessionID, IP, Expiration

• プライマリキーは int が原則– UserID は int 型

Page 4: データベースを使用したウェブアプリケーションの開発 手法

セッション・ハイジャック• セッション

– Cookie で SessionID のやり取り• セッション・ハイジャック

– SessionID が他者に利用されることで発生

• SessionID の推測• クロスサイトスクリプティング( XSS )• 通信の傍受( Sniffer )• セッション固定攻撃( Session Fixation )

Page 5: データベースを使用したウェブアプリケーションの開発 手法

セッション・ハイジャックの防止

• SessionID を推測困難にする– ユーザ固有情報を含めない– 十分な長さのキーを( 32 文字)

• PHP 128bit / ASP 32bit

• 汚染チェック( Sanitize )– 出力で行う

• 通信の暗号化( HTTPS )• SessionID の配布はサーバが行う

– ユーザが SessionID を指定できない• その他

– IP, Expiration

Page 6: データベースを使用したウェブアプリケーションの開発 手法

複数ブラウザへの対応• ブラウザ・シェア( W3Counter よ

り)– IE 65%, Firefox 27%, Opera 1%

• HTML, CSS のブラウザ対応– W3C 勧告に従う– ブラウザ依存あり

• Ex: padding ( IE では内側に )

• JavaScript / Ajax– prototype.js の使用を検討

Page 7: データベースを使用したウェブアプリケーションの開発 手法

Flash の利用• インタラクティブ・コンテンツの作成• マルチプラットフォーム対応

– JavaAplet or Flash– Flash 98%

• インタラクティブ・コンテンツの利用シーン– Ex: 入力の簡略化

• Demo: バーコード認識

Page 8: データベースを使用したウェブアプリケーションの開発 手法

ライブラリの使用• 開発スピードを上げる

– 車輪の再開発を避ける– Perl CPAN, PHP PEAR– ライセンスに注意

• サービス公開後– ライブラリから自前関数への変更

• パフォーマンスの改善が見込めるのであれば• トレードオフ

Page 9: データベースを使用したウェブアプリケーションの開発 手法

Web API の利用• Web API

– Amazon Web Services をきっかけに– Google Web APIs etc…

• マッシュアップ( MashUp )– 複数のサービスを混ぜる– Ex: Google Maps API + ??

• Demo: Simple FON Maps– Google Maps API + invgeocoder + FON

Maps

Page 10: データベースを使用したウェブアプリケーションの開発 手法

キャッシュ• データのキャッシュ

– 取得したデータの再利用• Web API を使用するときは重要

– 取得先サーバ負担の軽減

– 計算した結果を再利用• 演算に時間がかかる処理を

– 全体のパフォーマンスの改善

• キャッシュはキャッシュじゃない– ミラーコピー

Page 11: データベースを使用したウェブアプリケーションの開発 手法

バッファリング制御• バッファリング

– バッファにデータをためる– 全体のパフォーマンス改善のため

• ウェブアプリではバッファリングを OFF に– ユーザの利便性 > 全体のパフォーマンス– 処理内容の表示– Ajax の作動中に画像表示

• 画像出してる時点でおかしいけど…

Page 12: データベースを使用したウェブアプリケーションの開発 手法

なぜウェブアプリケーション• デバッグが容易

– 作動環境がサーバのみ– 基本的に複数の環境でテストする必要がない

• HTML, CSS, JavaScript は必要あり

• ユーザの手間– ブラウザがあれば実行できる

• モチベーション– 利用ユーザがリアルタイムにわかる– 最新のバージョンをすぐに使ってもらえる

Page 13: データベースを使用したウェブアプリケーションの開発 手法

Let's Enjoy

• Simple FON Maps– http://labs.ceek.jp/fon/

• FON– http://jp.fon.com/