セッションが PHP でどのように機能するかを理解しようとしていたところ、セッション データはデフォルトでファイル システムに保存されていることがわかりました。共有ホスティング環境では、任意のユーザーが作成した PHP スクリプトでセッション データを読み取ることができます。どうすればこれを防ぐことができますか?
5 に答える
スクリプトのセッション保存ハンドラーをオーバーライドして、データベースや memcache などのファイルシステム以外のものを使用できます。詳細な実装は次のとおりです: http://phpsec.org/projects/guide/5.html
session_save_path()を使用して、セッションデータディレクトリを共有されていないディレクトリに変更できます。
session_save_path() を使用して、「/htdocs/storage/sessions」のようにセッション フォルダーを変更します。セッションは指定されたパスにのみ保存されるようになりました。
php.ini ファイルへのアクセスのレベルによって異なります。suPHP を実行し、(たとえば) 独自の php.ini ファイルを持つことができる共有ホスティング環境を使用している場合は、セッションを設定するだけです。 save_path を、通常共有される /tmp ではなく ~/tmp のようなパスに変更します。
そもそも、他のアプリケーションから実際にphpセッションデータを読み取ることができるとは思いません。それは、見る人に特有のものだと思います。
最後に、php セッション データはファイル システムに保存されるだけではありません。また、ユーザーのマシンの Cookie に保存するように設定することも、データベースに保存するように php セッション データを設定することもできます。
独自の SESSION ラッパーを作成します。
たとえば、CodeIgniter のセッション ライブラリは PHP のネイティブ ライブラリに依存せず、より安全です。
注: Session クラスはネイティブ PHP セッションを使用しません。独自のセッション データを生成し、開発者により多くの柔軟性を提供します。