Guide Ecommerce & WooCommerce

How to secure an online store

A store is a bigger target than a brochure site because there is more to steal and more ways in — here is where to focus first.

Updated 9 min read Intermediate

A store is a more attractive target than a typical WordPress site for a straightforward reason: there is more of value on it. Customer accounts, order history, sometimes stored payment tokens, and a checkout that — if compromised — can be quietly modified to skim payment details before anyone notices. Securing a store means the usual WordPress hardening plus a specific focus on the checkout flow itself.

Start with the WordPress fundamentals

None of the store-specific advice below matters if the basics are missing, so confirm these first:

  • WordPress core, your theme and every plugin are kept updated.
  • Admin accounts use strong, unique passwords, and two-factor authentication is turned on for anyone with admin access.
  • Only plugins you actually use are installed — every inactive plugin is still a potential vulnerability sitting on the server.
  • File permissions follow the standard safe defaults rather than being loosened to solve an unrelated problem.

These apply to any WordPress site, store or not, and are covered in more depth in a practical website security checklist.

What is specifically different about a store

RiskWhy a store faces it more than a brochure site
Checkout skimmingMalicious code injected into a checkout page can quietly capture card details as customers type them, particularly on a self-hosted card form. Using a tokenised or hosted payment flow removes most of this risk by keeping card fields off your page entirely.
Account takeoverCustomer accounts often reuse passwords from elsewhere, and a store with weak login protections is an easy target for credential-stuffing attempts.
Fake or fraudulent ordersAutomated bots probe checkouts with stolen card numbers to test whether they still work, which shows up as a burst of small failed or suspicious orders.
Plugin sprawlStores tend to accumulate more plugins than average — shipping calculators, marketing tools, upsell widgets — each one a potential weak point.

Use a tokenised or hosted payment flow

This is the single highest-impact decision for checkout security. Stripe Elements and PayPal's integrated buttons keep card data off your server entirely, which means even if your site were compromised, there is no card number sitting in your code or database for an attacker to capture. A self-hosted card form does not have this protection — see how to take payments on your website for the full comparison, and avoid building your own card form unless you have a specific, well-understood reason to.

Watch for checkout pages that look right but behave differently

Skimming code is designed to be invisible to a normal visitor — the page looks and functions exactly as expected while quietly sending data somewhere it should not. Periodically review your checkout's actual page source, or use a security scanner that checks for known skimming patterns, rather than relying on the page simply looking fine.

Protecting customer accounts

  • Enforce a reasonable password strength requirement on account creation rather than accepting anything.
  • Rate-limit or lock out repeated failed login attempts on customer accounts, not just the WordPress admin login.
  • Avoid storing more customer data than you need — a field you do not collect cannot be stolen.

Keeping an eye on fraud, not just intrusion

A secure store can still lose money to card testing and fraudulent orders even without ever being hacked. Most payment providers, including Stripe and PayPal, offer built-in fraud detection tools — turn these on rather than leaving them at whatever the default happens to be, and review flagged orders rather than auto-approving everything that arrives.

Malware scanning and monitoring

Run regular malware scans specifically because a store has more to lose from a slow discovery — every day an infection goes unnoticed on a checkout page is a day of customer payment data potentially at risk. See how to scan your site for malware for how to set this up, and treat any unexpected file change on a checkout-related page as urgent rather than routine.

If something does go wrong

Have a plan before you need one: know how to put the store into maintenance mode quickly, know how to restore from a clean backup, and know how you would notify affected customers if payment-related data were ever at risk. Backing up a store without losing orders covers the recovery side of this, and a tested backup is the difference between a bad afternoon and a bad month.

Treat SSL as infrastructure, not a one-time setup step

Confirm your certificate renews automatically and monitor for expiry warnings. A checkout that briefly loses HTTPS because a certificate lapsed is both a security gap and an immediate stop to every sale until it is fixed.

Related reading