Security
Cookies are only sent over an encrypted connection
security.cookies-not-secure
Why this matters
A cookie without the Secure flag is sent over a plain, unencrypted connection as readily as over an encrypted one. Anyone sharing a network with the visitor — a café, a hotel, an office guest network — can read it, and a single request to the http version of the site is enough to expose it, even when every page normally redirects to https. The flag costs nothing and there is no reason for a cookie on a secure site to be missing it.
Who fixes it
A developer
Roughly how long
30 minutes
Care needed
Low risk to change
How to fix it
Add `Secure` wherever the cookie is set. In PHP that is the `secure` option on `session_set_cookie_params`; in Express it is `cookie: { secure: true }`; in WordPress most of it comes free from setting the site address to https. A reverse proxy can also rewrite Set-Cookie headers if the application cannot be changed.
How we score it
Failing this check takes up to 12 points off your security score. It is a fact about your site rather than a measurement, so it reads the same on every scan until you change something.
Does your site pass this one?
This check runs on every scan, along with the other 106. Free, no account, and you see the evidence for each result.
Check my siteOther security checks
- A content security policy is in placeA content security policy tells the browser which scripts it may run. Without one, anything that manages to get injected into a page — through a compromised plugin, a hijacked advert, or a comment field — runs with the same trust as your own code.
- Browsers are told to stay on HTTPSYour site works over HTTPS, but it never tells browsers to remember that. The very first visit of the day can still be sent over an insecure connection before the redirect happens, which is the window an attacker on shared Wi-Fi needs.
- Camera, microphone and location access are restrictedAnything embedded in your pages — an advert, a chat widget, a map — can ask the visitor for access to their camera, microphone or location, and the request appears to come from you.
- File types cannot be second-guessedWithout this header a browser may ignore what your server says a file is and guess instead. An uploaded image that is secretly a script can then be run as one.
- Folders are not browsableYour server is showing a file listing instead of a page. Anyone can read it and see exactly what is in that folder — backups, spreadsheets, database dumps, anything left there and forgotten.
- Login cookies are hidden from scripts on the pageA session cookie marked HttpOnly can be sent to the server but cannot be read by JavaScript running on the page. Without that flag, any script that ends up on the site — through a compromised plugin, a hijacked advert, or a comment field that did not escape its input — can read a logged-in session and use it from somewhere else. It is the difference between a script injection being an embarrassment and being an account takeover.