【问题标题】:Is there any standard URL for detecting presence of captive portal?是否有任何标准 URL 用于检测是否存在强制门户?
【发布时间】:2018-12-20 09:41:35
【问题描述】:

我正在编写一个应用程序,其中我想检查用户是否连接到接入点,但不允许网络访问(由于存在强制门户)。

以下 URL 是 Microsoft 的测试服务器,如果一切顺利,则返回 HTTP 200 ,内容为“Microsoft Connect Test” http://www.msftconnecttest.com/connecttest.txt

为了将状态返回给用户,我想再次检查另一台测试服务器,它会在 HTML 响应中返回一些内容。

Google 有一台测试服务器为“http://connectivitycheck.gstatic.com/generate_204”,但这会给出空的 HTML 响应。

Mozilla 和 Apple 提供了一些服务器,但都在 HTML 响应中返回“SUCCESS”。

为什么我不喜欢在 HTML 正文中仅返回“SUCCESS”的任何测试服务器,因为它不允许我测试内容篡改攻击的场景。

如果您知道任何其他标准服务器来测试强制门户,请回复...

~阿什

【问题讨论】:

    标签: network-programming captivenetwork captiveportal


    【解决方案1】:

    要知道您已连接到尚未通过身份验证的强制门户,您可以使用任何 https(基于 SSL/TLS 的 http)URL,因为强制门户将无法完成正确的握手,因为它没有与已由已知根 CA 或中间 CA 签名的有效 X.509 证书关联的密钥。此外,这可以保护您免受内容篡改攻击。

    通过强制门户网站的身份验证后,您可以检查强制门户网站是否使用具有 HTTP/1.0 协议的任何 http URL 的透明代理,因为大多数强制门户网站都会查找“主机:”标头(出现在HTTP/1.1) 能够获取您想要连接的真实主机。

    【讨论】:

    • 感谢您的回复,但实际上我正在寻找一个可以生成一些文本以响应 HTTP 请求的 URL。例如msftconnecttest.com/connecttest.txt 生成“Microsoft Connect Test”作为响应。返回的文本帮助我验证连接的接入点上是否正在发生任何内容篡改攻击。
    • 我得到了另一个被 Debian Linux network-test.debian.org/nm 使用的 HTTP 服务器,它会生成一个文本“NetworkManager is online”作为回报。但我不确定这个测试服务器有多可靠,因为我的应用程序用户分布在世界各地,很容易在一秒钟内同时收到数千个请求。
    • 为了避免内容篡改攻击,为什么不干脆用https代替http呢?
    • Https 流量通常被强制门户阻止。我想要一些 http trafiic,它会产生除 success 之外的响应。许多服务器 lile apple 和 mozilla 正在生成成功的 http 响应。但是这些服务器不能使用,因为成功词很常见,很容易出现在内容篡改页面或自定义 html 页面中,AP 可以返回给用户进行身份验证
    • 由于“https 流量通常被强制门户阻止”,这似乎是检测强制门户是否存在的好方法。您要求“用于检测是否存在强制门户的 URL”,那么为什么不使用 https?
    【解决方案2】:

    我知道这是一个非常古老的问题,但我可能会为其他登陆这里的人提供一些额外的信息。

    虽然 Google generate_204 链接似乎没有返回任何内容,但它实际上返回了 204 状态。如果您的连接上有一个强制门户,您将不会收到 204 回复。

    我们在应用程序中使用它来检测强制门户,它运行良好。我们的 API 上有一个“Hello”端点,它返回 204。

    【讨论】:

      猜你喜欢
      • 2016-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-20
      • 2014-08-24
      • 1970-01-01
      • 1970-01-01
      • 2012-03-14
      相关资源
      最近更新 更多