web-dev-qa-db-ja.com

GmailのメールサムネイルURLがgoogleusercontent.comに変更されました

ユーザーが画像をアップロードするたびにシステムがあり、登録ユーザーのGmailにメールを送信します。しかし、電子メールでは、このようなものが表示され、サムネイルは表示されません。

enter image description here

要素を調べたところ、次のURLにリンクされているsrcが見つかりました:https://ci5.googleusercontent.com/proxy/VI2cPXWhfKZEIarh-iyKNz1j9q7Ymh8ty4Yz19lXh82RjSlACBzS0aRajfIj913uXAsX2ylcLEDs5FBsj4cR9TcU75Pw5djdHx4htxdCAQxs_ue1Q1wi5TV43uLLBpigpjH1xN747mUHSRdTBJmXQWFyykInJCRXicM1KhNk=s0-d-e1-ft#https://www.somedomain.com/files/1658/thumbnail_71JtDozxS1L._SY450_.jpg

明らかにGoogleプロキシによってキャッシュされています

ただし、https://www.somedomain.com/files/1658/thumbnail_71JtDozxS1L._SY450_.jpgにアクセスすることで、Googleユーザーコンテンツなしで画像を表示できます(画像を利用できないようにドメインをマスクしました)。

ブラウザのキャッシュをクリアしようとしましたが、問題は解決しません。どうすればgoogleusercontentをバイパスしたり、少なくともサムネイルを表示できるようにしたりできますか。

このリンクをチェックアウトします Gmailには画像が表示されません しかし、localhostを使用していないため、画像自体はローカルネットワークの外部からアクセスできます。

13
hades

Google Image Proxyの仕組み

Google Image Proxyはキャッシングプロキシサーバーです。画像リンクがメールに含まれるたびに、リクエストはまずキャッシュされているかどうかを確認するために最初にGoogle Image Proxyに移動します。キャッシュされている場合はプロキシから提供するか、フェッチしてキャッシュします。

ほとんどの問題の解決策

次の画像の場合、Google Image Proxyサーバーは画像を取得します。

  • .png.jpg/.jpeg、または.gifのような拡張子のみがあります。 .webpの場合もあります。しかし .svg ではありません。
  • ?id=123のような画像URLでクエリ文字列部分を使用しないでください
  • 画像に直接マッピングされるURLがあります。
  • 長い名前はありません。

画像サーバーの要件:

  • 画像サーバー/プロキシサーバーからの応答には、Content-Type: image/jpegなどの正しいヘッダーを含める必要があります。
  • ファイル拡張子とcontent-typeヘッダーは同じタイプでなければなりません。
  • サーバー応答のステータスコードは、403、500などではなく200である必要があります。

何が役立つのでしょうか?

Googleサポートの回答

画像URLプロキシホワイトリストを設定する

ユーザーがメールメッセージを開くと、GmailはGoogleの安全なプロキシサーバーを使用して、これらのメッセージに含まれる画像を提供します。これにより、画像ベースのセキュリティの脆弱性からユーザーとドメインが保護されます。

イメージプロキシのため、内部IPに依存するイメージへのリンク、および場合によってはCookieが破損します。画像URLプロキシホワイトリスト設定では、プロキシ保護をバイパスする内部URLのホワイトリストを作成および維持することにより、画像へのリンク切れを回避できます。

イメージURLプロキシホワイトリストを構成するときに、一連のドメインと、URLの大規模なグループを指定するために使用できるパスプレフィックスを指定できます。例については、以下のガイドラインを参照してください。

画像URLプロキシホワイトリスト設定を構成します。

  • サインインGoogle管理コンソール管理者アカウントを使用してサインインします(notは@ gmail.comで終わります)。
  • 管理コンソールのホームページから、Apps>G Suite>Gmail>Advanced settingsヒント:詳細設定を表示するには、Gmailページの下部までスクロールします。
  • 左側で、最上位組織を選択します。
  • Image URL proxy whitelistセクションまでスクロールします。
  • 画像URLプロキシホワイトリストパターンを入力します。一致するURLは、画像プロキシ保護をバイパスします。詳細と手順については、以下のガイドラインを参照してください。
  • 下部で、Saveをクリックします。

