TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

Show HN: Make domain verification as easy as verifying an email or phone number

86 pointsby elliottinventabout 2 years ago
Hi HN,<p>This is a project [1] I&#x27;ve been working on for a little while and I&#x27;m interested in your feedback and point of view.<p>Many of us would have verified a domain name by pasting a string into a DNS TXT record. Some providers ask us to store this DNS TXT record at a domain using a DNS label like &quot;_provider&quot; e.g. _provider.yourdomain.com, and some providers ask that you do it at the zone apex (God help us [2]).<p>The Domain Verification protocol stores a DNS TXT record at a DNS name derived from a hashed &quot;verifiable identifier&quot; (think email, telephone, DID), enabling anyone that can prove control over the verifiable identifier to prove authority for the domain name.<p>For example, the domain verification record giving the email address user@example.com authority over the domain dvexample.com can be seen with this terminal command:<p>dig 4i7ozur385y5nsqoo0mg0mxv6t9333s2rarxrtvlpag1gsk8pg._dv.dvexample.com TXT<p>The record can specify what type of services the authorised party is allowed to use (e.g. SEO, Storage, Advertising) or specify an exact provider (ads.google.com), you can also specify an expiry date.<p>The benefits of this approach are:<p>- Domain owners can grant time-limited, granular permissions for third parties to verify a domain<p>- Every service provider could use the same verification record<p>- Once a domain owner creates a verification record by following instructions from one service provider, that same record could be used by other service providers<p>- Domain registrars could set these records up on behalf of users, perhaps even upon domain registration (with registrant opt-in). This would provide domain registrants with a fast lane for signing up to services like Google Ads, Facebook Ads, Dropbox, whatever<p>I&#x27;m still working on licensing but creating these records will always be free. I hope to find service providers that see significant upside in reducing friction for user onboarding that are willing to pay to license it.<p>Worked example: Let&#x27;s say you want to authenticate the user with the email user@example.com with the domain dvexample.com, these are the steps:<p>1. HASH(user@example.com) -&gt; 4i7ozur385y5nsqoo0mg0mxv6t9333s2rarxrtvlpag1gsk8pg<p>2. Store Domain Verification record at: 4i7ozur385y5nsqoo0mg0mxv6t9333s2rarxrtvlpag1gsk8pg._dv.dvexample.com<p>3. TXT record determines permissions and time limit:<p>@dv=1;d=Example user emali;e=2025-01-01;s=[seo;email];h=4i7ozur385y5nsqoo0mg0mxv6t9333s2rarxrtvlpag1gsk8pg<p>BTW, if you&#x27;re interested the syntax of that DNS record is a compact data serialisation format I created especially for DNS [3].<p>Thanks for taking a look,<p>Elliott<p>1. <a href="https:&#x2F;&#x2F;www.domainverification.org" rel="nofollow">https:&#x2F;&#x2F;www.domainverification.org</a><p>2. dig target.com TXT<p>3. <a href="https:&#x2F;&#x2F;www.compactdata.org" rel="nofollow">https:&#x2F;&#x2F;www.compactdata.org</a><p>(edit: formatting)

18 comments

