Webアプリケーションへの攻撃の基礎

Webアプリケーションファイアウォールの必要性(2)多様化するWebアプリケーションへの攻撃まずはこの@ITの記事をご紹介。それに対するツッコミが早速高木浩光@自宅の日記に掲載された。見過ごせない部分が多かったようだが、合わせて読めば知識にはなるだろう。
さて、先日俺は自社の新人教育としてWebアプリケーションセキュリティについての講義(というほど大した物ではないが)を行った。そこでまとめとして述べたのは以下の2点のみである。

  1. あらゆる入力を信用するな
    入力とはアプリケーションへの入力を指すのでクライアントからの情報のみならず、DBからの情報すら疑うことも考慮する。入力された値が想定範囲内に収まっているかを確認する必要がある。
  2. データの出力時はエスケープ処理を行うこと
    コマンドインジェクションもXSSも出力先のアプリケーション(DBやWebブラウザ)が出力文字列をコマンドであると理解することによって生じる。これらを防止するためには、コマンドであると認識でないようにすればよい。逆に言えば、そうしなければWebアプリケーションとして正常に稼働しないことを認識すべきである。

上記2点でフォローできない脆弱性として思いつくのはとりあえずCSRFがある。これはいかにして本人認証を行うかという問題である。簡単な対策はやはり秘密情報である(はずの)Cookieに記されたセッションIDをhiddenフィールドに埋め込み、POSTデータにも入れることだろう。
徹夜でもう書けん…誰か突っ込んでください。