Premium security report
shop.example.com
Grade D: Weak
8 issues need attention.
Your site has some serious gaps. The fix plan below lists what to do first and who can do it.
At a glance
How your website looks from the outside, in four areas that matter to a business.
-
Visitor trust & HTTPS
Needs attention · 1 issue
Visitors are protected, but some HTTPS settings should be tightened.
-
Hacker entry points
At risk · 2 issues
Attackers could use exposed files, outdated software or unsafe scripts to break in.
-
Email impersonation
Needs attention · 1 issue
Email protection is only partly set up; fake emails in your name may still get through.
-
Browser protections
Needs attention · 4 issues
Some browser protections are missing; adding them is usually quick.
Technical details we checked
SSL / HTTPS
- Status
- Valid certificate
- Issued by
- Let's Encrypt (R11)
- Expires
- 24 Oct 2026 (12 days)
- Protocol
- TLSv1.3
Security headers 2 of 6
- Content-Security-Policy: missing
- Strict-Transport-Security: missing
- X-Frame-Options: missing
- X-Content-Type-Options: missing
- Referrer-Policy: present
- Permissions-Policy: present
Email security
- SPF: found and strict
- DMARC: missing
- DKIM: not detected (may still exist)
Technology and exposure
- WordPress
- WooCommerce
- Apache
- PHP
1 sensitive file(s) or path(s) are publicly reachable.
What changed since your last scan
Compared with the scan of shop.example.com on 11 Sep 2026.
1 Fixed since last scan
- Directory listing enabled
1 New since last scan
- highOutdated WordPress plugin
Do these first
We grouped the findings into 6 actions, most important first. One action often fixes several issues.
Your score could go from 56 to 95 after the first 5 actions. Completing all 6 could take it to about 100.
An estimate from our scoring model, assuming each fix is completed and confirmed by a new scan.
Instructions are tailored to WordPress, which we detected on your site.
-
Action 1: Update WordPress plugins and themes
+12 pointsOut-of-date plugins and themes are one of the most common ways small WordPress sites get hacked.
How to do it on WordPress
- Take a full backup first.
- Go to Dashboard > Updates and update every plugin and theme named in the findings.
- Delete plugins and themes you no longer use; inactive ones can still be attacked.
- Switch on auto-updates for plugins you trust (Plugins > Enable auto-updates), then scan again.
-
Action 2: Renew your SSL certificate and turn on auto-renewal
+5 pointsWhen a certificate expires, browsers show a full-page warning that turns most visitors away.
How to do it on cPanel (Apache)
- Log in to cPanel and open SSL/TLS Status.
- Select your domain and its www version, then click Run AutoSSL.
- Wait a few minutes and open your site in a private window to check the padlock.
- Leave AutoSSL switched on so the certificate renews itself.
-
Action 3: Add security headers
+12 pointsThese free browser settings block clickjacking, content sniffing and data leaks with a few lines of configuration.
How to do it on WordPress
- Install a reputable headers plugin, or ask your developer to add the headers to .htaccess.
- Turn on Strict-Transport-Security, X-Frame-Options (SAMEORIGIN), X-Content-Type-Options (nosniff), Referrer-Policy and Permissions-Policy.
- Clear any caching plugin and scan again.
-
Action 4: Protect your login pages
+5 pointsLogin pages are hit by password-guessing bots around the clock; strong passwords and two-factor login stop most of them.
How to do it on WordPress
- Install a security plugin with login limiting and two-factor login (for example Wordfence or Solid Security).
- Turn on two-factor login for every administrator.
- Disable XML-RPC and hide the public user list if you do not need them (most security plugins have a switch).
- Remove administrator accounts nobody uses.
-
Action 5: Stop fraudsters sending email as your domain
+5 pointsWithout SPF, DKIM and DMARC, anyone can send invoices or payment requests that appear to come from your business.
How to do it on cPanel (Apache)
- Open cPanel > Email Deliverability and click Repair (or Install) for SPF and DKIM.
- If your email is with Google Workspace or Microsoft 365, use their SPF include and DKIM record instead.
- In Zone Editor add a TXT record named _dmarc: v=DMARC1; p=quarantine; rua=mailto:you@yourdomain.
- Check that normal email still arrives, then scan again.
Show 1 more action
-
Action 6: Add a Content Security Policy
+5 pointsA Content Security Policy limits which scripts can run, which blunts card-skimming and script-injection attacks.
How to do it
- Start with a Content-Security-Policy-Report-Only header so nothing breaks.
- List the outside services your site really uses (analytics, fonts, payments, chat).
- Tighten the policy until the reports are clean, then switch to the enforcing header.
- Avoid 'unsafe-inline' and 'unsafe-eval' for scripts where possible.
All findings
Grouped by area. Open any finding for the explanation and what to do.
Visitor trust & HTTPSNeeds attention
medium SSL certificate expires soon
SSL / HTTPS
Your security certificate expires within the next 30 days. If it is not renewed in time, visitors will see a scary browser warning and may not be able to use your site.
Affected: https://shop.example.com/
Evidence
Certificate expires on 2026-10-24 (in 12 days)
How to fix it
cPanel: SSL/TLS Status > Run AutoSSL.
Certbot: sudo certbot renew --dry-run (fix any errors it shows), then confirm the systemd timer or cron job exists.
Cloudflare edge certificates renew automatically; this warning then refers to your origin certificate.
References
Hacker entry pointsAt risk
high Outdated WordPress plugin
Technology
One of the plugins on your WordPress site is older than the latest version published on wordpress.org. Plugins are the most common way small WordPress sites get hacked: when a security fix is released, the details become public and bots start looking for sites that have not updated yet. We compared the version your site shows with the official wordpress.org listing; we did not test the plugin for any specific weakness.
Affected: https://shop.example.com/wp-content/plugins/shop-slider-pro/
Evidence
Plugin "shop-slider-pro" 2.1.0 is installed; wordpress.org lists 3.4.2 (fictional sample data).
How to fix it
WordPress: take a backup (e.g. UpdraftPlus or your host's backup tool), then Dashboard > Updates > select the plugin > Update Plugins. Turn on "Enable auto-updates" for the plugin on the Plugins screen.
WP-CLI: wp plugin update <slug> (or: wp plugin update --all)
cPanel: use your host's backup first (cPanel > Backup or JetBackup), then update from the WordPress dashboard; Softaculous / WordPress Toolkit can also update plugins and switch on auto-updates.
Premium plugins bought outside wordpress.org: download the latest zip from the vendor and upload it under Plugins > Add New > Upload Plugin (WordPress offers to replace the old version).
Remove plugins you do not use: deactivate, then Delete.
References
medium WordPress usernames are publicly listed
Exposed files
Your WordPress site publishes the login names of its users through its API. Attackers use these names for password-guessing attacks against your admin login.
Affected: https://shop.example.com/wp-json/wp/v2/users
Evidence
/wp-json/wp/v2/users lists 2 user names
How to fix it
Plugin: a security plugin (e.g. Wordfence, Solid Security) can block user enumeration.
Code (functions.php):
add_filter('rest_endpoints', function ($e) { if (!is_user_logged_in()) { unset($e['/wp/v2/users'], $e['/wp/v2/users/(?P<id>[\d]+)']); } return $e; });
Also enable two-factor login for admins.
References
info WordPress login page is publicly reachable
Admin
Your WordPress login page is open to the internet, as on most WordPress sites. Bots constantly try passwords against it, so it must be protected with strong passwords and ideally two-factor login.
Affected: https://shop.example.com/wp-login.php
Evidence
/wp-login.php is reachable
How to fix it
Install a security plugin with login rate-limiting and 2FA (e.g. Wordfence, Solid Security, WP 2FA).
Optional: restrict /wp-login.php by IP or add HTTP Basic Auth in front of it; Cloudflare: WAF rate-limiting rule on /wp-login.php.
References
Email impersonationNeeds attention
medium No DMARC record (email spoofing risk)
DNS and email
DMARC tells email providers what to do with emails that pretend to come from your domain, and sends you reports about them. Without it, phishing emails using your name are more likely to reach your customers' inboxes. Gmail and Yahoo now require DMARC for bulk senders.
Affected: _dmarc.example.com
Evidence
No DMARC record at _dmarc.example.com
How to fix it
Add a TXT record named _dmarc with value:
v=DMARC1; p=none; rua=mailto:dmarc@yourdomain.com; fo=1
After 2-4 weeks of clean reports change to p=quarantine, then p=reject.
Cloudflare: Email > DMARC Management can set this up.
References
info DKIM signing not detected
DNS and email
DKIM adds a digital signature to your emails so receivers can confirm they really came from you. We checked common settings and did not find it; it may still be set up under a different name.
Affected: example.com
Evidence
No DKIM key at common selectors (default, google, selector1, selector2, k1, mail)
How to fix it
Google Workspace: Admin console > Apps > Gmail > Authenticate email > Generate new record.
Microsoft 365: Defender portal > Email authentication > DKIM.
cPanel: Email > Email Deliverability > DKIM > Install the suggested record.
References
Browser protectionsNeeds attention
medium No Content Security Policy
Security headers
A Content Security Policy tells browsers which scripts are allowed to run on your pages. Without it, if an attacker manages to inject code (for example through a vulnerable plugin or a form), it will run in your visitors' browsers and can steal logins or show fake payment pages.
Affected: https://shop.example.com/
Evidence
Content-Security-Policy header not present
How to fix it
Starter policy (adjust the allowed domains for your analytics, fonts, payment widgets):
Content-Security-Policy: default-src 'self'; script-src 'self' https://www.googletagmanager.com; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; font-src 'self' https://fonts.gstatic.com; img-src 'self' data: https:; frame-ancestors 'self'; base-uri 'self'; form-action 'self'; object-src 'none'
Apache (.htaccess):
Header always set Content-Security-Policy "default-src 'self'; object-src 'none'; frame-ancestors 'self'; base-uri 'self'"
Nginx:
add_header Content-Security-Policy "default-src 'self'; object-src 'none'; frame-ancestors 'self'; base-uri 'self'" always;
Cloudflare: Rules > Transform Rules > Modify Response Header > Set static.
WordPress: use a headers plugin (e.g. "HTTP Headers") or add the header in .htaccess; test with Content-Security-Policy-Report-Only first.
References
medium HSTS is not enabled
Security headers
HTTP Strict Transport Security (HSTS) tells browsers to always use the secure version of your site. Without it, an attacker on public Wi-Fi can silently downgrade a visitor to the insecure version and read or change what they see.
Affected: https://shop.example.com/
Evidence
Strict-Transport-Security header not present
How to fix it
Apache (.htaccess):
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
Nginx:
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
Cloudflare: SSL/TLS > Edge Certificates > HTTP Strict Transport Security (HSTS) > Enable.
Start with max-age=86400 if unsure, then raise it to one year.
References
medium Site can be embedded by other websites (clickjacking)
Security headers
Other websites can load your pages invisibly inside their own and trick visitors into clicking buttons on your site (for example "Pay" or "Delete account"). This is called clickjacking.
Affected: https://shop.example.com/
Evidence
Neither X-Frame-Options nor CSP frame-ancestors is set
How to fix it
Apache (.htaccess):
Header always set X-Frame-Options "SAMEORIGIN"
Nginx:
add_header X-Frame-Options "SAMEORIGIN" always;
Modern alternative (in your CSP): frame-ancestors 'self';
WordPress admin already sends this header; it is the public pages that need it.
References
low X-Content-Type-Options header missing
Security headers
Without this header, some browsers try to "guess" what a file is, which can let an uploaded file be run as a script.
Affected: https://shop.example.com/
Evidence
X-Content-Type-Options header not present
How to fix it
Apache: Header always set X-Content-Type-Options "nosniff"
Nginx: add_header X-Content-Type-Options "nosniff" always;
Cloudflare: Transform Rules > Modify Response Header.
References
Score history for shop.example.com
Verify your fixes
After you or your developer make changes, scan shop.example.com again. The new scan checks the live site from scratch and shows what changed since this one.
This form is disabled in the sample. Scan your own website to use it.
Keep it secure
Websites change after today: plugins age, certificates expire and settings get undone. Choose how you want to keep watch.
Free Security Watch
Keep an eye on your website, free
- A short re-scan summary by email once a month: your score, what changed and the top issues.
- A reminder 21 and 7 days before your SSL certificate expires.
- A reminder 30 days before your domain registration expires, when the registry publishes the date.
Up to 3 websites per email address. Unsubscribe with one click from any email. Need weekly scans, every finding and instant alerts? See Monitoring ($349 / year).
A deeper check
An automated scan sees only the outside. A security analyst can test logins, forms and payments by hand and retest after you fix.
Ask about an auditSend this report to your developer
Whoever looks after your website (web developer, agency or hosting provider) gets a link to this report, including the step-by-step fix plan. You can send it to yourself too.
This form is disabled in the sample. Scan your own website to use it.
This is an automated, non-destructive assessment of what was publicly visible at the time of the scan. It does not test login areas or business logic, and a good score does not guarantee a website cannot be hacked. Score projections are estimates. Terms
Checking the security of
your website
- SSL certificateIs HTTPS valid, current and correctly set up?
- Security headersBrowser protections against clickjacking and script injection
- DNS and email securitySPF, DMARC and DKIM records that stop fake emails
- TechnologyVisible software and versions attackers look for
- ExposureBackup files, config files and admin pages left public
This usually takes 10 to 30 seconds. Please keep this page open.
Now see your own website's report
The free scan takes about 30 seconds and needs no sign-up. You will get a score, the risk areas and your fix plan, like the sample above.