![在 DNS 级别防止热链接](https://linux22.com/image/602539/%E5%9C%A8%20DNS%20%E7%BA%A7%E5%88%AB%E9%98%B2%E6%AD%A2%E7%83%AD%E9%93%BE%E6%8E%A5.png)
当我在 StackOverflow 上发布问题的答案时,我使用自己的服务器托管了一个示例文件(一张图片)。现在有人复制了我使用的代码,包括我服务器上文件的 URL。他们使用的代码所在的网站流量相对较大,因此这给我可怜的虚拟服务器带来了不必要的压力,最重要的是,它严重消耗了我每月的 DNS 查询限制。
我对盗链本身没有意见,我只是担心我最终会为一些我不负责的东西付更多的钱,而且它会扭曲实际使用情况,所以我无法监控我实际使用。我可以采取什么措施来防止网站对我付费的服务产生如此多的点击量?到目前为止,我尝试过的措施:
- 联系提出请求的公司,没有回复。
- 用另一个令人讨厌的文件替换托管文件 - 但他们实际上并没有在任何地方使用该图像,只是在他们的 CSS 中链接到它,所以这种方法无效,因为它在他们的页面上的任何地方都看不到。
- 使用 iptables 阻止某些 IP:这可以阻止请求到达 Apache,但它们仍会到达 DNS。
难道我面对这种辱骂就无能为力了吗?难道我只能希望他们最终会删除图片吗?至少我已经学会了永远不要用自己的服务器来托管别人可以直接融入自己作品的任何东西。
答案1
我将通过以下方式解决这个问题:
- 当然要联系公司。(我知道你已经这样做了,只是为了完整性而在这里包括它)。
- 在 2013 年将您的 DNS 移至主机。如今,按数量限制 DNS 查询是荒谬的。只需每月 20 美元,您就可以将尽可能多的权威区域和/或从属区域加载到 Linode 的 DNS 面板中,他们会在整个月内为您提供服务,而不会提出任何问题。
- 检查您的 TTL 以确保下游解析器正确缓存 RR。
- 创建一个 htaccess 规则来检查 Referrer 标头,并为通过该网站请求图像的任何人提供 403。
答案2
在大多数情况下,您是无能为力的。更准确地说,您已经采取了最有效的措施来解决这个问题 - 阻止 IP。另一个步骤是完全删除图像,导致 404。您可能还可以编写 .htaccess“规则”来禁止热链接,但最终,您无法对第三方将图像链接指向您的服务器采取任何措施。