In the digital age we live in, protecting your WordPress site is non-negotiable. This article provides a practical WordPress security guide with a comprehensive checklist of essential measures to defend against hacking, malware and data breaches. You will learn how to secure your site step by step, protect sensitive information and ensure a safe user experience.
Why WordPress Security Matters
- Protecting sensitive data: Personal information and payment data must be protected from unauthorised access;
- Preventing downtime: Security breaches and malware can take your site offline, costing time, money and customers;
- Building customer trust: A secure site reassures visitors that their data is safe;
- Avoiding legal liability: Failing to protect customer data can lead to legal obligations and penalties;
- Improving SEO: Search engines favour secure, malware-free sites.
The Full WordPress Security Checklist
1. Regularly Update WordPress
Keeping WordPress updated is one of the most important security actions. Updates patch vulnerabilities, improve functionality and enhance security. Apply updates promptly — core, themes and plugins.
2. Change the Default Admin Username
The default "admin" username is the first thing brute-force attackers try. Create a new admin account with a unique username and delete the original "admin" account.
3. Create Strong Passwords
Use long, complex passwords for all accounts: WordPress admin, FTP, cPanel, database and email. Use a password manager to generate and store them securely.
4. Enable Two-Factor Authentication (2FA)
2FA adds a second verification layer beyond the password. Even if credentials are stolen, 2FA prevents unauthorised login. Use plugins like Google Authenticator, Wordfence or WP 2FA.
5. Install a Reliable Security Plugin
Security plugins provide firewall protection, malware scanning, login protection and activity monitoring. Recommended options include Wordfence, Sucuri Security and iThemes Security.
6. Use a Web Application Firewall (WAF)
A WAF filters malicious traffic before it reaches your site, blocking SQL injection, XSS, brute-force attempts and other attacks. Cloudflare and Sucuri offer cloud-based WAFs; Wordfence provides a local WAF. Jump.BG includes Imunify360 with WAF at the server level.
7. Regularly Scan for Malware
Schedule regular automated malware scans using your security plugin. Act immediately on any findings. Keep an eye on Google Search Console for security alerts.
8. Choose a Secure Hosting Provider
Your hosting is the foundation of your site's security. Jump.BG provides Imunify360 protection, ModSecurity integration, LiteSpeed server security features and daily backups as standard on all WordPress hosting plans.
9. Create Regular Backups
Backups are your last line of defence. If everything else fails, a recent backup allows full site restoration. Automate backups daily for active sites, weekly for low-traffic sites.
10. Store Backups Separately
Never rely solely on backups stored on the same server. Use off-site storage (Google Drive, Amazon S3, Dropbox) or a dedicated backup service. If the server is compromised, off-site backups remain safe.
11. Monitor User Activity
Use an activity log plugin (WP Activity Log, Simple History) to track all admin actions: login attempts, content changes, plugin activations and settings modifications. This helps identify suspicious behaviour quickly.
12. Manage User Access
Apply the principle of least privilege — give users only the permissions they need. Regularly review user accounts and remove those no longer active. Use Contributor or Author roles for content creators rather than Administrator.
13. Limit Login Attempts
Brute-force attacks try thousands of password combinations. Limiting login attempts (3-5 before lockout) stops these attacks. Most security plugins include this feature, or use the dedicated "Limit Login Attempts Reloaded" plugin.
14. Use a CDN
A CDN distributes your site across multiple servers globally, improving performance and providing DDoS protection. Cloudflare's free plan offers excellent security features including DDoS mitigation and bot protection.
15. Install an SSL Certificate
SSL encrypts data between the user's browser and your server. It is essential for any site handling personal data or payments, and is a ranking factor for Google. Jump.BG provides free Let's Encrypt SSL on all hosting plans.
16. Use SFTP Instead of FTP
FTP transmits credentials in plain text. SFTP (SSH File Transfer Protocol) encrypts the entire session. Always use SFTP for file transfers to your server.
17. Update PHP Version
Outdated PHP versions contain known vulnerabilities. Always use a supported PHP version (8.1 or higher is recommended). Unsupported versions no longer receive security patches.
18. Remove Inactive Themes and Plugins
Inactive themes and plugins are still potential attack vectors. If you are not using them, delete them entirely — do not just deactivate them.
19. Evaluate New Plugins and Themes Before Installing
Before installing any plugin or theme, check: the number of active installs, the last update date, user reviews, the developer's reputation and whether it is from a trusted source (wordpress.org or reputable commercial providers). Avoid nulled/pirated software.
20. Change the Database Prefix
WordPress uses the default wp_ prefix for all database tables. Changing this to a custom prefix (e.g. xk8f_) makes automated SQL injection attacks against default table names ineffective.
21. Customise Login URLs
Moving the login page from /wp-admin and /wp-login.php to a custom URL reduces automated attacks targeting the default paths. Use plugins like WPS Hide Login.
22. Use Strong File Permissions
Correct file permissions prevent unauthorised read/write access: folders should be 755, files 644, and wp-config.php should be 600 or 440. Avoid 777 permissions on any file or directory.
23. Disable File Editing
WordPress allows administrators to edit theme and plugin files from the dashboard. Disabling this prevents attackers who gain admin access from injecting malicious code via the file editor. Add to wp-config.php: define('DISALLOW_FILE_EDIT', true);
24. Restrict Access to wp-admin
Restrict wp-admin access to specific IP addresses via .htaccess or your hosting firewall. This prevents anyone outside your approved IPs from accessing the admin area at all.
25. Implement Security Headers
HTTP security headers instruct browsers on how to handle your site's content. Key headers include Content-Security-Policy, X-Frame-Options, X-Content-Type-Options and Strict-Transport-Security. These can be added via .htaccess or a security plugin.
26. Protect wp-config.php
wp-config.php contains database credentials and security keys. Move it one directory above the web root if possible, restrict its permissions to 600, and block direct access via .htaccess.
27. Disable XML-RPC
XML-RPC is a WordPress feature that enables remote connections. If you do not use it (e.g. for the mobile app or specific integrations), disabling it eliminates a common attack vector used for brute-force and DDoS amplification attacks.
28. Enable Brute-Force Protection
Beyond limiting login attempts, brute-force protection includes CAPTCHA on login forms, progressive delay between failed attempts, IP blocking after repeated failures and notification alerts for suspicious login activity.
29. Regular Security Reviews
Security is not a one-time task. Schedule quarterly reviews of: all user accounts and their permissions; installed plugins and themes (remove unused, update all); backup integrity (test restoring from backup); security scan results; and hosting security settings.
Conclusion
WordPress security requires a layered, proactive approach. No single measure is sufficient — combining updates, strong authentication, a WAF, malware scanning, backups and hardened server configuration creates defence-in-depth. Work through this checklist systematically and you will significantly reduce the risk of your site being compromised. If you need professional assistance, Jump.BG's WordPress Support team can help with security audits, malware removal and ongoing maintenance.