我正在开发一个免费的DNS服务,当两个或更多的客户尝试添加同一个域(几乎同时)时,我无法完全解决这种情况。
以下是解决这种情况的一些解决scheme,但它们都不是好的或可行的。
解决scheme1:
为每个客户使用不同的名称服务器对
创build多个不同的ns(如ns1,ns2 … ns49,ns50,ns51 ..)允许我使用不同的服务器对与不同的客户尝试添加相同的域。
真正的拥有者只能在域名注册商(即:ns8和ns9)中使用他们的对,所以只有他的logging才会被接受并传播到整个互联网。
解决scheme1的问题:
它很容易受到大规模的攻击
如果一个恶意的人创build了大量的帐户,那么如果所有这些帐户都尝试添加相同的域,则不可能有相同数量的帐户。
解决scheme2:
只允许一个用户帐户使用域
如果一个用户已经添加了一个特定的域,并在他的域名注册商中正确地configuration了它,那么没有其他账户将能够添加相同的域。
解决scheme2的问题:
恩典时间
validation一个添加的域可能需要几个小时(请纠正我,如果我错了)。 这需要我给出一个“宽限期”,以允许每个最近添加的域名保持“未validation”状态,直到我们可以通过相应的域名注册机构对其进行validation。
此外,在这个宽限期间,除非我们使用解决scheme1(但记得#1有漏洞),否则没有其他帐户能够添加相同的域。
免费(或付费)DSN服务如何解决这个问题? 他们的方法是什么(因为任何用户显然可以添加任何域名,而不受限制)?
编辑:关于重复
我的问题和时代的问题有一点点不同。 我是提供者而不是客户。 时代的问题只是从客户眼中指出问题。
另外,即使DigitalOcean的@Jacob也表示,他们采取了“先到先得”的方式,我试图避免这种做法,这也是我的问题存在的原因。
解决scheme1可以用于validation用户对域的控制。 在您的问题中,您似乎对自己施加了一些限制,可能是由于一些误解,或者是因为您希望在不validation用户对域的控制权的情况下工作。
上述三种观察中的任何一种都应该填补您提出的解决scheme1中的空白,以使其工作,假设您确认用户对域的控制。
如果你想要一个解决scheme,而无需用户首先validation他们对域的控制,我只能build议你依靠IPv6。
混合解决scheme可能为用户提供平稳的stream量。 我会devise如下:
kasperd-ns1-ds.example.com 。 用户可以创build他们喜欢的任何区域名称。 它将立即在该用户的IPv6地址上可用。
在IPv4地址(必须在用户之间共享)上提供特定区域将以先到先得的原则工作。 但是,任何后来的用户都可以通过将域的NSlogging指向您分配给该用户的任何主机名来validation对域的控制。 对域的authentication控制击败先来原则。