Sessionを利用したForm認証

メッセージ

v1.5.0及び標準状態の認証方法はBasic認証のみである。認証方式の拡張性を高めるため、ユーザー名・パスワードをHTML Formで入力するForm認証を導入する。

一度ユーザー名・パスワードでログインした後は、Sessionによってその状態を維持する。

Sessionについて

動作仕様の変更

1.5.0のBasic認証の場合、ログイン状態(有効なユーザー名・パスワードの組み合わせを送信したリクエストの処理中)であっても、そのユーザーのアクセス権のないリソースへのアクセスが必要になったタイミングで 401 Unauthorized を返していた。ブラウザ上では認証情報を再入力するダイアログが表示される。 こうなるとBasic認証サインイン状態が解除されてしまう(アクセス権があったリソースへのアクセスも、再度パスワードの入力が必要になる)

また、Form認証では原理上同じ動作はできないため、この部分の動作を次のように変更する。

Basic認証の場合でも、有効ユーザー名・パスワードの組み合わせが送信されていれば、そのユーザーでのログイン状態を維持し、401 Unauthorized を返すことをしない。そのユーザーでのアクセス権限の無いリソースへアクセスした場合には「アクセス権がない」旨の表示を行う。

セキュリティの考慮

Basic認証ではリクエスト毎にユーザー名とパスワードが送信されるが、Sessionによるログイン状態の保持であればパスワードの送信は一度きりとなる。

Form認証であってもログイン状態でサイト上でできることは変わらないため、ブラウザとSessionを結びつけるキー(PHP session ID)はパスワードと同程度に秘匿する必要がある。セッションハイジャック等の攻撃に注意する。

対応

実行時設定 php.net:manual/ja/session.configuration.php

ini_set('session.use_strict_mode', 1);
ini_set('session.use_cookies', 1);
ini_set('session.use_only_cookies', 1);

$_SESSIONの扱い

session_regenerate_id(true)を利用するため、session機能を使う場合は PHP5.1以降での動作が必要、とする。

Form認証を有効にする手順

実装

osdn.jp:projects/pukiwiki/scm/git/pukiwiki/tree/branch_r1_5/




トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2016-02-25 (木) 23:42:49
Site admin: PukiWiki Development Team

PukiWiki 1.5.4+ © 2001-2022 PukiWiki Development Team. Powered by PHP 8.2.12. HTML convert time: 0.239 sec.

SourceForge