0

オンラインクレジットカード決済を扱うサイトを作りました。支払いプロセスの一環として、クレジットカードデータを検証するために外部のセキュリティサービスと連携するiframeが私のサイトに必要です。フォームの投稿で使用する特定の情報をこのiframeに渡す必要があります。次のように、このiframeで関数を呼び出すことにより、自分のサイトからこれを行います。

var frame = window.frames["SecureFrame"];
frame.SetInnerFormValues(...);

これは私の開発環境では正常に機能します。ただし、私のサイトは、クライアントサイトでもiframeとして実行する必要があります。したがって、最終的に、クライアントサイトには支払いインターフェイスを指すiframeがあり、安全なサービスを指すiframeがあります。もちろん、これらのiframeは両方ともSSLを使用しています。

これにより、クライアント側の複数のネストされたフレームで問題が発生するようです。(まあ、Chromeは正常に動作しますが、Firefoxは動作しません)

エンドユーザーがクライアントサイトにいる場合、上記のJSコードを実行するとエラーが発生します。Firefoxは、「TypeError:frame.SetInnerFormValuesは関数ではありません」というエラーをスローします。JSコンソールでコードを実行して、セキュアフレームでこのSetInnerFormValues関数にアクセスしようとしましたが、何かにアクセスしようとすると、「エラー:プロパティ'...'へのアクセスが拒否されました」というメッセージが表示されます。最初に自分のサイト。

どうか、忍者のSO、私はあなたの助けが必要です!

4

1 に答える 1

0

iFrame は別の Web サイトから読み込まれるため、通常の JavaScript 関数呼び出しを行うことはできません。それがクロスサイトスクリプティング (XSS)です。ユーザーの情報を安全に保つために、SSL で保護された (https:) POST 要求に応答するインターフェイスをサーバーにセットアップする必要があります。

于 2013-03-11T14:52:34.663 に答える