web-dev-qa-db-ja.com

外部イメージのリクエストが、イメージをホストしているサーバーにIPを公開しないようにするにはどうすればよいですか?

サーバーAがあり、AでホストされているウェブサイトWがあるとします。WのHTMLには次のものが含まれます。

<img src=https://www.domainD.com/testT.jpg>

次に、WにアクセスするコンピュータCがあります。

コンピュータCdomainDtestT.jpgを直接尋ねますか?または、AにtestT.jpgを要求し、次にAがdomainDtestT.jpgを要求し、データをCに送り返しますか?

テスト結果から、前者のケースです。

CがサーバーにtestT.jpgを直接要求した場合、サーバーはCのIPを簡単に知ることができます。これを防ぐにはどうすればよいですか?

2
Voyager

HTTPはハイパーテキスト転送プロトコルです。ハイパーテキストは、さまざまなソースからの情報を集約する機能を表します。 WebページでURLを宣伝すると、ブラウザはそのURLを使用して情報を取得します。これはプロトコルに固有のものです。ここで完全に停止します。

しかし、遠くのリソースのローカルURLをアドバタイズできます。これはリバースプロキシと呼ばれます。優れたhttpサーバーには、そのためのオプションが必要です。 Apacheでは、mod_proxyには、ProxyPassディレクティブで必要なすべてのものが含まれています。

その後、以下を使用できます。

<img src=/domainD/testT.jpg>

そしてApache configでは:

<Location "/domainD/">
    ProxyPass "https://www.domainD.com/"
</Location>

ここでは、ブラウザーはローカルURLしか認識しないため、ユーザーのサーバーに要求を送信し、そのサーバーは実際のリソースの要求を送信してクライアントブラウザーに送り返し、元のクライアントIPを隠します。

1
Serge Ballesta

あなたの例では、コンピュータCはドメインDに直接アクセスして、イメージを取得します。

あなたの質問で述べたように、それはexternalリソースです。つまり、ウェブサイトWはそのホストのコンテンツを制御できません。 @ Tobi-naryが彼の答えで述べたように、クライアントは自分自身を保護しようとすることができます。

もう1つのオプションは、Webサイトでリソースをホストし、ドメインDとのやり取りを完全に回避することです。これが可能であれば、ユーザーだけでなくすべてのユーザーを保護するので、これは私の観点からは最良のオプションです。 「リスク」を認識しています。

サーバー側の防御については、@ Serge-Ballestaが最良の答えを与えたと思います。

すべてをまとめると、これらはあなたのオプションです:

  1. コンテンツをセルフホストします。 (サーバ側)
  2. サーバーがユーザーのコンテンツを取得できるようにする(サーバー側)
  3. TOR(クライアント側)を使用する
  4. プロキシを使用する(クライアント側)
  5. VPNを使用する(クライアント側)

これを行うにはいくつかの方法がありますが、最初の最も明白な方法はVPNですが、これによりサーバーAからIPが隠されます。

もう1つの方法は、ブラウザーのプラグインを使用して、リンクや外部リソース(ページから投稿したものなど)を削除することですが、サイトを非常に見にくくし、多くの機能を失うリスクがあります。

ホワイトリストとブラックリストを追加してプラグインを構築することもできますが、多くの手間がかかります。

VPNは私の意見では最善の策でしょう。

0
TheHidden

ブラウザは、指定されたタグのurlに直接アクセスして、画像を取得します。

  1. サーバーを制御している場合は、@ Serge Ballestaの提案に従ってプロキシを設定できます。このようにして、たとえばserverAurlを要求します: https://www.domainA.com/testT.jpg そしてサーバーはdomainDへのリクエストを処理し結果をあなたに返します。
  2. クライアントとして、インターネット上で一部のLinuxマシンをレンタル(または試用クレジットを使用)し、socks proxy。このようにして、すべてのリクエストはsocksプロキシサーバーIPから送信されます。

ここでソックスプロキシをセットアップする方法を確認してください: https://ma.ttias.be/socks-proxy-linux-ssh-bypass-content-filters/

0
johnymachine

インターネットに直接接続しているデフォルトのブラウザーは、実際にsrcタグで指定されたサーバーに問い合わせます。

基本的に求めているのは、閲覧トラフィックを匿名化または難読化する方法であり、さまざまなオプションがあります。

  1. [〜#〜] tor [〜#〜]

    [〜#〜] t [〜#〜]he[〜#〜] o [〜#〜] nion[〜#〜] r [〜#〜]外部は(SOCKS)プロキシとして機能し、異なるノードを介して要求します。サーバーはクライアントIPを認識しませんが、TOR出口ノードの1つを認識します。ブラウザープラグインを使用すると、特定のドメインをホワイト/ブラックリストに登録して、一部のドメインでオプションでTOR(またはプロキシ、2を参照)を使用しないようにすることができます。

  2. プロキシ

    プロキシIPは表示されますが、クライアントIPは表示されません。ただし、ほとんどのプロバイダーはログを保持しています。これらは、リクエストを追跡するために使用できます(たとえば、そのリクエストに違法なコンテンツが含まれている場合)。特定の設定によっては、DNS要求がマシンから送信される場合があります。

  3. VPN

    すべてのトラフィックはVPNプロバイダーを介してルーティングされます。 VPNプロバイダーのIPがサーバーに表示されます。警告:プロバイダーのログ(2を参照)。

0
Tobi Nary