gallu’s blog

エンジニアでゲーマーで講師で占い師なおいちゃんのブログです。

チェックは「使う直前」って何度言えば…

ここ。
第12回 Webサイトからの顧客情報流出(後編)
http://itpro.nikkeibp.co.jp/article/COLUMN/20071025/285475/


サニタイズ(ってか正確にはエスケープ)は

  • 使う直前に
  • 使う目的に合わせて

と、何度言っても*1こ〜ゆ〜記事がはびこるのは何でなんだろう?

メンテナンスできないWebサイトは閉鎖してしまった方がよいと言いたいところじゃが,そうもいかんじゃろうなあ。そういうときは,「Webアプリケーション・ファイアウォール」を使うのがよいじゃろう。

リファクタしなさいリファクタ。
…いやまぁコスト的に見合わないってのもわかるですが現実問題。
記事的に

漏れなくチェックするには,アプリケーションが文字列を処理した後,データベース操作コマンドにはめ込む直前にチェックするのが望ましい。

とか

ただ,限界があることを承知で,補完的,あるいは暫定的に使うのであればそれでもよいだろう。

とか、フォローも書いてある。
あるけど…文章的に弱すぎ。


で、最後にあるまとめが

●Webアプリケーションは,クラッカがデータベースから情報を抜き取ったりする,SQLインジェクション攻撃に対する脆弱性を持ってしまいがちです。
●対策は,ユーザーからの入力値を文字列処理後にチェックすること。併せてログも取っておきましょう。

違う。
対策は「きちんとSQL発行直前にsqlエスケープ処理を施すこと。それが難しい場合リファクタを将来的に見据えつつ、最悪、場当たり的対処として「漏れがあることを前提に」入力値を文字列処理後にチェック、またはフィルタリングソフトを用いること。」


別に自分がベテランだとは思いませんが(古強者でもないし :-P)。
とはいえ、あちこちで言われている自明の理が割合にあっさりと横紙破りされているのを見るのは、ちょっと忍びないです。

*1:おいらだけじゃなくてほかのもっと高名な方々も含む