問題: ユーザーのホームページにダウンロード リンクを表示する必要があります。そのダウンロード リンクは、ユーザーがログインしている場合にのみアクセスできる必要があります。
しかし、本当の問題は、ユーザーのホームページとダウンロード リンクが別の Web サーバー上にあることです。
ダウンロード リンクを含むトークンを送信し、そこで検証する方法はありますか?
問題: ユーザーのホームページにダウンロード リンクを表示する必要があります。そのダウンロード リンクは、ユーザーがログインしている場合にのみアクセスできる必要があります。
しかし、本当の問題は、ユーザーのホームページとダウンロード リンクが別の Web サーバー上にあることです。
ダウンロード リンクを含むトークンを送信し、そこで検証する方法はありますか?
users server = serverA.com
your server = serverB.org
私が正しく理解している場合、問題は、ユーザーがサーバー A にのみログインしていて、サーバー B にはログインしていないことです。セッション状態を共有する方法はありません (データベースを介したセッション処理など)。
頭のてっぺんから、1つのオプションを考えることができます:
サーバー B はサーバー A に
手段を尋ねるだけです。サーバー A のリンクにはユーザーのセッション ID* が含まれています。次に、serverB はサーバー A にセッションが有効かどうかを尋ねます。
これらの 2 つのサーバー間の通信がなければ、それを行うことはできません。
* 注: セッション ID の代わりに、ランダム トークンを使用することをお勧めします。セッション ID は非公開にしないでください。
ユーザーが URL を共有するのを止めることはないので、他の誰かにファイルをダウンロードしてもらいたい場合は、単に URL を渡すだけで済みます。一方、悪意のあるユーザーは、自分のセッション ID を使用してこれを行うこともできます。
ダウンロードリンクで、ユーザー情報を含むフォームをターゲットサーバーに送信することができます。ログイン情報は非表示のフォーム フィールドの値としてページのソースに表示されるため、これを行うことにはセキュリティ上の影響があります。
2 番目のオプションは、セッション情報をデータベースに保存し、セッション キーを新しいサーバーに渡すだけです。これには、2 番目のサーバーが 1 番目のサーバーのデータベースにアクセスして、クエリを実行できる必要があります。多くのセキュリティホールを開くことなく、そのサーバーから読み取りアクセスでログインする権限を持つユーザー名を設定するだけで十分です。
最後に、ユーザー名を指定すると yes/no の応答を返し、ユーザーのログイン状態を確認する Web サービスを最初のサーバーにセットアップできます。2 番目のサーバーの受信リンクは、ユーザー名を受け取り、応答を作成する前にログイン状態を確認します。
ユーザーがリンクをクリックすると、ユーザーは自分のサーバーからあなたのサーバーに移動します。
そして、彼があなたのサーバーにログインしている場合、彼はあなたのサーバー上のファイルにアクセスしようとしているので、必要なチェックを行うことができます. リンクは他のサーバーに表示されますが。
つまり、ユーザーのログイン状態を維持するためにセッションを使用している場合、ダウンロード コードでセッションを開始するだけで十分でsession_start()
あり、ユーザーは既にログインしているセッションにログインする必要があります。