Skip to main content
Free SEO check

Services

Websites
SEO & Google Ads
Digital marketing
Branding
3D & interactive
Apps & AI
All services →

Find me on

Web Development Website Security

Is My Online Store Safe? PHP2Shell and Customer Data (October 2026)

Is my online store safe after PHP2Shell? Where card numbers really go on WooCommerce and Magento, what a hacked server exposes, and what to check this week.

Online shop owner in a Jalan Besar shophouse wondering if her online store is safe

If you sell on WooCommerce or Magento, this week's PHP news probably left you with one question: is my online store safe, and could a hacker get my customers' card numbers? Here's the short answer. If your checkout takes cards through Stripe, PayPal or a similar provider's own payment fields, the card number usually never touches your server. What does sit on your server is everything else: names, delivery addresses, phone numbers, emails, order history and customer passwords, stored as hashes.

And most shops on a patched host are fine. Sansec, a security firm that specialises in malware on online stores, said on 22 October that mass exploitation of PHP2Shell is "less likely than we expected on release day". The shops I'd worry about are the ones on an old PHP version nobody updates, plus a quieter risk that has nothing to do with this week: a skimmer script that steals cards in the customer's own browser. I'm Terris, a Singapore web designer who builds and looks after shops. Here's what's at risk, who patches what, and what to check this week. For what PHP2Shell is in the first place, start with my plain-English guide to the PHP vulnerability.

Is my online store safe right now?

Your online store is probably safe if your host has installed the 21 October PHP fixes and your shop software is up to date. Don't assume it if the shop runs PHP 8.1 or older, sits on a server nobody manages, or you don't know who hosts it. The fixed releases are PHP 8.5.12, 8.4.27, 8.3.36 and 8.2.35, all out on 21 October 2026.

The big shared hosts moved fast. SiteGround applied the fixes on all its servers on 21 October, and Vodien says its shared Linux hosting is done.

The shops I'd check first:

  • A shop on a VPS or cloud server that nobody has logged in to for years.
  • A shop pinned to PHP 7.4, 8.0 or 8.1 because a plugin broke on anything newer.
  • A Magento shop where the developer applies patches "when asked", and nobody asks.

If you don't know your version, my guide to checking your PHP version shows where to find the full number and how to read it.

Where do my customers' card numbers actually go?

With a hosted or embedded payment field from Stripe, PayPal or a similar provider, the card number travels from the customer's browser straight to the provider, and your shop gets back a token and the last four digits. Stripe's security guide says its low-risk integrations send payment details "directly to Stripe without it passing through your servers".

How your checkout is wired decides how much your server ever sees:

How your checkout takes cardsWhere the card number is typedDoes it reach your server?
Redirect to the provider's page (Stripe Checkout, PayPal's own page)On the provider's websiteNo
Card fields embedded in your checkout (Stripe Elements and similar)In an iframe, a small window of the provider's page sitting inside yoursNo, but your page surrounds it
PayNow QRNowhere: the customer pays from their banking appNo card at all
An old or custom plugin that posts card details to your own serverOn your page, then sent to your serverYes, and that's the setup to replace

So a hacker in a typical WooCommerce shop on Stripe won't find card numbers in the database. The catch is the next section.

If card numbers never reach my server, how do skimmers steal them?

Credit card skimming on a website happens in the customer's browser: someone who gets into your site adds a script to the checkout page that copies what the customer types or shows a fake card form, then sends the details to the attacker. The industry calls these attacks Magecart.

A provider's iframe stops a script on your page from reading the real card fields. So the better skimmers don't try. They show their own form first. On 7 April 2026, Sansec reported that "nearly 100 Magento stores got mass-infected" with a skimmer that, when a shopper clicked the checkout button, "displays a full-screen modal overlay instead". The fake overlay took card details and a full billing form, then passed the shopper on to the real checkout. In Sansec's words: "Most victims never notice."

Singapore has its own case. The PDPC's decision on Fortytwo, an online furniture store on an unpatched Magento 1.9, found injected code had captured 6,241 customer logins and the card details of 98 people.

That's why PHP2Shell matters to shops whose cards sit with Stripe: an attacker who can run code on your server can edit your checkout page.

What could an attacker with server access take from my shop?

An attacker with access to your shop's server can take whatever its database and files hold: customer names, billing and delivery addresses, phone numbers, emails, order history and password hashes, plus the API keys your payment and email plugins save. On WooCommerce it all sits in the WordPress database.

  • Customer and order records. Five years of trading can mean thousands of addresses and phone numbers.
  • Password hashes. Scrambled, not plain text, but weak passwords can still be cracked.
  • Payment gateway keys. To connect, the HitPay plugin for WooCommerce asks you to copy API keys and Salt values from your HitPay dashboard into WordPress, and Stripe's plugin stores its keys the same way. A stolen secret key lets someone act on your payment account through its API.
  • Email and SMS keys, for messages that look like they came from your shop.

