开发者生态
morning
我的域名在 GitHub Pages 上被滥用
2026-05-19
1 阅读
rmeertens
博客 我的域名在 Github Pages 上被滥用 2026 年 5 月 10 日过去几周,我穿越了非洲,几乎没有互联网。在某个时候,我收到了一封来自 Google Search Console 的电子邮件,内容涉及域 https://kafka.immersivepoints.com/ 的新所有者。奇怪……我的immersivepoints.com 域仅用于作为 GitHub 页面托管的一个网站。该网站适用于我的 3D 和 VR 点云可视化工具,实际上只是一个简单的托管 html 页面。这里肯定没有 Kafka 参与,更不用说我知道这个子域的新所有者了。当我重新获得正常速度的互联网连接后,我开始挖掘。首先检查的是我的 DNS 记录,但最初似乎没有任何异常。我只是将域名转发到 GitHub 的服务器,并使用通配符来捕获任何子页面(例如 www.immersivepoints.com )。不幸的是,这就是问题所在……GitHub 页面是 GitHub 的一项令人惊叹的功能!它允许您为您的 GitHub 帐户、存储库或只是您想要炫耀的酷项目托管静态网页!我在自己的网站和博客(包括您在此处阅读的内容)中经常使用它,它使您能够快速轻松地向朋友展示项目,而无需弄乱各个服务器(甚至无需为没人使用的项目的托管付费)。设置 GitHub 页面很简单:在 DNS 记录中,将要托管的域指向 GitHub 托管页面的 IP。在 GitHub 存储库中,您可以配置网站的 URL(最终以 CNAME 文件形式出现在存储库中)。通常,您将一个域指向这些 GitHub 服务器,我假设只有一个 GitHub 用户可以“拥有”一个域。也就是说:我假设只有我可以为 *.immersivepoints.com 创建子页面。我想我错了。看起来 GitHub 总是尝试解析任何域,只要有任何存储库具有此 CNAME 文件。在这种情况下,有人设置了 kafka.immersivepoints.com。他们甚至从私有 GitHub 存储库中执行此操作,这意味着我什至无法标记该特定存储库。因为我的 DNS 设置将此域的所有内容转发到 GitHub,所以任何人都可以使用或滥用我的域。这个问题并不新鲜,我已经找到了一些工具(具有讽刺意味的是托管在 GitHub 上)可以帮助您找到可窃取的域名!例如,这个:https://github.com/EdOverflow/can-i-take-over-xyz。就我而言,我不知道我的域名被这样滥用多久了,如果我上个月没有为自己设置 Google Search Console,我也永远不会注意到。最后,我注意到更多来自 Google Search Console 的电子邮件 - 因为过去几周我正在更新我的博客,无论如何我完全错过了这些!我希望没有人成为我的域名上托管的毫无疑问的劣质老虎机诈骗网站的受害者。由于谷歌在索引我的博客和页面时已经遇到问题,我想没有多少人会找到这些子域。这让我想到“谁对谁错”的问题。我想我应该更好地设置我的 DNS 记录,但我对 DNS 记录没有很好的理解(而且仍然没有真正理解它们)。我个人认为,如果 GitHub 方面能够更好地验证谁拥有域,或者允许哪些用户在其子域之上进行构建,那就太好了。例如,如果两个不同的用户想要使用相同的高级域,请让第一个用户验证是否允许另一个用户在那里托管 GitHub 页面。另一种选择是在 DNS 端为每个允许使用您的子域的 GitHub 用户添加特定的 TXT 记录。我不确定这个骗局有多大,但每一点都有帮助!最后但并非最不重要的一点是,我向 GitHub 报告了这些页面,并希望托管它们的帐户被禁止!我还没有听到任何回复。写完这篇博客后,我重新研究了 GitHub 自定义域。我确实发现您可以验证用户站点的域: https://docs.github.com/en/pages/configuring-a-custom-domain-for-your-github-pages-site/verifying-your-custom-domain-for-github-pages 。我之前没有发现这个功能,正确的设置是你的帐户设置的一部分,而不是你的存储库设置的一部分。我认为,如果 GitHub 注意到您没有验证您的域,或者他们认为您的 DNS 配置不正确,那么他们可能会在存储库设置页面上显示更大的闪烁警告。