Improvements after Mozilla’s Observatory results
Mozilla made their Observatory service public, which lets you check the security of sites. A first run resulted in an F
for sebadorn.de
. Following some of the suggestions I could improve that to a B-
.
1. Redirect HTTP to HTTPS
Thanks to Let’s Encrypt I already offered HTTPS, but I didn't enforce it. Now visitors to http://sebadorn.de
are redirected to https://sebadorn.de
. I did so by adding the following rule to my .htaccess
file:
<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTP_HOST} ^sebadorn\.de [NC] RewriteCond %{SERVER_PORT} 80 RewriteRule ^(.*)$ https://sebadorn.de/$1 [R,L] </IfModule>
2. Add some more headers
<IfModule mod_headers.c> Header always edit Set-Cookie (.*) "$1; HttpOnly; Secure" Header set Content-Security-Policy "frame-ancestors 'self'" Header set X-Content-Type-Options "nosniff" Header set X-Frame-Options "SAMEORIGIN" Header set X-XSS-Protection "1; mode=block" </IfModule>
- Set-Cookie
- Cookies about to be set received additional directives: HttpOnly and Secure. HttpOnly disallows cookies being read by JavaScript and Secure enforces an HTTPS connection. (Source)
- X-Content-Type-Options
- Setting this header to nosniff tells browsers not to try and guess the MIME type of contents, which potentially prevents XSS attacks. (Source)
- X-Frame-Options
- Setting this header to SAMEORIGIN or DENY prevents other pages from displaying the site in a frame which prevents clickjacking. (Source)
- X-XSS-Protection
- Setting this header to 1; mode=block tells browsers to try and detect XSS attacks and in this case stop loading the page. (Source)