web-dev-qa-db-ja.com

iframeとユーザーを含むWebアプリ-セッションの処理方法

Iframeに入るアプリがあります。パートナーサイトはアプリケーションを使用できます-サイトにiframeを配置します。

パートナーサイトにはお金のあるユーザーがおり、iframeでアプリケーションを使用してアイテムを購入します。 iframeはパートナーサイトと通信する必要があります。

たとえば、ユーザーがアイテムを購入します。私たちのアプリは、データベース内の販売アイテムに関するレコードを作成します。

次に、パートナーアプリにリクエストを送信します。パートナーは、ユーザーがアイテムを購入したことを認識し、アカウントのお金を減らすことができます。

ユーザーはアプリにログインする必要はありません。パートナーアプリケーション-親サイトにログインし、ログインした状態でiframeを使用するだけです。

これは安全な方法でどのように行われますか?私はajaxリクエストに可視のトークンなしでそれを行うサイトがあるのを知っているので、おそらく子アプリにいくつかのセッションがあります。ユーザー名とパスワードを必要としないセッション。

スキーマ付きのチュートリアルをいくつか入手したいと思います。検索しようとしましたが、そのような質問のキーワードの作り方すらわかりませんでした。

更新

これについてはどうですか、潜在的に安全でない可能性があるものを見ていますか? :

パートナーページが読み込まれると、iframeが存在し、<iframe src='www.shop.com?token=12345'><iframe>のように、取得パラメータートークンがiframeに渡されます。

サーバー側でのロード時のiframe-URLにあるトークンをパラメーターとして$ _GETパラメーターとして渡し、パートナーサイトから新しいトークンをリクエストします。

そうすることで、iframe url getパラメーターのトークンが無効になるため、ユーザーがそれを見た場合でも、何もできません。

Iframesサーバーで受信した新しいトークンはセッションに保存されます。

したがって、クライアント側から-クライアントがiframeでアイテムを購入するときに、セッション中であるため、リクエストでトークンを渡す必要はありません。

Iframeサーバーはリクエストを受信すると、アイテムを購入し、アイテムの購入に関するリクエストをパートナーサーバーに送信します。これにより、パートナーはコストを削減できます。このリクエストでは、トークンがセッションからパートナーサーバーに渡されます。

パートナーサーバーはトークンによってユーザーを認識し、アカウント内の彼のお金を減らします。

14
Darius.V

まず、安全なアプリケーションをiframeに配置することは、私が知る限り、セキュリティの問題にさらされるため、良い考えではありません。他のすべてが正しく行われている場合、最大のものはおそらく clickjacking です。これが、ヘッダーオプション X-FRAME-OPTIONS を使用してiframeに読み込まれないようにする理由です。

次に、パートナーサイトと自分のサイトの間でiframe内で通信したいとします。 同じオリジンポリシー のため、2つの間の通信は非常に制限されています。 2つのWebサイトの場合、同じベースURLを使用しないでください。つまり、同じOriginを使用せず、直接対話することはできません。これは非常に良いことです。そうしないと、セキュリティ上の大きな問題が発生します。

ユーザーはアプリにログインする必要はありません。パートナーアプリケーション-親サイトにログインし、ログインした状態でiframeを使用するだけです。

サイトにログインするために必要なすべての情報を持っているため、すべてのパートナーサイトを100%信頼していると想定しています。それは事実ですか?

実行しようとしているログインのタイプは OAuth に似ています。サードパーティには、一部の情報にアクセスするためにサイトへの部分的なアクセスが許可されています。それはまさにあなたがやりたいことではありませんが、私はそれがどのように行われるかを見ます。

9
Gudradain