PHP2Shell adds one more route. One of the two bugs, CVE-2026-109618, can leak pieces of server memory back to whoever sent the request. Sansec says that memory "can contain passwords, session tokens, API keys and TLS private keys from other requests". So a shop that ran unpatched could have leaked a key without anyone ever logging in.

What has Sansec said about PHP2Shell and online stores?

Sansec says every PHP shop is affected because the bugs sit in PHP itself, that mass exploitation now looks less likely than it first feared, and that the only real fix is updating PHP. Its PHP2Shell write-up says:

  • "The flaws are in the PHP engine, so Magento, Shopware and WooCommerce stores are affected", even when the shop's own code is clean.
  • It cites the researchers at Calif showing that an attacker without a login can run code on Magento 2.4.9.
  • In an update on 22 October: "Mass exploitation of PHP2Shell is less likely than we expected on release day", and "The public exploits do not work against a default PHP installation."
  • "You do not need to take your store offline."
  • Its own store firewall, Shield, can't help, because the attack paths "run inside PHP, before your store code and before Sansec Shield". Its advice: "Do not wait for a Shield rule to protect you. Update PHP."

One thing Sansec doesn't say is "rotate your keys". That part is my advice, because of what it says the memory leak can contain.

WooCommerce security vs Shopify and Magento: who patches what?

On Shopify, Shopify patches everything underneath your shop. On WooCommerce and Magento, your host or developer patches PHP, and someone on your side has to update the shop software and plugins. That split is most of what WooCommerce security comes down to.

Your shop runs onWho patches PHPWho updates the shop softwareYour job this week
ShopifyShopifyShopifyTwo-factor login on every staff account, and a look at which apps you've installed
WooCommerce on shared hostingYour hostYou or your developer: WordPress, WooCommerce, theme and pluginsConfirm the PHP version, update plugins, check admin users
WooCommerce on a VPS or cloud serverWhoever manages that serverYou or your developerGet PHP updated and restarted, then the same checks
Magento Open Source or Adobe Commerce on your own hostingYour host or developerYour developer, installing Adobe's security patchesBoth: the PHP fix and any Magento patches outstanding

Shopify says it is "certified Level 1 PCI DSS compliant", the highest level. It has also locked down its checkout: per Shopify's help centre, the "additional scripts" box in checkout settings, where store owners used to paste code, has been view-only since 28 August 2025. WooCommerce has no such lock: anyone with an admin login can add a script to the checkout.

How do I know if my checkout has been tampered with?

The clearest sign is a customer or their bank telling you their card was misused after buying from you. Before that happens, look for a card form that looks or behaves differently, admin accounts you don't recognise, and scripts in the checkout that nobody added. These are the checks I run on a shop:

  • Place a test order on your phone. Watch for a card form that pops up over the page, asks for your card twice, or errors and then shows a second form. That's how the fake overlays behave.
  • Check the admin list. In WooCommerce, go to Users and filter by Administrator. In Magento, go to System, then Permissions, then All Users. Anyone you can't name should go.
  • Check where scripts get added. In WordPress, any "header and footer code" plugin. In Magento, Content, then Design, then Configuration, where the HTML Head and Footer fields accept code. Code you didn't put there is a red flag.
  • Look at your payment dashboard. Small failed charges in a run, refunds you didn't make, or API keys you don't recognise all need explaining.

Free scanners catch known malware and blocklist warnings, but often miss a checkout page that only loads once something is in the cart. My roundup of free website security check tools covers what each one sees.

If you find something, stop and read my first-24-hours plan for a hacked site before you delete anything, because a skimmer removed without finding the way in usually comes back.

What should I do this week to keep my online store safe?

