web-dev-qa-db-ja.com

FirefoxはどのようにしてISPログインページを認識しますか?

インターネットにアクセスするには、プライベートIPv4アドレス(192.168.xx.xx)であるISP提供のログインページにログインする必要があります。そのアカウントにログインせずにFirefoxを開くと、「インターネットにアクセスするには、このネットワークにログインする必要があります」という通知が[ネットワークログインページを開く]ボタンで表示されます。このボタンをクリックすると、ISPログインページが開きます。これがその通知のスクリーンショットです。

firefox-notification

では、私の質問は、Firefoxがログインページのアドレスをどのようにして知ることができるかということです。

91
Biswapriyo

では、私の質問は、Firefoxがログインページのアドレスをどのようにして知ることができるのかということです。

実際にはそうではありません。

ISPは Captive Portal と呼ばれるテクノロジーを使用しています。キャプティブポータルは、ブラウザのHTTPリクエストを「何らかの形で」乗っ取り、ログインポータルにリダイレクトすることで機能します。

この「どういうわけか」は、さまざまな方法で実現できます。たとえば、

  • HTTPリダイレクト
  • ICMPリダイレクト
  • DNSハイジャック

次に、ブラウザは、よく知られているWebページを取得しようとし、返された応答が期待している応答か他のものかを確認することで、この「ハイジャック」を検出しようとします。このような「ハイジャック検出システム」が使用するページの例をいくつか示します。

グーグルはそれがどのように動作するかについてのヒントを与えます:ウェブサーバーは HTTP 204 コンテンツなしステータスコード で応答します。ただし、キャプティブポータルはwillがコンテンツを返す(それ以外の場合は役に立たない)ため、204ステータスコードで応答することはありません。ほとんどの場合、 7 Temporary Redirect を使用して、ブラウザに別のURI(キャプティブポータルログインページのURI)をフェッチするように指示します。

他のものは、よく知られた内容の小さな文書を代わりに使用します(例えば、Appleは単に「成功」​​という単語を含んでいます)。

ハイジャックの検出は、実際にはブラウザで実行する必要はありません。最新のデバイスのほとんどは、オープンWiFiに接続するたびにこの「キャプティブポータルハイジャック検出」を自動的に実行し、ダイアログを自動的にポップアップして、ブラウザーを明示的に開いてWebページにアクセスしなくても、キャプティブポータルに移動できるようにします。 。

この理由は、現代のインターネットの世界では、ブラウザは必ずしもユーザーがインターネットを使用しようとする最初のアプリではないためです。たとえば、Facebookクライアント、WhatsApp、電子メールクライアントなどです。

