Adopt / implement modern internet standards for mapcomplete.org #2627
Labels
No labels
Android-shell
awaiting feedback
awaiting fix confirmation
bug
enhancement
Help Wanted
high-priority
huge
low-priority
Meta
NLNet
OSOC21:Cycling-OVL
Performance
question
search-ui-enhancement
Studio
Tailwind
Themes
UI
upstream-issue
usertest
No milestone
No project
No assignees
3 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
MapComplete/MapComplete#2627
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Hi, I am a frequent user of mapcomplete. It would be great if mapcomplete.org would implement some of the modern internet standards promoted by amongst others internet.nl. This makes the website more robust, available and supportive towards the future internet.
See test results:
https://internet.nl/site/mapcomplete.org/3673105/
https://internet.nl/site/www.mapcomplete.org/3673083/
https://internet.nl/mail/mapcomplete.org/1717236/
https://internet.nl/mail/www.mapcomplete.org/1717240/ (this mailtest is relevant to prevent e-mail spoofing from @www.mapcomplete.org)
While not all individual tests may be relevant per se for mapcomplete.org, I've listed the, in my opinion, most important ones in the table below.
Strict-Transport-SecurityHTTP-header, which upgrades http > https without possibility of MITM (still trust on first use, easy)Content-Security-PolicyHTTP-header that restricts browser functions to those needed by the site (hard to get it perfect, easy to start with a relaxed CSP)Thanks!
I'm adding IPv6 addresses for the hetzner-hosted items. One server (cache.mapcomplete.org) lives on a residential, IPv4 connection.
@Thibaultmol What is the IPv6 address of panoramax.mapcomplete.org ? (Run
ip addrin the terminal and paste the output here)2a01:4f8:c2c:3cfe::1/64
DNSSEC turned out to be a single checkbox to check at namecheap...
I will not enable HSTS; this might brick the website completely if the SSL ever gets broken. See this comment. Caddy (on my end) forces users to HTTPS anyway. Browsers nowadays will attempt to use HTTPS first anyway (Firefox does this since ~1year)
CSP is handled by setting this in every HTML file with a script. It is impossible to do this via the caddy configuration file: every HTML file has a different set of sources it might connect to (depending on background layers and some special features). This set of URLs is also quite dynamic as the repository of useable background layers has quite some movement.
security.txt is deployed on the develop branch (and will eventually also be on the main version)
Thank you very much for taking the time to fix this!! Already great score on the web test now!
@pietervdvn wrote in #2627 (comment):
I get the viewpoint, yet "this might brick the website completely if the SSL ever gets broken" in my perspective is a feature not a bug. The reason: client-side attempted HTTPS-first is very good, but HSTS is recommended since the client is still vulnerable to man-in-the-middle downgrade attacks (for example by shady wifi networks). Since the client would just continue over HTTP, the connection is now unencrypted. HSTS solves this by caching this "HTTPS-only" property in the browser, making all following connections protected for downgrade attacks. By default, HSTS requires still "trust on first use". If you would want to have no need for trust on first use, you can use the HSTS preload directive: https://hstspreload.org/
Due to HTTPS and replacing certs being so trivial these days, I think the downsides are minimal. If you ever need to get rid of HTTPS for any reason, you could temporarily serve a HSTS header with max-age=0. This resets the cache when someone visits the site.
Just my 2 cents on the topic.
@pietervdvn wrote in #2627 (comment):
Very nice! Just a small remark: the e-mail address should be preceded with mailto: (according to the RFC this has to be a valid URI)