8

html5 オーディオ タグを介していくつかの mp3 ファイルを再生しようとしています。デスクトップの場合、これは (Chrome で) うまく機能しますが、モバイル ブラウザー (Chrome (Android の場合) も) になると、いくつかの問題があるようです。

いくつかのパスワードでストリームを保護したため、ストリーミング サーバーは特別な認証 Cookie (spring security remember-me) を見つける必要があります。しかし、どういうわけか、モバイル ブラウザは、オーディオ タグを介して mp3 ストリームにアクセスするときに、この Cookie を送信しません。ストリームの URL をアドレス バーに直接入力すると、すべて問題なく動作します。

失われた Cookie を検索しているときに、モバイル ブラウザーがすべての Cookie ではなく一部の Cookie (JSESSIONID など) を送信していることがわかりました。さらなる調査 (PHP を使用した簡単な PoC) により、モバイル ブラウザーは、HttpOnly フラグが設定された audio-tag を介した Cookie の送信を拒否しているように見えることが明らかになりました。だから私の質問は:

これは指定された動作ですか? モバイル版とデスクトップ版 (Chrome) で違いがあるのはなぜですか?クライアント側から動作を制御する方法はありますか?

4

2 に答える 2

10

私が見つけた HTTP パッケージをより深く調べると、Android ブラウザは mp3 ストリーム自体を要求するのではなく、これを stagefright (一部の Android マルチメディア クライアント) に委任することがわかりました。簡単な検索により、古い Android バージョン (4.0 より前) では、stagefright が Cookie を処理できないことが明らかになりました。

私自身のテストでこれが確認されました。古い stagefright (Android 2.3.x) は Cookie をまったく送信しません。ヨーロッパの S3 (android 4.1.2、stagefright 1.2) の stagefright は、httpOnly フラグを持たない Cookie のみを送信します。

したがって、どのソリューションを使用するかは、誰もが自分で決める必要があると思います。

  • httpOnly を有効にします: android はまったくアクセスできませんが、安全です
  • httpOnly を無効にします。XSS に対する安全性は低くなりますが、Android >4.0 では機能します。
  • Cookie 認証をまったく無効にします。安全ではありませんが、すべての場合に機能します

注: httpOnly を無効にするだけの問題は、アプリケーション全体が Cookie ハイジャッカーに対して脆弱になることです。別の考えられる解決策は、ストリーム用の特別な rememberme cookie (httpOnly なし) と、httpOnly を有効にした別の rememberme cookie を用意することです。

于 2013-05-06T18:57:36.500 に答える
0

私は同じ問題を抱えていて、Cookie の HttpOnly または Secure フラグを無効にしても、Android 4.2 および 4.4 クロム ブラウザの問題は解決しませんでした。

やっと原因がわかりました。値に特殊文字のコロン ( : ) やパイプ ( | ) などを含む Cookie がありました。その Cookie を特殊文字で無効にすると、Android 4.2 および 4.4 で動画が正常に再生されます。

これが誰かに役立つことを願っています。

于 2015-06-30T21:17:13.473 に答える