「ハイジャック」という用語を意図的に使用したことに注意してください。これらのテクニックは実際には基本的に中間者攻撃を実行しています。 (違いは、「本物の」攻撃者は、アクセスしたいWebサイトに正確にリダイレクトし、偽のWebサイトにユーザー名とパスワードを入力させるように誘導することです。)したがって、これらの手法は、 「安全でない」Webサイト、つまり SSL/TLS を使用しないWebサイト(つまり、https://)、 HTTP Strict Transport Security(HSTS) などは使用しません。

only HTTPS(TLS)を介してアクセスできるWebサイトが増えているため、これは問題になり始めています。最新のブラウザーは、URIバーに何を入力したかに関係なく、WebサイトがHTTPSをサポートしていて、HTTPSバージョンを使用するかどうかを記憶しています。 HSTSなどの手法は、ブラウザがalwaysが暗号化されたバージョンのWebサイトを使用することを保証します。 HTTP/2やHTTP/3などの新しいバージョンのHTTPプロトコルは厳密にはrequire暗号化していませんが、すべての主要なブラウザベンダーはHTTPS接続用にのみ実装することを決定しています。

たとえば、FacebookまたはSuperUserにアクセスしようとすると、ブラウザーは暗号化された認証済み接続を自動的に使用し、キャプティブポータルがブラウザーをログインページにリダイレクトしようとすると、ブラウザーはこの操作を検出してエラーをスローします。通常、これで十分ですが、この場合、キャプティブポータルにログインできなくなり、インターネットを使用できなくなります。

WiFiに接続しているときに問題が発生しても、アプリにエラーが表示されるか、無期限にロードされる場合、その理由はほぼ確実に、何らかの理由でキャプティブポータルにログインしていないことです。通知ポップアップが表示されなかった、検出に失敗した、などの理由が考えられます。

この場合、あなたがknowが「安全でない」、つまりHSTS、SSL/TLS、またはHTTP/2を使用していないWebサイトにアクセスすることで問題を解決できます(標準ではHTTPとHTTPS、ただしブラウザーベンダーはonly HTTPS for HTTP/2をサポートすることを決定しています)。上記のURIでうまくいくはずですが、ニースの人々がこの目的を正確に果たし、覚えやすいWebサイトが実際にあります。 http://neverssl.com/

NeverSSLは、その名前が示すとおり正確に実行します。これは、SSL/TLS、HSTS、HTTP/2、QUIC、または暗号化されていない、認証されていない、安全でない、プレーンHTTP /以外のものを使用しないことを唯一の目的とする、完全に役に立たないWebサイトです。 1.1、キャプティブポータルがリクエストを傍受し、ログインページにリダイレクトできるようにする。

157
Jörg W Mittag

この機能は、キャプティブポータル検出と呼ばれます。 Firefoxは http://detectportal.firefox.com/success.txt を取得しようとし、回答を記録します。リダイレクトがある場合、ログインページがあることを認識し、警告をポップアップします。

機能を説明し、必要に応じてそれを無効にする方法を示す簡単な記事は http://support.moonpoint.com/network/web/browser/firefox/detect_portal/ にあります。

55
ixs

完全な @JörgWMittaganswer に加えて、キャプティブポータルは、Wifi Allianceによって定義された WISPr プロトコルも実装します。これは、キャプティブポータルを実装するクライアント/ルーター/ APによって理解される必要があります。 。

これは、主要ベンダー、つまりCiscoとArubaのキャプティブポータル実装、およびPfSenseのキャプティブポータル実装にも存在します。

Firefoxはそれを理解しすぎており、WISPr自体が有名な自動Apple認証制限付きブラウザ(CNA)をトリガーします)(私のテストでは、リダイレクトだけでは、少なくともこれらのウィンドウをトリガーするには不十分です。 Apple機器)

実際のWISPrは、クライアントがHTMLタグとしてリダイレクトされるメインページにあり、ログインページ、ログアウトページ、および中止ページのURLを定義します。また、これらのURLによって生成されたページのステータスコードも定義します。

のように:

<!-- WISPr message -->^M
<span class="displayNone"><!--<?xml version="1.0" encoding="UTF-8"?>^M
<WISPAccessGatewayParam xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.acmewisp.com/WISPAccessGatewayParam.xsd">^M
<Redirect>^M
<AccessProcedure>1.0</AccessProcedure>^M
<LoginURL>https://xxxx/captive/noswifi?hmac=xxxx&amp;res=notyet&amp;uamip=xxxx&amp;uamport=80&amp;userurl=&amp;challenge=xxxxxxe&amp;nasid=BC-14-01-XX-XX-XX&amp;mac=00-15-AF-XX-XX-XX</LoginURL>^M
<AbortLoginURL>http://xxxx:80/captive/logoff</AbortLoginURL>^M
<MessageType>100</MessageType>^M
<ResponseCode>0</ResponseCode>^M
<AccessLocation>FonZON:PT</AccessLocation>^M
</Redirect>^M
</WISPAccessGatewayParam>-->^M
</span>

キャプティブページを実装/処理する方法の詳細(および手がかり)については、他の回答を参照してください。

FON認証ポータルからのWISPrタグの取得

Apacheを使用したキャプティブポータルの実装

キャプティブポータルの検出、ポップアップの実装?

関連:

MacOSでCNAを無効にする

テキストモードでキャプティブポータルを使用する方法

PS興味深いことに、一部のCPE /ケーブルモデムでは、インターネット接続がない場合や起動時に、ブラウザでWISPrを使用してエラーメッセージをブラウザに表示しています。

28
Rui F Ribeiro