HS v3 addresses are big but also contain a checksum. This means that Tor Browser could catch mistyped addresses and warn the user.
With current master and current Tor browser, if you mistype an hsv3 address you go to the Unable to connect page:
Unable to connectFirefox can’t establish a connection to the server at 4acth47i6kxnvkewtm6q7ib2s3ufpo5sqbsnzjpbi7utijcltosqeflock.onion. The site could be temporarily unavailable or too busy. Try again in a few moments. If you are unable to load any pages, check your computer’s network connection. If your computer or network is protected by a firewall or proxy, make sure that Tor Browser is permitted to access the Web.
I wonder what's the best way to offer better UX here. How should the user be warned?
Also how should we implement this? Should the Browser do the checksum check itself? Or should Tor do the checksum check and inform Tor Browser somehow?
How to do this best?
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information
Child items
0
Show closed items
No child items are currently assigned. Use child items to break down this issue into smaller parts.
Linked items
0
Link issues together to show that they're related.
Learn more.
I think tor doing the checksum check and informing the browser seems to be a good way as I can imagine other applications might want that feature as well. I can imagine that we patch the browser part showing some custom error page or amending the one currently shown.
Trac: Cc: linda, geko, arthuredelstein to linda, gk, arthuredelstein
I think tor doing the checksum check and informing the browser seems to be a good way as I can imagine other applications might want that feature as well. I can imagine that we patch the browser part showing some custom error page or amending the one currently shown.
+1, I think that showing a custom error page for .onion sites would be a good option.
deferring to 0.3.4 on Tor's; this will need feature design. TB folks -- how should Tor tell you about this? With HTTP CONNECT tunneling it would be trivial, but for SOCKS we are pretty limited.
Trac: Milestone: Tor: 0.3.3.x-final to Tor: 0.3.4.x-final
deferring to 0.3.4 on Tor's; this will need feature design. TB folks -- how should Tor tell you about this? With HTTP CONNECT tunneling it would be trivial, but for SOCKS we are pretty limited.
What options could you think of (not sure what "limited" means here)?
We talked with GeKo and nickm today about this. The Right Way to do this is to use the HTTPTunneLPort option which provides an HTTP CONNECT proxy, which is more extensible than the SOCKS proxy we are currently using when it comes to errors etc.
Unfortunately, currently TB does not use the HTTP CONNECT proxy, so we would need to do some tinkering especially when it comes to first-party isolation etc. Supposedly the little-t-tor side supports first-party isolation using the X-Tor-Stream-Isolation header or the Proxy-Authorization header, but it's been widely untested.
Furthermore we would need to start a spec file (maybe on the tbb side) defining the new error codes that we would use for this deliverable and also for o2a4.
Unfortunately, currently TB does not use the HTTP CONNECT proxy, so we would need to do some tinkering especially when it comes to first-party isolation etc. Supposedly the little-t-tor side supports first-party isolation using the X-Tor-Stream-Isolation header or the Proxy-Authorization header, but it's been widely untested.
I think this should generally just-work, as long as firefox implements HTTP CONNECT correctly without leaking DNS queries. (I've used HTTP Connect with other applications without any noticeable problems, personally). I also found in my inbox a new draft RFC for standardizing an HTTP response header from a proxy, some of them seem nearly appropriate for this use case (Destination IP Unroutable?). Maybe we can take this opportunity and get a more general error status added for our use case now, instead.
One other thought I had was tor can emit a controller event with information about a malformed onion address, too. This may be a way for providing error handling for applications using SOCKS, too. It'll be asynchronous, so the application/controller will need to correlate the request with the controller event.