水無月ばけらのえび日記

bakera.jp > 水無月ばけらのえび日記 > セキュアなPHPアプリケーションを作成するための7つの習慣

セキュアなPHPアプリケーションを作成するための7つの習慣

2008年11月3日(月曜日)

セキュアなPHPアプリケーションを作成するための7つの習慣

公開: 2024年4月26日18時15分頃

徳丸さんツッコミシリーズ、「セキュアなPHPアプリケーションを作成するための7つの習慣」のサンプルがとんでもなく酷い (d.hatena.ne.jp)。「セキュアな PHP アプリケーションを作成するための 7 つの習慣 (www.ibm.com)」のサンプルコードがあんまりだというお話ですね。

個人的には、CSRFのサンプルコードが印象的でした。前置きとしてこう書かれていて……。

CSRF から保護するためには、フォームの投稿を検証するための習慣で使用する、ワンタイム・トークンによる手法を使います。また、$_REQUEST ではなく、明示的な $_POST 変数を使う必要があります。

以上、セキュアな PHP アプリケーションを作成するための 7 つの習慣 より

まあ、この記述の前半はそんなに間違っていないのですが、後半は微妙なところですね。何度も言っているような気がしますが、「$_REQUEST ではなく、明示的な $_POST 変数を使う」という手法は、CSRFの対策としては不十分です。

かつて実際にmixiがCSRFで攻撃され、意図しない日記が書き込まれてしまうという被害が発生したことがあります。そのときの攻撃は、POSTリクエストを送るものでした。「$_POST 変数を使う」とすればGETによる攻撃を防げますが、POSTで攻撃するのは簡単ですし、実際にPOSTで攻撃されたケースがあるわけで、根本的なCSRF対策にはならないのです。

そして、サンプルコードとして掲載されているのは、その「$_POST 変数を使う」例だけです。対策として有効なのは「ワンタイム・トークンによる手法」の方なのですが、肝心なこちらについてはサンプルが全くないという……。

関連する話題: CSRF / PHP / セキュリティ

最近の日記

関わった本など