2009-03-02 5 views
3

私はPHPベースのWebアプリケーションを構築しており、Flashベースのチャートエンジンを統合しています。 Flashチャートでは、データのAJAX要求を行う必要があります。このリクエストは、新しいユーザーエージェントとして認識され、それを識別するためのPHPセッションCookieが含まれていないため、失敗します。したがって、ログインページにリダイレクトされます。ブラウザのクッキー/セッションを共有するにはどうすればよいですか?

私はこの作業を行うためにいくつかのハックを読んだことがあります。これにはクエリ文字列にセッションIDを指定するなどのセキュリティホールがあります。 FlashとPHPをクッキーベースのセッション状態を自動的に共有して安全に保つにはどうすればよいですか?

答えて

0

フレックスチャートと話すにはExternalInterfaceを使用してください。一部のブラウザー関連の情報は、LoaderContextBrowserManagerクラスを経由して渡すこともできます。 AS3のドキュメントを少し掘り下げてください。

1

セッションクッキーが十分早期に開始されている場合は、OKである必要があります。私はJavaScript AJAXとFlashリクエストの間で共有されるクッキーと同様の問題を抱えています(AJAXも呼びたい場合は、先に進んでください:-))、JavaScriptがクッキーを早期に開始する要求を完了したことを確認して解決しましたFlashが要求を送信したときに、ブラウザにセッションCookieが既に存在するようになりました。

また、Cookieパスが「/」に設定されていることを確認することをお勧めしました。

JavaScriptを使用してHTML DOMに情報を保存してから、ExternalInterface呼び出しを使用してFlashオブジェクトから情報を取得することができます。しかし、あなたのFlashオブジェクトに少なくとも "allowScriptAccess = sameDomain"を設定するようにしてください。

2

IEでは、これはうまく動作しません。 firefoxでは、これを達成する唯一の方法は、セッションIDをフラッシュスクリプト(PHPプロセッサ)にPOSTし、それからセッションを復元することです。

+0

IDを正確にどのようにPOSTしていますか?私はそれをobject/embedのパラメータに含めることができると思いますが、POSTではなくGETとして返送されます。 – spoulson

-1

あなたは、1つのsession_idと、クライアントからのいくつかの情報(ex ip)を結合し、サーバーに格納されたキーとフラッシュからの要求で暗号化するキーである2つのパラメータを試してみることができます2番目のパラメータが2番目のパラメータに一致しないため、2番目のパラメータがクライアントの要求と一致するかどうかをチェックします。

1

Cookie:ヘッダでセッションIDを送信することに注意してください、またはGET HTTPディレクティブの引数フィールドには、セキュリティの違いはありません。

+1

ただし、クエリ行で送信すると、ブラウザの履歴とWebサーバーのログ(途中で任意のサードパーティのプロキシである可能性があります)に表示される場合があります。 'Referer'ヘッダーを介して完全に無関係のサイトにも終わる可能性があります。 –

+0

これが望ましい動作である場合、ソフトウェアは有効な懸念事項ではないように記述する必要があります。これは単にエンジニアリングに劣るだけです。 – Jotham

関連する問題