3

html5オーディオ要素で再生するためにhttp経由でメディアファイルを提供するWebアプリケーションを作成しました。メディアファイルを提供する前に、サーバーはCookieが次のような現在のPHPセッションIDで提供されていることを確認します。

PHPSESSID = 3u90bfmqepd14s4rvslmrv69d1

IE / Firefox / Chromeはすべて、オーディオファイルのリクエストとともにCookieを送信しているようですが、OSX Safariでは、リクエストは別のユーザーエージェント文字列(「quicktime」を含む)で送信され、Cookieは送信されません。おそらくこれは、quicktimeがブラウザのオーディオ再生機能を処理するためですが、残念ながら、ブラウザに設定されたCookieは引き継がれません。

メディアファイルの要求とと​​もにクエリ文字列で渡すことができる一時的なアクセスコードをクライアントに発行する必要がありますか?または、この問題を回避する簡単な方法はありますか?

読んでくれてありがとう

4

1 に答える 1

3

別の認証フローを実装することで、この問題を解決しました。メディア ファイルに対する各リクエストは、クエリ文字列で認証トークンを送信するようになりました。このトークンは、ログイン時にユーザーごとに生成され、セッションの間有効です。

Cookie が設定されているか、有効な認証キーがクエリ文字列で渡された場合、メディア ファイルが提供されます。

セキュリティを強化するために、クライアント IP サーバー側に対してトークンを保存し、メディア ファイルをクライアントに提供する前に、トークンが生成されたのと同じ IP からリクエストが送信されたことを検証することを検討してください。

于 2013-04-16T16:57:57.690 に答える