Version 2, last updated by Hisashi Horikawa at July 28, 2010 00:18 UTC

Wafuは、ごくごく小さなWebアプリケーションフレームワークです。

特徴

1. CGIで動作できる
Webサーバが動いていれば、root権限なしにアプリケーションを配備できます。共用サーバなど制限の厳しい環境で動かすために開発しました。

CGIを前提として、Webブラウザからのリクエストの度にアプリケーションプロセスが起動されても、まともな時間で動くようにしています。ただし、スループットは重視していません。

アプリケーションを常駐できる環境であれば、普通にRuby on Railsなどを使ったほうがいいと思います。

2. pathベースのルーティング
URLのパターンにマッチングするものをコントローラに配分します。次のように書きます。
Application.routes do
  # クラス名を省略すると、(先頭大文字 + "Controller") とみなす
  resource "users"

  resource "spaces", :falldown => (lambda {
    match "/:space_id", 
          :filters => ["LoginRequired"] do
      resource 'cashes'
      resource 'invoices'
      resource 'partners'
      resource 'gl', :controller => 'general_ledger'
      resource 'reports'
    end
  })
3. セキュリティ
次の攻撃への対策を最初から組み込んでいます。
  • session fixation ... URLのクエリパラメータからセッションIDを取得しない、セッションIDの適切な取り扱い
  • CSRF ... フォームに(セッションIDではない)トークンを埋め込む
  • クロスサイトスクリプティング (XSS) ... HTML生成時に自動的にエスケープ

SQLインジェクションについては、Wafuの範囲外ですが、ActiveRecordなどを利用すれば大丈夫です。