0

ユーザーが「Remember me」オプションをチェックできるログインシステムがあります。ユーザーがそのオプションをチェックすると、session_id を Cookie に保存し、session_id、IP、ブラウザ情報などをデータベース セッション テーブルに書き込みます。そのため、ユーザーが戻ってきたときに、セッション テーブルに保存されている session_id/ip/browser/etc に基づいて、Cookie が偽造されていないことを確認します。

今では、多くのオーバーヘッドとデータベースの書き込みが発生する可能性があるようです。それほど多くのオーバーヘッドなしでそれを行うためのより良い安全な方法はありますか?

4

1 に答える 1

1

これはトレードオフです。データがデータベースに保存されていない場合、PHP がセッション データを保存するサーバーのローカル ファイルシステムにアクセスすることになります。別の言い方をすると、何が遅いのですか? 1 つのランダム アクセス データベース ヒットまたは 1 つのランダム アクセス ディスク ヒット?

ファイルシステムの内容に基づいて推測するよりも、ユーザーとそのセッションを追跡する方が簡単であるため、セッションをデータベースに保存する方がより洗練されたソリューションであることがわかりました。また、任意の時点でユーザーを手動でログオフしたり、ログオン セッションをシミュレートしたりできます (1 回限りのパスワード リセット)。

MySQL を使用している場合は、使用している「セッション」テーブルのエンジンを MEMORY に設定すると、ユーザー エクスペリエンスに影響を与えない非常に高速なルックアップが常に得られます。

于 2012-05-23T05:28:16.523 に答える