セキュリティに関しては、正しく指摘したように、クライアントからの情報を信頼することはできません。これは、そのようなページが呼び出されたときにサーバー側に保存する必要があることを意味します。
一般的な方法は、各クライアントに Cookie でセッション ID を与えることです。サーバー側では、すべての機密情報をそのセッション ID に関連付けることができます。セッション ID はランダムにする必要があります。シーケンシャルであれば、その値を変更して、他の誰かのセッションをランダムに乗っ取ることができるからです。
セッション識別子に関する情報を保存するには、複数の方法があります。PHP で最も柔軟で、おそらく実装が最も簡単なのは、組み込みのセッション サポートを使用することです。PHP がセッション ID を処理し、シリアル化可能なオブジェクトを$_SESSION
スーパーグローバルに格納できるようにします。セッションデータはサーバーの一時フォルダーに保存されることが多く、共有サーバーの場合、そのサーバー上の他のWebサイトが理論的にスヌープしてセッションデータを表示または操作する可能性があるため、これは問題のないソリューションです. もちろん、あなたがやっていることの影響が非常に小さい場合、誰かがあなたをいじるために同じサーバーをレンタルすることはまずありません. それでも、たとえば、OAuth プロバイダーは、OAuth トークンを$_SESSION
パブリック環境のストレージに保存しないことを推奨しています。
<?php
session_start();
// place anything you need to save between pages in $_SESSION
$_SESSION["foo"] = array("bar", "baz");
// until you unset $_SESSION["foo"], it will be available in every page that called
// session_start().
?>
session_destroy
ユーザーがログアウトするときに呼び出して、セッション データが必要以上に長く存在しないようにすることをお勧めします。
一方、MySQL などのデータベースに情報を保存することもできます。これは、個別のデータベース ユーザーまたは各サーバー ユーザー用の個別のデータベースを持たないホストから逃げる必要があるため、セキュリティ面で優れています。セッション情報。ただし、保存したいものをすべて保存するにはテーブル構造が必要なため、これはそれほど柔軟ではありません。