web-dev-qa-db-ja.com

Windows Hostsファイルを使用して外部URLをサブドメインにリダイレクトしますか?

私はこの質問を投稿するつもりです。コミュニティが詳細または説明が必要だと判断した場合は編集します。

問題

今日は素晴らしいアイデアだと思ったものを手に入れました。私はAmazon.comをたくさん買い物します。アマゾンはあなたのすべての購入の一部が「アマゾンスマイル」と呼ばれるあなたの選んだ慈善団体に行くプログラムを提供します。 「smile.Amazon.com」(Amazon.comのサブドメイン)にアクセスして、慈善団体を「アクティブ化」することを選択できます。 「Amazon.com」と入力して「smile.Amazon.com」に自動的に移動するたびに、Windows 10のhostsファイルを使用してリダイレクトしたいので、私の慈善団体には常にメリットがあります。残念ながら、私が期待したように機能していません。

私が試したこと

まず、Notepad.exeを管理者として開きました。次に、メモ帳からhostsファイルを開きました(パス:)

C:\Windows\System32\drivers\etc\hosts

そして、以下のすべてを試しましたが、役に立ちませんでした。

  • 直接URL変換

    smile.Amazon.com Amazon.com

  • Smile.Amazon.comのURLを取得するためにCMDでpingを実行しました(54.239.26.123

    54.239.26.123 Amazon.com

  • Wwwサブドメインルーティングも追加しました

    54.239.26.123 Amazon.com 54.239.26.123 www.Amazon.com

  • どれも機能していないようです(_ Amazon.com_と入力すると、URLバーのアドレスが「smile.Amazon.com」に変更されません)が、あります。なんらかの証明書エラー。 Firefox、Chrome、SeaMonkey、IceDragonを含む4つのブラウザ(すべてのキャッシュをクリアする)を試しましたが、役に立ちませんでした。

  • これに従って サーバー障害 投稿、私はこれを試しました:

    • ipconfig /flushdns
    • ping smile.Amazon.com Pinging smile.Amazon.com [54.239.26.123] with 32 bytes of data: Request timed out.
    • C:\WINDOWS\system32>nbtstat -R Successful purge and preload of the NBT Remote Cache Name Table.

証明書/安全エラー

上記の変更を行った後、次のエラーが発生します。

クロム:

接続はプライベートではありません

攻撃者はwww.Amazon.comから情報(パスワード、メッセージ、クレジットカードなど)を盗もうとしている可能性があります。 NET :: ERR_CERT_COMMON_NAME_INVALID

「詳細」をクリックすると、次のようになります。

このサーバーは、それがwww.Amazon.comであることを証明できませんでした。そのセキュリティ証明書はsmile.Amazon.comからです。これは、設定の誤りまたは攻撃者が接続を傍受したことが原因である可能性があります。

とにかくクリックしてAmazonに進むと、ブラウザーがAmazon.comに移動し、次のURLに表示されます。

(https [取り消し線])://www.Amazon.com


私の質問

だから、私が知りたいのは:

  1. Amazon.comをsmile.Amazon.comにリダイレクトすることは、Windowsホストファイルを介してさえ可能ですか?
  2. どうすればできますか?

DNS解決とHTTPリダイレクトは完全に異なるものであり、このアプローチは間違っています。ローカルDNS解決をポイズニングして、「Amazon.com」解決を偽の「smile.Amazon.com」IPに強制すると、サーバー側でのSSL証明書、HTTPセッション、およびクロスサイトリクエストフォージェリの問題のみが発生します。

まず、SSL証明書。 Amazon.comとsmile.Amazon.comはサブドメイン固有の証明書を使用して提供されるため、ブラウザは、証明書名と一致しないURLリクエストが発生した場合にユーザーにエラーを表示します。したがって、「smile.Amazon.com」をバッキングするサーバーに「Amazon.com」リソースを要求すると、HTTPリクエストが実行される前であっても、証明書名が一致しないため、ブラウザから警告が表示されます。もちろん、これを無視することはできますが、アプリケーションロジックをサポートするJavaScriptがクロスドメインリクエストの存在下にない場合があり、Webが完全に役に立たなくなります。

次に、SSLの問題をなんらかの方法で回避すると、ブラウザはsmile.Amazon.comにリクエストを送信してAmazon.comのコンテンツを要求します。これにより、サーバー側であらゆる種類のセキュリティメカニズムが発生し、そのようなクロスサイトが拒否されます。リクエスト。

そして最後に、サーバー側のセッション管理、認証、Cookieの検証などに関するあらゆる種類の問題が予想されます。

4
ma.tome

Chromeユーザーの場合:これは問題の解決に役立つ可能性があります:

SmileAlways は、Chrome自動的に smile.Amazon.com にリダイレクトする拡張機能です。

2
maxskybarger

Amazon.comとsmile.Amazon.comはどちらも複数のIPアドレスでホストされているため、hostsファイルを定期的に更新する必要がある場合があります。

また、Amazonがホストヘッダー(ブラウザーで記述したドメイン)を使用して、アクセスしようとしているサイトを検出している可能性もあります。そのため、別のアプローチが必要だと思います。ローカルウェブサーバーを(自分のコンピューター上またはどこかでホストされている)セットアップできる場合は、そのウェブサーバーに、smile.Amazon.comへのリダイレクトを行うAmazon.comダミーウェブサイトをホストさせてから、ホストファイルの1つのエントリ:

<ip-of-local-webserver>    Amazon.com

ウェブサーバーがリダイレクトを行うため、ブラウザでAmazon.comを作成するたびに、ブラウザはsmile.Amazon.comにリダイレクトされます。これにより、証明書の警告もなくなります。

1

URLを別のURLにリダイレクトする解決策を探していたところ、このスレッドが見つかりました。私の発見は他の人にも役立つと思いました。それがあなたの質問への直接の答えではなくても、それでも問題の解決策です。

Windowsでhostsファイルを編集する代わりに、Firefoxの場合は Redirector 、Chromeの場合は Redirector のようなプラグインを使用することをお勧めします。

たとえば、生産性向上の目的で、不要なWebサイトを閲覧できないようにしたり、新しいサービスを強制的に使用したりするのはすばらしいことです。リダイレクタを使用してhotmail.comの使用を停止し、他の習慣を変更せずに、たとえば別のカスタムサービスを使用することを想像できます。

1
Jonas Hopp
  1. NBTSTATはNetBIOSツールであり、DNSとは関係ありません。

  2. Amazon.comをホストファイル経由でsmile.Amazon.comのIPアドレスに解決する場合は、ホストファイルエントリを追加した後、smile.Amazon.comではなくAmazon.comにpingします。目標は、Amazon.comをsmile.Amazon.comのIPアドレスに解決することです。したがって、Amazon.comという名前は、smile.Amazon.comのIPアドレスに解決されることを確認するためのテストで使用する必要がある名前です。 。

  3. Smile.Amazon.comのIPアドレスを使用してAmazon.comのhostsファイルにエントリを追加し、Amazon.comにpingを実行すると、smile.Amazon.comのIPアドレスが返され、hostsファイルが機能します。いずれにしても、ブラウザーがAmazon.comにアクセスするように指示している場合、ホストファイルとは関係ありません。

0
joeqwerty

ここには少し混乱があると思います。次の行は必要ありません。

smile.Amazon.com Amazon.com
54.239.26.123 Amazon.com

ただし、Amazon.comアドレスをsmile.Amazon.comのIPにリダイレクトするのはこれらのみです。

54.239.26.123 Amazon.com
54.239.26.123 www.Amazon.com

しかし、それも機能しません:

1st:IPアドレスを使用しているため、NIC/NAT/Gateway、一方[〜#〜] url [〜#〜]そのIPアドレスの背後にあるWebサイト内のwebpage。たとえば、youtube.comを解決してから、そのIPアドレスを手動で開こうとすると、www.google.comに到達します。これは、両方が同じアドレスの背後でホストされ、URLで識別されるためです。したがって、両方が54.239.26.123の背後でホストされており、それらに到達する唯一の方法はURLであり、これをAmazon.comに置き換えたと想像してください。つまり、Amazon.comにアクセスします。

2nd:smile.Amazon.comが別のサーバーでホストされているとします。 SSL/TLS証明書はURL​​に対して発行されます。場合によっては、address.comの代わりにwww.address.comを使用してWebサイトにアクセスしても、証明書は後者に対してのみ発行されるため、証明書エラーが発生します。したがって、smile.Amazon.comのアドレスを使用してAmazon.com向けのIPにアクセスしようとすると、証明書のセキュリティ警告が表示され、セキュリティ例外を追加する必要があります。

申し訳ありませんが、私はWebサービス/ホスティングの専門家ではありません。私はそれを説明するために最善を尽くしました。

0