変更がユーザーアカウントに反映されるまで最大1時間かかる場合があります。 管理コンソール監査ログ で以前の変更を追跡できます。

イメージURLプロキシホワイトリスト設定を適用するためのガイドライン

セキュリティに関する考慮事項

イメージURLプロキシホワイトリスト設定を構成する前に、セキュリティチームに相談してください。イメージプロキシホワイトリスト保護をバイパスする決定は、慎重に使用しないとユーザーとドメインをセキュリティリスクにさらす可能性があります。

一般に、Cookieを介した認証が必要なドメインがあり、そのドメインが組織内の管理者によって制御され、完全に信頼されている場合、そのURLをホワイトリストに登録してもドメインは画像ベースの攻撃にさらされることはありません。

重要:イメージプロキシを無効にすることは推奨されません。このオプションは管理者に柔軟性を提供するために使用できますが、イメージプロキシを無効にすると、ユーザーが悪意のある攻撃に対して脆弱になる可能性があります。

画像URLパターンの入力

プロキシ保護をバイパスする内部URLのホワイトリストを維持するには、画像URLプロキシホワイトリスト設定に画像URLパターンを入力します。一致するURLは画像プロキシをバイパスします。

パターンには、スキーム、ドメイン、およびパスを含めることができます。パターンには、ドメインとパスの間に常にスラッシュ(/)が必要です。 URLパターンがスキームを指定する場合、スキームとドメインは完全に一致する必要があります。そうでない場合、ドメインはURLサフィックスと部分的に一致する可能性があります。たとえば、パターンgoogle.comwww.google.comと一致しますが、gle.comとは一致しません。 URLパターンでは、パスプレフィックスと一致するパスを指定できます。

重要:画像URLパターンを入力するときに実際のドメイン名を入力します。ドメイン名の後には、常に末尾のスラッシュ(/)を含めてください。

画像URLパターンの例

次のパターンは単なる例です。次のパターン:

http://rule_fixed_scheme_domain.com/
rule_flex_scheme_domain.com/
rule_fixed_subpath.com/cgi-bin/

...次のURLと一致します。

http://rule_fixed_scheme_domain.com/
http://rule_fixed_scheme_domain.com/test.jpg?foo=bar#frag
http://rule_fixed_scheme_domain.com
rule_flex_scheme_domain.com/
t.rule_flex_scheme_domain.com/test.jpg
http://t.rule_flex_scheme_domain.com/test.jpg
https://t.rule_flex_scheme_domain.com/test.jpg
http://rule_fixed_subpath.com/cgi-bin/
http://rule_fixed_subpath.com/cgi-bin/people

注:URLスキーム(http://)はオプションです。スキームを省略すると、パターンはどのスキームとも一致し、ドメインサフィックスの部分一致を許可します。

画像URLパターンのプレビュー

Previewをクリックして、URLが設定した画像URLパターンと一致するかどうかを確認します。画像のURLがパターンと一致する場合、確認メッセージが表示されます。画像のURLが一致しない場合、エラーメッセージが表示されます。

7
Bharata

Bharataにはこれに関するすばらしい詳細な回答がありますが、同様の問題で特定した追加を1つ追加したかっただけです。

犯人であることが判明したx-webkit-cspコンテンツセキュリティヘッダーがありました。それを削除すると、すべてが画像プロキシを介して機能しました。

Googleの回答は、x-webkit-cspは非推奨であり、代わりにContent-Security-Policyヘッダーを使用することでした。ただし、これは、サポートされていないヘッダーが単に無視するのではなく、致命的なエラーをスローするというバグのようです。

2
Mark Walker