PHP で責任あるセッションセキュリティを維持するためのガイドラインは? Web上には様々な情報がありますが、そろそろ1つの場所にまとめてもいい頃です!
大きな問題のひとつは (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');
これは非常に些細で明白なことですが、使用後は必ず session_destroy を実行するようにしてください。ユーザーが明示的にログアウトしない場合、これを実装するのは難しいので、タイマーでこれを行うように設定することができます。
setTimer()とclearTimer()についての良いチュートリアルがあります。