This week, confirm PHP is patched, update the shop software, clear out unknown admin accounts, test the checkout, and rotate your payment gateway API keys if the shop ran unpatched after 17 October. In this order:

  1. Get the PHP version in writing from your host or developer: 8.5.12, 8.4.27, 8.3.36, 8.2.35 or later, or a vendor build that carries the fix.
  2. Take a backup, then update WooCommerce or Magento, the theme and every plugin. Place a test order afterwards.
  3. Remove admin users you don't recognise, and ex-staff. Turn on two-factor login for everyone left.
  4. Test the checkout on your phone, as described above.
  5. Rotate your payment gateway API keys. In Stripe, you roll the secret key in the Dashboard (Stripe's key best practices explain how). In HitPay, the keys sit under Settings, then Payment Gateway, then API Keys. Paste the new keys into the shop plugin and test again. Amazon logged a PHP2Shell attempt on 17 October, Tenable reports, so that's the date I count from.
  6. Switch on payment alerts, sent to an inbox someone reads daily.
  7. Change the other passwords: shop admin, hosting account and database, starting with any shared with a past developer.

If nobody on your side knows where these settings are, that's the work I do as part of my website maintenance service: the fix at a fixed price in writing, from SGD 850, covering the updates and anything they break.

What does PCI DSS mean for a small online shop?

PCI DSS is the card industry's security standard, and any shop that accepts cards has to follow it and confirm it once a year, usually by filling in a self-assessment questionnaire (SAQ) that matches how your checkout takes cards. If your checkout redirects to the provider's page or uses its iframe, you're usually on SAQ A, the shortest form. Since a 2025 revision, a shop with an embedded payment iframe must also confirm that page is "not susceptible to attacks from scripts", either with its own script controls or with written confirmation from its payment provider, as the PCI Security Standards Council explained in February 2025. If your site doesn't receive card data but controls how it reaches the provider, for example a form that sends the card straight from your page to the processor, that's SAQ A-EP, which is far longer. Card numbers on your own server put you in full scope, which no small shop needs. Your payment provider can tell you which form applies.

What if my customers' data has already leaked?

If you have credible grounds to believe customer data was taken, the PDPA gives you up to 30 days to assess whether the breach is notifiable and then 3 calendar days to tell the PDPC, and card numbers or logins with passwords count as significant harm however few people are affected. Two shop cases show where it ends up:

  • Fortytwo: an unpatched Magento 1.9 shop, injected code, 6,241 logins and 98 people's card details captured. Fined S$8,000 and directed to upgrade.
  • Goldheart Jewelry: a Magento patch released in February 2022 went on 11 months later. The data of 41,379 customers ended up on a forum. Fined S$58,000.

Hiring a vendor doesn't move the duty off the business. My guide to your PDPA data breach duties after a hack walks through the assessment, the deadlines and what to tell customers.

Do I need to take my online store offline?

No, not if PHP is patched. Sansec says stores don't need to go offline, though the US agency CISA advises taking PHP systems that can't be patched offline until they are. CISA's alert is aimed at systems on PHP 8.1 or older with no fix in sight. For a shop in that position, with customer data on it, I'd follow CISA: a holding page with your WhatsApp number for a few days costs less than a breach.

Is WooCommerce safe enough for a small shop?

WooCommerce is safe enough for a small shop when someone updates PHP, WordPress and the plugins every month. If nobody will, a hosted platform like Shopify takes the patching off your plate, in exchange for monthly fees and less control. The shops in trouble this week are the ones nobody has touched since launch.

So, is my online store safe? For most WooCommerce and Magento shops on a patched host, yes. Card numbers typed into your payment provider's own page or fields don't sit on your server. Your customers' names, addresses and logins do, and so does a checkout page an attacker could rewrite. Patch PHP, update the shop, clear out old admins, rotate your gateway keys, and test the checkout on your phone.

If you're not sure where your shop stands, start with my free PHP check. Send me the address and I'll tell you which PHP version it runs, what it's built on and how old its plugins are. If it needs work, you get a fixed price in writing before I start, from SGD 850. To keep it updated after that, the content retainer is SGD 550 a month for updates, backups, security and 5 hours of changes, month to month.

Sources and references (15)
  1. sansec.io › php2shell
  2. sansec.io › svg onload magecart skimmer
  3. docs.stripe.com › guide
  4. docs.stripe.com › keys best practices
  5. wordpress.org › hitpay payment gateway
  6. shopify.com › security
  7. help.shopify.com › checkout upgrade
  8. blog.pcisecuritystandards.org › faq clarifies new saq a eligibility criteria for e commerce merchants
  9. listings.pcisecuritystandards.org › PCI DSS v4 0 SAQ A EP
  10. pdpc.gov.sg › breach of the protection obligation by fortytwo
  11. pdpc.gov.sg › breach of the protection obligation by goldheart jewelry pte ltd
  12. siteground.com › critical php vulnerabilities october 2026
  13. pulse.vodien.com
  14. cisa.gov › critical vulnerabilities php require immediate patching
  15. tenable.com › php2shell cve 2026 109618 cve 2026 109619 frequently asked questions about critical php remote
Back to top

Written by

Terris

Web designer in Singapore

I've built websites for Singapore businesses full-time since 2018, across 290+ projects. I write, design and build each one myself, then do its SEO and Google Ads. These articles are what I'd tell a client who asked.

610+ articles written

Message me about your website, your SEO or your ads

I build the website myself, then handle the SEO and the Google Ads after it goes live. Tell me what you need and I'll give you a straight answer and a price.

Email me
I read every message myself