rolfvandekrolabout 2 years ago
If I understand correctly, you need to submit the verifiable identifiers (email address and optional salt) to the party where you need to verify. That means you need to trust said party to not abuse this information to verify your domain with other services which use the same verification method.<p>The beauty of verifying with a changing bit of information (which is basically what is happining now) is that you only prove ownership once and the proof can&#x27;t be stolen by someone who doesn&#x27;t own the domain but received your proof.<p>Maybe I didn&#x27;t understand correctly how it works. But if I understand it correctly that is actually rather dangerous. Supplying the proof to an untrustworthy party should not allow them to re-use this proof for other services.
评论 #35828483 未加载
bgraingerabout 2 years ago
On the home page, &quot;For more detailed information take a look at the specification.&quot; links to <a href="https:&#x2F;&#x2F;www.domainverification.org&#x2F;spec" rel="nofollow">https:&#x2F;&#x2F;www.domainverification.org&#x2F;spec</a> which is a 404.<p>`dig 4i7ozur385y5nsqoo0mg0mxv6t9333s2rarxrtvlpag1gsk8pg._dv.dvexample.com TXT` returns: ;; ANSWER SECTION: 4i7ozur385y5nsqoo0mg0mxv6t9333s2rarxrtvlpag1gsk8pg._dv.dvexample.com. 0 IN TXT &quot;@dv=1;d=Example user emali;e=2025-01-01;s=[seo;email;marketing;storage;security];p=[serviceprovider1.com];sn=[service.serviceprovider.com];h=4i7ozur385y5nsqoo0mg0mxv6t9333s2rarxrtvlpag1gsk8pg&quot;<p>There&#x27;s a typo in &quot;Example user emali&quot;.<p>These simple mistakes don&#x27;t engender confidence in the proposal.
评论 #35829825 未加载
评论 #35828871 未加载
mattzitoabout 2 years ago
So - there is a solution for this already that is widely adopted and perfect for this use case:<p><a href="https:&#x2F;&#x2F;www.godaddy.com&#x2F;engineering&#x2F;2019&#x2F;04&#x2F;25&#x2F;domain-connect&#x2F;" rel="nofollow">https:&#x2F;&#x2F;www.godaddy.com&#x2F;engineering&#x2F;2019&#x2F;04&#x2F;25&#x2F;domain-connec...</a><p>Domain connect allows providers to request fine grained access to domain records, and for customers to allow&#x2F;disallow those records, for a limited period of time. This not only addresses domain verification but also configuration of complex configurations like spf and max records.<p>It works, and works well, and is supported by all the major domain providers.
评论 #35830054 未加载
评论 #35839348 未加载
评论 #35830082 未加载
doctor_evalabout 2 years ago
Doesn’t this have the problem that the verifiable identifier has a different lifecycle to the DNS entry?<p>As far as I can see, this system doesn’t prove that the email address controls the domain <i>now</i>; it proves that it controlled the domain at the time it was set up.<p>So, for example, a disgruntled employee who had this set up would be able to “prove” that they controlled a domain until the records are deleted, right? Even after they’ve left, and no longer have access to the network. It’s a feature of this system that it’s “set and forget”.<p>It’s hard to imagine checking the DNS, of all things, when an employee is off-boarded.
评论 #35829527 未加载
linuxdude314about 2 years ago
I’m struggling to understand how this makes any sense given the creators own argument.<p>They say the hardest part is that users don’t know how to adjust their DNS, and then the solution proposed is adding a DNS record?<p>There are already standards (IETF RFC) why is this better than those?
评论 #35828716 未加载
shoelessoneabout 2 years ago
This seems like a nice option to have, and I appreciate the thought put into it.<p>Personally I think I&#x27;d prefer to decouple my email &#x2F; phone &#x2F; etc from the ownership of some credential &#x2F; identifier. To me it&#x27;s cognitively simple that I have a domain name, and to prove that I control the domain I have to make some change to the domain. When I say (type) it out loud it does feel a bit archaic, but to me it&#x27;s simple.<p>It would be convenient if by clicking a validation link or something sent to my email (to prove I controlled the email in the domain) I could verify ownership. But: What about something like AWS Route53. A fairly complicated &quot;enterprise&quot; system for authorization is in place allowing certain team members to make changes to a DNS record in AWS. The people in the organization will change over time, the list of who &quot;owns&quot; a domain might be ever changing. Of course the organization itself might own the domain, but perhaps there isn&#x27;t a clear single email address to assign ownership to. If the Domain Verification spec required everything to render down to a single email address or phone number or whatever, it feels like it adds potentially complicated questions to how do you distill AWS access down to an email address or phone number? It just feels like the actual service validating the DNS info is potentially taking on a lot of responsibility &#x2F; complexity with implementation.
评论 #35830356 未加载
StuntPopeabout 2 years ago
I&#x27;ve been thinking for some time about a mechanism that could be used to assert control over a domain that has a lot of third-party backlinks to it, as in widgets, ad networks, javascript etc.<p>Because when those domains become defunct or expire, anybody recognizing what they were could grab them and inject malicious code into all the websites with the broken widgets embedded (we&#x27;ve seen this happen with crypto miners, etc)<p>This kind of a mechanism (along with domainconnect) could work - but it would also need the browsers (perhaps with a plugin?) to verify a domain on embedded components before rendering them.<p>That would add a lot of DNS lookups though.<p>Overall a good effort. Would be good to see something along these lines gather some traction.
评论 #35849492 未加载
评论 #35859348 未加载
lifeinthevoidabout 2 years ago
Sorry maybe I haven&#x27;t looked in detail enough, e.g. in Belgium telephone numbers have 10 digits, so you need a table of 10 billion hashes (far less in practice due to the structure of a telephone number) if you&#x27;re using a telephone number, that&#x27;s probably not hard to achieve. Then you look up the hash for the domain you want to hijack and try to register that domain in the service you&#x27;re signing up to (with your fake &#x2F; looked up telephone number).
评论 #35828431 未加载
评论 #35829003 未加载
silisiliabout 2 years ago
Any regards to cache poisoning attacks?<p>They&#x27;re actually easier at the subdomain level, because you can keep asking for &lt;rand&gt;._dv.example.com to prevent cache hits, all the while spamming back NS delegation answers for _dv to the cache servers with a long TTL.<p>DNSSEC of course solves that, but a lot of people are going to roll their eyes at that solution and a lot of things don&#x27;t support it.<p>Just curious.
评论 #35850326 未加载
ueanabout 2 years ago
I like the idea. Your description on the website is missing the explanation that the final step is the service provider verified the records via email&#x2F;sms.<p>I think one challenge always faced is dns propagation, creating your record and walking away and waiting (sometimes) hours for it to be recognized. Your method gives an ability to create a number of records in advance with different security restrictions so that’s nice, but requires a lot of thought and even more time adding records in your DNS.<p>So whats the actual verification process look like? You give the SP the subdomain generated and they query TXT records from there? how does the actual verification work here and when&#x2F;how does the user receive an email?
评论 #35828835 未加载
elliottinventabout 2 years ago
A deleted question, that I had typed out a response for but couldn&#x27;t submit because it was deleted (in case it helps anyone):<p>&gt;&gt; Why not just make a browser plugin that scrapes the screen when the user is presented a txt record to add? Reducing the security of DNS registrars is probably not the solution.<p>&gt; Lots of reasons, the main one being that this would require every domain registrant to download a plugin which would then somehow need to integrate with a DNS provider.<p>There are other solutions [1] for simplifying the creation of verification (and other DNS records).<p>1. <a href="http:&#x2F;&#x2F;www.domainconnect.org&#x2F;" rel="nofollow">http:&#x2F;&#x2F;www.domainconnect.org&#x2F;</a>
bosky101about 2 years ago
Noticed this is from the same uk firm that created a denser alternative of json called modl, now called <a href="https:&#x2F;&#x2F;www.compactdata.org&#x2F;" rel="nofollow">https:&#x2F;&#x2F;www.compactdata.org&#x2F;</a>
评论 #35842081 未加载
jeroenhdabout 2 years ago
Let&#x27;s Encrypt together with tools like Cerbot have brought easy to use proof of domain ownership to countless sites. Why wouldn&#x27;t services that want to verify domain ownership use that? Cerbot already has integrations for tons of DNS registries and if that&#x27;s not available then all you need to do is put a special secret file in the .well-known directory.<p>Even if centralization of domain validation is something you care about, I wouldn&#x27;t want that centralization to happen by a project for a company focused on collecting data about businesses.
评论 #35829321 未加载
elliottinventabout 2 years ago
I forgot to mention, verifiable identifiers can optionally be salted before hashing but this introduces a dependency on the creator of the domain verification record to share the salt.
andreygrehovabout 2 years ago
Question for the community. Email verification is easy. The provider sends you an email, you click the link in that email, and the process is complete. When it comes to domain verification, what if the provider sends an email to the address listed in the domain&#x27;s WHOIS? It seems much easier than dealing with DNS records, but I may be overlooking something obvious here.
评论 #35830513 未加载
dariusj18about 2 years ago
I like the concept, but it would probably be better to have some sort of cryptographic solutions, where the public key and permissions are stored in the DNS entry and the private key is used to generate a signature so the service can validate.
评论 #35830425 未加载
e12eabout 2 years ago
Wouldn&#x27;t it be simpler to just build on the acme challenges?<p><a href="https:&#x2F;&#x2F;letsencrypt.org&#x2F;docs&#x2F;challenge-types&#x2F;" rel="nofollow">https:&#x2F;&#x2F;letsencrypt.org&#x2F;docs&#x2F;challenge-types&#x2F;</a>
评论 #35829353 未加载
maracaipeabout 2 years ago
this sounds great
评论 #35828330 未加载