Password on HTTP

No Comments
Password on http

Element Code: SE-019

TL;DR: A password or login field is being served or submitted over plain HTTP, which means credentials travel across the wire in cleartext. Move the whole page and its form action to HTTPS, kill every mixed-content asset, and force redirects. This is a security failure first and an SEO liability second.
SEVERITY
Critical
CATEGORY
Security
DETECTION
Browser + crawl
FIX EFFORT
Low to medium
USER SIGNAL
"Not secure"

What this issue actually means

This check fires when a page that collects a password (a login form, a registration form, a checkout, an account settings screen) is loaded over http:// instead of https://, or when the page itself is HTTPS but the form's action attribute posts to an http:// endpoint. Either way, the password the user types leaves their browser unencrypted. Anyone sitting on the same coffee-shop Wi-Fi, a compromised router, or a hop somewhere between the visitor and your server can read those credentials in plain text. There is no clever caveat here. Cleartext passwords on a network are exactly as bad as they sound.

People often assume the padlock in the address bar is a cosmetic nicety. It is not. TLS does two jobs at once: it encrypts the payload so eavesdroppers see gibberish, and it authenticates the server so the visitor knows they are actually talking to you and not a machine that quietly inserted itself in the middle. Strip that away on a password page and you have handed attackers both a wiretap and an impersonation kit.

Why search engines and browsers care

Google has treated HTTPS as a lightweight ranking signal since 2014, per its own Webmaster Central announcement. On its own that nudge is small. The real damage is downstream. Chrome, Firefox, Safari and Edge all flag any HTTP page containing a password or credit-card field with a visible "Not secure" warning, and some versions actively block submission or throw a full interstitial. That warning tanks form completion. Users who came to sign in bounce instead, and a page nobody can convert on is a page that slowly loses its reason to rank.

There is a crawling angle too. When you finally migrate to HTTPS but leave HTTP versions reachable, you create duplicate URLs, split link equity across two protocols, and force Google to guess at canonicals. A clean, forced HTTPS setup removes that ambiguity entirely.

How the exposure happens, start to finish

User's browser types password HTTP hop cleartext, readable Your server receives login Attacker reads here

The insecure segment is any leg of the journey that runs over HTTP. It does not matter that your database is locked down or that you hash passwords at rest. The password is stolen in transit, long before hashing ever happens.

How to detect it

Reproducing this takes about a minute, but you want systematic coverage across the whole site, not just the one form you remembered.

  • The browser itself: load the login page, open DevTools, watch the Security panel. Chrome will label the page "Not secure" and log mixed-content warnings in the Console. Inspect the form element and read its real action URL, not the one you assume is there.
  • Screaming Frog SEO Spider: crawl the site and use the Security tab, which surfaces HTTP URLs, mixed content, and "form on HTTP" style issues. Filter for pages still resolving on http://.
  • Sitebulb: its security hints flag insecure forms and mixed content with clear severity ratings, useful when you need a report a stakeholder will actually read.
  • Google Search Console: not a direct detector for this, but the HTTPS report and coverage data show whether HTTP URLs are still indexed, which is your clue that redirects are incomplete.
  • Server logs: grep access logs for requests hitting port 80 on form-handling endpoints. Real traffic on HTTP is your proof that the exposure is live, not theoretical.

How to fix it, step by step

  1. Install a valid TLS certificate for the domain and every subdomain that serves forms. Let's Encrypt is free and automatable, so cost is not an excuse.
  2. Serve the form page over HTTPS and set the form action to an absolute or protocol-relative HTTPS URL. Confirm the POST target is HTTPS, because an HTTPS page posting to an HTTP endpoint is still wide open.
  3. Force redirects. Add a 301 from every HTTP URL to its HTTPS equivalent at the server level. Do it once, globally, rather than page by page.
  4. Fix mixed content. Update hardcoded http:// references to images, scripts, and stylesheets. A single insecure script can strip the padlock and reintroduce risk.
  5. Send HSTS. Add the Strict-Transport-Security header so browsers refuse HTTP for your domain going forward, closing the first-request downgrade window.
  6. Re-crawl and verify. Run Screaming Frog again, confirm zero HTTP form pages remain, and load the page in an incognito window to check for a clean padlock.

Good versus broken

DO
  • Serve every password page over HTTPS end to end
  • Point form actions at HTTPS endpoints explicitly
  • 301 all HTTP traffic to HTTPS at the server
  • Send HSTS to lock the domain to secure requests
  • Re-crawl after changes to confirm zero gaps
DON'T
  • Assume the padlock on the homepage covers the login page
  • Let an HTTPS page POST to an HTTP action
  • Leave hardcoded http:// asset links in the template
  • Ship a self-signed or expired certificate
  • Rely on "nobody will be sniffing" as your control

Reference: where credentials leak

ScenarioPage protocolForm actionSafe?
Fully secureHTTPSHTTPSYes
Page HTTPHTTPHTTPSNo
Action HTTPHTTPSHTTPNo
Both HTTPHTTPHTTPNo

What "good" looks like

Every URL that touches a credential resolves on HTTPS, the form posts to an HTTPS action, HTTP requests 301 to their secure twin, HSTS is live, and a fresh crawl returns no insecure-form or mixed-content flags. The padlock shows on the first load with no downgrade path. Once that is true, this check stays green and you never have to think about it again.

FAQ

Isn't a free Let's Encrypt certificate less secure than a paid one?
No. The encryption strength is identical. Paid certificates buy warranty terms, organization validation, and support, not stronger crypto. For protecting passwords in transit, a free domain-validated certificate does the exact same job.
My page is HTTPS but the check still fires. Why?
Almost always the form action points at an HTTP endpoint, or the page pulls a resource over HTTP and triggers mixed content. Inspect the form's action attribute and check the Console for mixed-content warnings.
Do redirects alone fix this?
Redirects help but leave a gap: the very first HTTP request still happens before the redirect fires, and on a hostile network that request can be intercepted. Pair 301s with HSTS so the browser never sends that first insecure request again.
How much does this really hurt rankings?
The direct HTTPS ranking signal is minor. The bigger hit is behavioral: the browser "Not secure" warning suppresses conversions and trust, and unmanaged HTTP duplicates muddy your canonicals. Fixing it protects users first and cleans up indexing as a bonus.
Want a full sweep for insecure forms and mixed content?

Our team crawls your entire site, catches every credential leaking over HTTP, and hands you a prioritized fix list. Book an advanced SEO audit.

Claude Vincent is a technical SEO consultant focused on crawlability, rendering, and AI-search visibility. He writes the field guides and case studies at SEO ProCheck, with a bias toward the durable, unglamorous work that decides whether search engines and AI answer engines can actually read and cite a site.

About SEO ProCheck

Technical SEO consulting and GEO strategy with 20 years of enterprise experience. Case studies, resources, and tools for search and AI visibility.

Work With Me

Technical SEO audits, GEO strategy, site migrations, and international SEO. Hourly consulting for teams who need hands-on support, not just reports.

Subscribe to our newsletter!

More from our blog