HTTP security headers
Theory
HTTP security headers are used to inform a client (browser) how to behave when handling a website's content. These headers are important in preventing exploitation of vulnerabilities such as XSS, Man-in-the-Middle, clickjacking, etc.
Lets a web site tell browsers that it should only be accessed using HTTPS, instead of using HTTP. Prevents Man-in-the-Middle attacks.
The
max-age
directive defines the time, in seconds, that the browser should remember that a site is only to be accessed using HTTPS.The optional
includeSubDomains
directive defines if the rule applies to all of the site's subdomains as wellThe optional
preload
directive ensures that a website will be accessed using HTTPS even during the first visit of the website. Indeed, websites require a user-agent to first visit them to understand that it must use STS. To correct this behavior, browsers have a list of websites that has to be accessed using HTTPS from the initial request.For more information: https://hstspreload.org/.
XFO (X-Frame-Options
)
X-Frame-Options
)Header now obsolete (use the Content-Security-Policy
with the frame-ancestors
directive set to none
instead). This header indicated whether or not a browser should be allowed to render a page in a <frame>
, <iframe>
, <embed>
or <object>
. Prevents clickjacking attacks.
DENY
: the page cannot be displayed in a frameSAMEORIGIN
: can only be displayed in a frame on the same origin as the page itself (which depends on how browsers vendors interpret this)ALLOW-FROM uri
: obsolete directive. No longer works in modern browsers.
XCTO (X-Content-Type-Options
)
X-Content-Type-Options
) XCTO is used by the server to indicate that the MIME types advertised in the Content-Type
headers should be followed and not be changed. It prevents MIME type sniffing attacks.
The
nosniff
directive makes the browser block a request if the request destination is of typestyle
and the MIME type is nottext/css
, or of typescript
and the MIME type is not a JavaScript MIME type.
Allows a server to indicate any origins (domain, scheme, or port) other than its own from which a browser should permit loading resources from.
🛠️CORS (Cross-Origin Resource Sharing)CSP (Content-Security-Policy
)
Content-Security-Policy
) Restrict how the browser accesses resources. Prevents XSS, XS-Leaks, clickjacking
The
default-src
directive acts as a fallback for the other CSP fetch directives. If not present, CSP will permit loading resources of any originsThe
unsafe-eval