PHPのセッションセキュリティ

PHP で責任あるセッションセキュリティを維持するためのガイドラインは? Web上には様々な情報がありますが、そろそろ1つの場所にまとめてもいい頃です!

一つのガイドラインは、セッションのセキュリティレベルが変わるたびに session_regenerate_id を呼び出すことです。 これはセッションハイジャックを防ぐのに役立ちます。

解説 (0)

大きな問題のひとつは (PHP 6 で解決されようとしている) register_globals だと思います。現在、register_globals を避けるために使われている標準的な方法の一つは、 $_REQUEST, $_GET または $_POST 配列を使用することです。

これを行うための正しい方法(5.2時点では少しバグがありますが、近日公開予定の6では安定しています)は filters を使用することです。

ですから、代わりに

$username = $_POST["username"];

を実行することになります。

$username = filter_input(INPUT_POST, 'username', FILTER_SANITIZE_STRING);

とかでもいいんです。

$username = filter_input(INPUT_POST, 'username');
解説 (3)

これは非常に些細で明白なことですが、使用後は必ず session_destroy を実行するようにしてください。ユーザーが明示的にログアウトしない場合、これを実装するのは難しいので、タイマーでこれを行うように設定することができます。

setTimer()とclearTimer()についての良いチュートリアルがあります。

解説 (0)