データベースを使用したウェブア
プリケーションの開発手法
筑波大学 情報学類 吉田光男
アドバイザー教員: 天笠俊之 先生
[email protected]
ウェブアプリケーション開発
• ユーザ認証のためのテーブル設計
– セッション・ハイジャックの防止
• 複数ブラウザへの対応
– IE, Firefox, Opera
– Flash の利用
• ライブラリの利用
– CPAN, Web API
• キャッシュの利用
• バッファリング制御
ユーザ認証のためのテーブル設計
• ユーザ管理テーブル
– UserID, Email, Password
• セッション管理テーブル
– UserID, SessionID, IP, Expiration
• プライマリキーは int が原則
– UserID は int 型
セッション・ハイジャック
• セッション
– Cookie で SessionID のやり取り
• セッション・ハイジャック
– SessionID が他者に利用されることで発生
•
•
•
•
SessionID の推測
クロスサイトスクリプティング(XSS)
通信の傍受(Sniffer)
セッション固定攻撃(Session Fixation)
セッション・ハイジャックの防止
• SessionID を推測困難にする
– ユーザ固有情報を含めない
– 十分な長さのキーを(32文字)
• PHP 128bit / ASP 32bit
• 汚染チェック(Sanitize)
– 出力で行う
• 通信の暗号化(HTTPS)
• SessionID の配布はサーバが行う
– ユーザが SessionID を指定できない
• その他
– IP, Expiration
複数ブラウザへの対応
• ブラウザ・シェア(W3Counter より)
– IE 65%, Firefox 27%, Opera 1%
• HTML, CSS のブラウザ対応
– W3C 勧告に従う
– ブラウザ依存あり
• Ex: padding (IE では内側に)
• JavaScript / Ajax
– prototype.js の使用を検討
Flash の利用
• インタラクティブ・コンテンツの作成
• マルチプラットフォーム対応
– JavaAplet or Flash
– Flash 98%
• インタラクティブ・コンテンツの利用シーン
– Ex: 入力の簡略化
• Demo: バーコード認識
ライブラリの使用
• 開発スピードを上げる
– 車輪の再開発を避ける
– Perl CPAN, PHP PEAR
– ライセンスに注意
• サービス公開後
– ライブラリから自前関数への変更
• パフォーマンスの改善が見込めるのであれば
• トレードオフ
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
キャッシュ
• データのキャッシュ
– 取得したデータの再利用
• Web API を使用するときは重要
– 取得先サーバ負担の軽減
– 計算した結果を再利用
• 演算に時間がかかる処理を
– 全体のパフォーマンスの改善
• キャッシュはキャッシュじゃない
– ミラーコピー
バッファリング制御
• バッファリング
– バッファにデータをためる
– 全体のパフォーマンス改善のため
• ウェブアプリではバッファリングを OFF に
– ユーザの利便性 > 全体のパフォーマンス
– 処理内容の表示
– Ajax の作動中に画像表示
• 画像出してる時点でおかしいけど…
なぜウェブアプリケーション
• デバッグが容易
– 作動環境がサーバのみ
– 基本的に複数の環境でテストする必要がない
• HTML, CSS, JavaScript は必要あり
• ユーザの手間
– ブラウザがあれば実行できる
• モチベーション
– 利用ユーザがリアルタイムにわかる
– 最新のバージョンをすぐに使ってもらえる
Let's Enjoy
• Simple FON Maps
– http://labs.ceek.jp/fon/
• FON
– http://jp.fon.com/
ダウンロード

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