HTML over DNS: Serving Blog Content over DNS
p4bl0 2021-08-19 08:15:23 +0000 UTC [ - ]
Anyway, this made me think of iodine [1], an IP over DNS solution, which I still run on my main server even though it has a lot less use now than it had until a few years ago when there were a lot of open wifi with captive portals and way less 4G available.
dncornholio 2021-08-19 11:16:06 +0000 UTC [ - ]
judge2020 2021-08-19 12:38:26 +0000 UTC [ - ]
RostiB 2021-08-19 10:04:46 +0000 UTC [ - ]
p4bl0 2021-08-19 10:36:45 +0000 UTC [ - ]
Thanks for pointing it out.
EDIT: As an aside, I still hate how mobile browsers have the bad habits of reloading tabs (and most of the time loosing content) that you get back to with no reason. If not for this crappy behavior, I would have copy-pasted the URL.
codetrotter 2021-08-19 11:27:06 +0000 UTC [ - ]
ignoramous 2021-08-19 06:02:39 +0000 UTC [ - ]
[0] https://unit42.paloaltonetworks.com/dns-tunneling-how-dns-ca...
[1] https://github.com/Jigsaw-Code/choir (disclosure: I co-develop hard-forks of two other related Jigsaw-Code projects)
3pt14159 2021-08-19 10:32:44 +0000 UTC [ - ]
Turns out when you spy on your users word gets around.
codethief 2021-08-19 14:51:16 +0000 UTC [ - ]
k4ch0w 2021-08-19 08:38:29 +0000 UTC [ - ]
richthegeek 2021-08-19 10:33:59 +0000 UTC [ - ]
LinuxBender 2021-08-19 12:49:04 +0000 UTC [ - ]
Spivak 2021-08-19 14:11:34 +0000 UTC [ - ]
1vuio0pswjnm7 2021-08-19 06:04:28 +0000 UTC [ - ]
const dohServer = "https://cloudflare-dns.com/dns-query?ct=application/dns-json&type=TXT&name=";
const baseDomain = "hod.experiments.jacobkiers.net";
About 12 years ago I experimented with HTML over UDP DNS by modifying dnstxt from djbdns to output a MIME header. I could store tiny web pages, i.e., hyperlinks, in a zone file and serve them with tinydns. (This was before the size of DNS packets ballooned with adoption of EDNS.)
1vuio0pswjnm7 2021-08-19 11:22:46 +0000 UTC [ - ]
ThePhysicist 2021-08-19 08:45:58 +0000 UTC [ - ]
geocrasher 2021-08-19 05:51:46 +0000 UTC [ - ]
p4bl0 2021-08-19 08:40:35 +0000 UTC [ - ]
A few years ago I randomly remarked that repeated base64 prefix converge to a fixed point. I tweeted [1] the first characters of that string out of amusement, without any additional details.
Then someone saw the tweet, found it funny, and did a write-up about it [2], and then there was an interesting discussion on Reddit [3]. There may have been one on HN too, I don't remember.
Have fun :).
[1] https://twitter.com/p4bl0/status/298900842076045312
[2] https://web.archive.org/web/20160313123301/https://fmota.eu/...
[3] https://www.reddit.com/r/compsci/comments/18234a/the_base64_...
jacobkiers 2021-08-19 06:25:01 +0000 UTC [ - ]
I'll try it sometime soon (though my CSS skills are basically nonexistent...).
jacobkiers 2021-08-19 06:22:44 +0000 UTC [ - ]
I used DoH because to the best of my knowledge it's not possible to open raw sockets from the browser. Otherwise I'd have done that.
I don't think there's any practical use. And I did not intend it to have any.
staysafeanon 2021-08-19 14:53:50 +0000 UTC [ - ]
Sometimes those are the most satisfying and technologically interesting proof of concepts. Don't let any of the detractors here tell you you're wasting your time!
erkkonet 2021-08-19 11:13:24 +0000 UTC [ - ]
"In contrast to other top-level domains, .tel information is stored directly within the Domain Name System (DNS) [...] as opposed to the DNS simply returning details (such as IP addresses)"
beembuild 2021-08-19 11:34:47 +0000 UTC [ - ]
PinguTS 2021-08-19 07:34:15 +0000 UTC [ - ]
$ dig posts-2021-08-17-serving-blog-content-over-dns-md.hod.experiments.jacobkiers.net TXT
; <<>> DiG 9.8.3-P1 <<>> posts-2021-08-17-serving-blog-content-over-dns-md.hod.experiments.jacobkiers.net TXT
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 49067
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0
;; QUESTION SECTION:
;posts-2021-08-17-serving-blog-content-over-dns-md.hod.experiments.jacobkiers.net. IN TXT
;; AUTHORITY SECTION:
hod.experiments.jacobkiers.net. 292 IN SOA home.kie.rs. postmaster.kie.rs. 2021081903 3600 900 604800 3600
IncRnd 2021-08-19 11:22:11 +0000 UTC [ - ]
> ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0
That says that the DNS server didn't answer - for whatever reason - despite the address of that server being determined. It could have been a form of HN's "hug of death" where the website temporarily goes down when many people start to view it in a short period of time.
jacobkiers 2021-08-19 07:38:52 +0000 UTC [ - ]
PinguTS 2021-08-19 07:51:50 +0000 UTC [ - ]
masklinn 2021-08-19 07:35:30 +0000 UTC [ - ]
PinguTS 2021-08-19 07:49:28 +0000 UTC [ - ]
masklinn 2021-08-19 07:30:29 +0000 UTC [ - ]
Or at all since the content is entirely injected via JS with no fallback (and the JS uses class fields in case you thought an old browser might be able to load it).
andai 2021-08-19 08:00:14 +0000 UTC [ - ]
blowski 2021-08-19 08:14:43 +0000 UTC [ - ]
I guess there are lots of tiny edge cases that look like that.
phh 2021-08-19 08:11:23 +0000 UTC [ - ]
andai 2021-08-19 09:28:55 +0000 UTC [ - ]
masklinn 2021-08-19 09:37:24 +0000 UTC [ - ]
How could they even know to tuen it on when all they get is an empty page?
cdubzzz 2021-08-19 12:22:41 +0000 UTC [ - ]
toxik 2021-08-19 09:02:41 +0000 UTC [ - ]
masklinn 2021-08-19 09:36:30 +0000 UTC [ - ]
Class fields are later addition to classes. And completely unnecessary here, it looks. The class fields are just duplicates of the instance fields, which are always filled.
> The other 4% is divided between Internet Explorer, Opera Mini and obsolete versions of every other browser. So I'm trying to figure out what kind of people are using such ancient technology and why?
Unsupported device which can not have recent updates for one reason or an other?
jacobkiers 2021-08-19 08:15:07 +0000 UTC [ - ]
Also, since this was mostly a DNS-focused proof of concept, I don't particularly care about that. Not in this case, at least.
masklinn 2021-08-19 09:35:02 +0000 UTC [ - ]
mobilemidget 2021-08-19 11:52:05 +0000 UTC [ - ]
dns works fine at those rates or higher, and you'll use caching dns servers of ISPs, scales like no other, geo support etc etc. I think its great idea for public data.
IncRnd 2021-08-19 06:38:47 +0000 UTC [ - ]
For anyone who wants to research the subject, the class of security vulnerabilities are called DNS tunneling.
luismedel 2021-08-19 11:08:41 +0000 UTC [ - ]
IncRnd 2021-08-19 11:26:44 +0000 UTC [ - ]
Whenever I see regexs hanging off the Internet, my heart skips a beat! :)
kix53 2021-08-19 11:07:10 +0000 UTC [ - ]
redspl 2021-08-19 13:32:13 +0000 UTC [ - ]
fsiefken 2021-08-19 09:42:08 +0000 UTC [ - ]
sonicggg 2021-08-19 05:58:58 +0000 UTC [ - ]
tyingq 2021-08-19 06:04:59 +0000 UTC [ - ]
stayanon1 2021-08-19 06:05:53 +0000 UTC [ - ]
xg15 2021-08-19 11:46:32 +0000 UTC [ - ]
- A website can bring its own DoH client and bypass both the OS resolver and the browser's trusted DoH resolver for anything except the initial page request.
- Any website can now access the full DNS information of any domain: Not just A/AAAA records, but also TXT, MX, SRV etc. Record metadata such as TTLs likewise.
All of that without requiring any backend infrastructure or exotic web API. It's literally just a static HTML file and fetch().
That's a genuinely new capability that wasn't available to websites before public DoH servers became available. I'm no security expert, but this smells like it should have some implications for web security.
judge2020 2021-08-19 12:36:33 +0000 UTC [ - ]
Not sure about that, since it doesn’t sound like simply requesting answers from the DOH server injects the answer into the DNS cache.
And I don’t think this is novel, since anyone could have ran a dns info api before if they really wanted to.
Spivak 2021-08-19 14:09:42 +0000 UTC [ - ]
xg15 2021-08-19 16:48:29 +0000 UTC [ - ]
A lot of web features had always been possible by simply running them on your own server: Cross-origin requests, generating images on-demand, rendering vector graphics, etc. Nevertheless, when those features became available in the browser - without any additional effort needed from the developer - it had massive effects on the web ecosystem.
I can't say I have answers, but my suspicion is that it makes a significant difference in friction whether a feature requires you to setup and run your own infrastructure or whether you just need to type in some javascript to use it.
> If web security depends on websites not having access to public data that could always be proxied to it then we're already screwed.
To some extent it does - that's why you cannot access the body cross-origin GET requests or the contents of cross-origin iframes without those sites opting in - even if no cookies or other credentials are sent with the reqest.
globular-toast 2021-08-19 13:13:05 +0000 UTC [ - ]