
Most security guides tell you to ‘use strong passwords and enable MFA.’ That advice is not wrong but it leaves out the 80% that actually matters when a bot is hammering your login page at 50,000 attempts per minute.
This guide is not about theory. It is about what happens in practice, why certain defenses fail, and what a layered, real-world brute force attack prevention setup looks like in 2026, when attackers are running GPU-powered tools and AI-assisted credential lists.
Quick Stat: Brute force and credential-based attacks account for 37% of all web application breaches in 2026 according to Verizon’s Data Breach Investigations Report. The UK’s ICO fined Cathay Pacific £500,000 after a brute force attack exposed 9.4 million passenger records.
Whether you manage a WordPress site, a custom web app, an SSH server, or an API, this guide covers your specific situation with actual configuration steps, not generic advice.
What This Guide Covers
- What a brute force attack actually is (and the 2026 version you haven’t heard about)
- The 6 types of brute force attacks with real examples
- 12 proven prevention techniques with step-by-step instructions
- Platform-specific fixes: WordPress, SSH, Nginx, Apache, API endpoints
- How to detect an attack that is already running
- AI-powered attacks: the threat most guides are not covering yet
- Tools and plugins comparison table
- Brute force prevention checklist you can use today
- Sources and further reading
1. What Is a Brute Force Attack, and Why 2026 Is Different
A brute force attack is when an automated program tries username and password combinations against your login system until one works. That is the textbook definition, and it has been true since the 1990s.
Here is what changed: in 2026, attackers are not guessing blindly anymore. They have databases of over 8.4 billion leaked credentials from past breaches (the RockYou2024 dataset, for reference). They are not running one script from one IP address. They are running distributed bot networks that rotate IPs, mimic human browser fingerprints, and space out requests to stay under your rate limits.
The old ‘lock the account after 5 failed attempts’ advice was written for a different era. Today, a smart attacker will make exactly 4 attempts, move to the next account, come back three hours later, and you will never trigger a lockout.

2. The 6 Types of Brute Force Attacks
Understanding which type of attack you are facing changes your defense strategy completely. These are not interchangeable:
| Attack Type | How It Works | Who It Targets | Hardest to Stop With |
| Simple Brute Force | Tries every possible character combination — aaa, aab, aac… | Systems with no lockout policy | Long passwords alone |
| Dictionary Attack | Uses a list of common words and known passwords | Weak or reused passwords | Common password bans alone |
| Credential Stuffing | Uses real username/password pairs from past data breaches | Anyone reusing passwords across sites | Password strength — it already has the right one |
| Password Spraying | Tries one common password (e.g. ‘Winter2026!’) across thousands of accounts | Corporate environments with lockout policies | Account lockout — it stays under the threshold |
| Rainbow Table Attack | Uses pre-computed hash tables to reverse password hashes | Poorly hashed databases | Salted hashing (which you should be using anyway) |
| Hybrid Attack | Combines dictionary words with number/symbol variations (e.g. password1, p@ssw0rd) | Semi-complex passwords | Complexity rules alone |
⚠️ Password spraying is the most dangerous type for organizations right now because it specifically bypasses lockout policies. If your only defense is account lockout, you are not protected against this.
3. How to Prevent Brute Force Attacks: 12 Real Techniques
These techniques are ordered by the impact they have versus the effort to set them up. Start from the top.
3.1 Enable Multi-Factor Authentication (MFA) – The Single Biggest Win
MFA does not stop brute force attacks from happening. It stops them from succeeding. Even if an attacker gets the right password, they cannot log in without the second factor.
But not all MFA is equal:
| MFA Type | Protection Level | Vulnerable To | Recommended? |
| SMS OTP | Medium | SIM-swap attacks, interception | Only as last resort |
| App-based TOTP (Google Authenticator, Authy) | High | Device theft, phishing | Yes — for most sites |
| Hardware key (YubiKey, Passkey) | Very High | Almost nothing practical | Yes — for admin accounts |
| Email OTP | Low-Medium | Email account compromise | Avoid for sensitive logins |
💡 For WordPress sites, the best MFA plugin is WP 2FA or Wordfence Login Security. Both are free to start and support TOTP apps. More on WordPress specifically in Section 5.
3.2 Rate Limiting – Slowing Down the Attack Clock
Rate limiting means restricting how many login attempts can come from a single IP (or account) within a set time window. A bot trying 1,000 attempts per minute suddenly has to wait days or weeks to try the same number.
Here is a real Nginx rate limiting configuration:
# In nginx.conf — http block limit_req_zone $binary_remote_addr zone=login:10m rate=5r/m; # In your server block location /wp-login.php { limit_req zone=login burst=3 nodelay; limit_req_status 429; }
This allows a maximum of 5 requests per minute from any single IP to your login page, with a burst of 3. After that, the server returns a 429 Too Many Requests. For Apache users, the mod_ratelimit or mod_evasive modules handle the same job.
💡 Rate limit by both IP and username separately. An attacker rotating IPs can still be caught if the same username sees too many failed attempts across different IPs.
3.3 Account Lockout Policy – Use It Right, Not Just ‘Enable It’
Account lockout is commonly misunderstood. A plain lockout after 5 failed attempts creates two problems: it locks out real users who mistype, and it enables a denial-of-service attack where an attacker locks out all accounts intentionally.
The correct approach is progressive throttling, not hard lockout:
- After 3 failed attempts: add a 30-second delay before the next attempt is accepted
- After 5 failed attempts: add a 5-minute delay
- After 10 failed attempts: require email verification before next attempt
- After 20 failed attempts from one IP: block that IP temporarily (not permanently)
This approach stops bots without locking out real users permanently.
⚠️ Never use permanent account lockout. An attacker can intentionally trigger it for every account on your system, effectively shutting down access for all legitimate users, a denial of service via your own security measure.
3.4 CAPTCHA – Where It Helps and Where It Does Not
CAPTCHA adds a human verification step that automated bots cannot complete. Google reCAPTCHA v3 is the current standard and works invisibly for real users, it scores behavior in the background and only challenges suspicious traffic.
Where CAPTCHA actually works well:
- Login pages with no prior authentication
- Registration forms
- Password reset pages
Where CAPTCHA has real limitations:
- Sophisticated attackers use CAPTCHA-solving services (human farms that charge $0.50-$2 per 1,000 solves)
- Some AI CAPTCHA solvers now handle image challenges with high accuracy
- reCAPTCHA v2 checkbox is weaker than v3 behavioral scoring
💡 Use CAPTCHA as one layer, not your primary defense. Combined with rate limiting and MFA, it adds meaningful friction even if it is not unbreakable alone.
3.5 Strong Password Policy – The Numbers That Actually Matter
The password complexity rules most organizations use (one uppercase, one number, one symbol) are mostly security theater. Here is what the research from NIST SP 800-63B actually says:
| Password Type | Example | Time to Crack (2026 GPU) | NIST Recommendation |
| 8 chars, mixed case + symbols | P@ssw0rd | Under 1 hour | Not recommended |
| 12 chars, random | j4Kx!mN9qR#v | Months to years | Acceptable minimum |
| 15+ char passphrase | correct-horse-battery-staple | Centuries (practically uncrackable) | Strongly preferred |
| Repeated across sites | AnyPassword1 | Already in breach databases | Never |
📌 NIST Guidance: NIST SP 800-63B (the US government’s digital identity standard) recommends: minimum 8 characters, support for up to 64 characters, no mandatory complexity rules, mandatory checking against known-breached password lists, and no forced password rotation unless a breach is known.
3.6 IP Blocklisting and Geo-Blocking
IP blocking means rejecting traffic from known malicious IP addresses before it even reaches your login page. The challenge is that attackers rotate IPs, so static blocklists have limited value unless they are updated continuously.
Practical IP blocking approaches:
- Use a threat intelligence feed like AbuseIPDB or Cloudflare’s bot intelligence, these are dynamically updated
- Block entire IP ranges for countries you do not serve (geo-blocking), this alone stops a significant percentage of automated attacks
- Automatically block any IP that triggers 10+ 404 errors in a short window (common scanner behavior)
- Allowlist your own office IPs for admin panel access, then nobody else can even reach it
💡 Allowlisting is more powerful than blocklisting for your admin panel. If only 2-3 known IP addresses should ever access /wp-admin or your SSH port, whitelist them and block everyone else by default.
3.7 Change Default Login URLs
Every WordPress site on the planet has its login at /wp-login.php or /wp-admin. Attackers know this and target it by default. Moving the login URL to something non-standard eliminates all automated attacks that rely on finding the standard path, which is most of them.
For WordPress: the WPS Hide Login plugin changes the URL without modifying core files. For custom applications, simply route your authentication endpoint to a non-predictable URL.
⚠️ Do not confuse obscurity with security. Changing the URL is friction, not a lock. Combine it with MFA and rate limiting, not instead of them.
3.8 Web Application Firewall (WAF) Rules
A WAF sits between the internet and your server and inspects every request for attack patterns. For brute force attacks specifically, a WAF can:
- Detect and block high-frequency login requests
- Identify credential stuffing patterns (many unique username/password pairs from one IP)
- Block known bot user agents and malformed request signatures
- Challenge suspicious traffic with CAPTCHA before it reaches your application
Cloudflare WAF is the most widely used. Their free plan includes basic bot protection. The paid plan adds rate limiting rules and credential exposure alerts. Sucuri and Wordfence (for WordPress specifically) are also strong options.
3.9 SSH Hardening – Stop Brute Force on Port 22
If you have an SSH server exposed to the internet, it is being brute-forced right now. Port 22 gets scanned within minutes of a new server going online. Here are the non-negotiable hardening steps:
# In /etc/ssh/sshd_config # Disable password authentication entirely, use SSH keys only PasswordAuthentication no # Disable root login PermitRootLogin no # Limit to specific users only AllowUsers yourusername # Change from default port 22 (optional but reduces noise) Port 2222 # Add login rate limiting MaxAuthTries 3 LoginGraceTime 30
Then install Fail2ban, which monitors auth logs and automatically bans IPs that exceed failed attempt thresholds:
sudo apt install fail2ban # Default config blocks SSH attackers after 5 fails within 10 minutes # Customize in /etc/fail2ban/jail.local
3.10 Monitor Authentication Logs Actively
Most brute force attacks run for hours or days before being noticed. Active log monitoring cuts that window to minutes. Here is what to watch:
- Multiple failed logins for the same username from different IPs (classic password spraying)
- One IP hitting many different usernames (classic credential stuffing)
- Logins from geographically impossible locations (user logs in from UK, then 10 minutes later from Brazil)
- Login attempts outside normal business hours for corporate systems
- Successful logins immediately followed by bulk data access or privilege escalation
For log monitoring tools: Splunk and Elastic SIEM are enterprise-grade. For smaller setups, GoAccess gives you real-time Nginx/Apache log analysis. Cloudflare’s Security Events dashboard works well if you are behind Cloudflare.
3.11 Credential Stuffing Protection
Credential stuffing is different from brute force, the attacker already has valid username and password pairs from other site breaches. Your password strength does not help here if the user has reused a password that was already leaked elsewhere.
The defenses that actually work against credential stuffing:
- Check new user passwords against the HaveIBeenPwned database (via their API) and reject known-breached passwords
- MFA, even with the correct password, the attacker still cannot log in
- Device fingerprinting, flag logins from unrecognized devices and require additional verification
- Behavioral analytics, detect bot-like behavior patterns (too fast, too consistent, no mouse movement)
The HaveIBeenPwned Pwned Passwords API is free, checks over 650 million breached passwords, and uses a k-anonymity model so you never send the actual password to their servers. Every modern auth system should use this.
3.12 Implement HTTPS and Secure Cookie Flags
This one is fundamental but skipped by more sites than you would expect. Sending login credentials over unencrypted HTTP means an attacker on the same network can capture them without any brute force needed. HTTPS is the floor, not a feature.
Additionally, your session cookies must have:
- HttpOnly flag, prevents JavaScript from reading the cookie (stops XSS-based session theft)
- Secure flag, cookie is only sent over HTTPS connections
- SameSite=Strict, prevents cross-site request forgery using the session
4. Platform-Specific Brute Force Prevention
4.1 WordPress Brute Force Attack Prevention
WordPress powers 43% of all websites on the internet, which is exactly why it is the most targeted platform for brute force attacks. The default WordPress installation has unlimited login attempts, the admin URL is always at /wp-login.php, and the default username is ‘admin’ — three problems in one.
Essential WordPress Security Configuration
- Install Wordfence Security: it includes a firewall, login limiter, and IP blocking. Free version is sufficient for most sites.
- Install WPS Hide Login: changes /wp-login.php to a custom URL
- Install WP 2FA: adds TOTP-based two-factor authentication
- Change the default ‘admin’ username if you still use it: delete the admin account and create a new one with a different name
- Disable XML-RPC if you do not use it (wp-xmlrpc.php is another entry point for brute force)
If your WordPress site has been compromised before, read our complete guide on how long WordPress hacks take to recover from, it covers what attackers do after gaining access and how to clean up properly.
Blocking XML-RPC in Nginx
# Add to your server block in Nginx location = /xmlrpc.php { deny all; access_log off; log_not_found off; }
Blocking XML-RPC in .htaccess (Apache)
# Block XML-RPC <Files xmlrpc.php> Order Deny,Allow Deny from all </Files>
Speed matters for security too, a slow server is harder to protect and easier to exhaust with attack traffic. If your WordPress performance needs work, see our guide on how to speed up WordPress for the full configuration walkthrough.
4.2 SSH-Specific Brute Force Prevention
The SSH configuration steps were covered in Section 3.9 above. In addition to those, consider these SSH-level controls:
- Use port knocking: server ignores all connection requests unless a specific sequence of port knocks is received first
- Set up a VPN and disable direct SSH access from the internet entirely: only allow SSH from VPN IPs
- Use ed25519 SSH keys (not RSA 2048, ed25519 is faster and considered more secure at equivalent strength)
- Set ClientAliveInterval and ClientAliveCountMax in sshd_config to drop idle sessions
4.3 API Endpoint Brute Force Prevention
API endpoints are increasingly targeted for brute force, not just login, but also OTP verification endpoints, account recovery, and even GraphQL queries. Each of these represents a separate attack surface.
| API Endpoint Type | Brute Force Risk | Specific Defense |
| /api/login or /api/auth | High | Rate limit + IP throttling + MFA |
| /api/verify-otp | Very High | Expire OTPs after 5 minutes, lock after 3 failures |
| /api/reset-password | Medium | Rate limit per email address, not just per IP |
| /api/graphql | Medium | Query depth limiting, query cost analysis |
| /api/search or /api/list | Low-Medium | Pagination limits, auth required |
4.4 Nginx Brute Force Prevention Configuration
A full Nginx rate limiting setup that handles both login and general request flooding:
http { # Zone for login attempts – per IP limit_req_zone $binary_remote_addr zone=login_ip:10m rate=5r/m; # Zone for login attempts – per username (requires $request_body parsing) limit_req_zone $binary_remote_addr zone=general:10m rate=100r/m; server { # Protect login endpoints location ~ ^/(wp-login\.php|login|sign-in|auth) { limit_req zone=login_ip burst=3 nodelay; limit_req_status 429; add_header Retry-After 60; } # General rate limiting for all traffic location / { limit_req zone=general burst=20 nodelay; } } }
5. How to Detect a Brute Force Attack Already in Progress
Prevention is the goal, but detection matters because you need to know when your defenses are being tested and whether they are working. Here are the signals that a brute force attack is running against your system right now:
5.1 Log Patterns to Watch
- Hundreds or thousands of HTTP 401 or 403 responses to your login URL in a short time window
- The same IP or IP range hitting your login page repeatedly even after getting errors
- Authentication attempts for usernames that do not exist (especially ‘admin’, ‘administrator’, ‘root’)
- Login failures for many different usernames from a single IP (credential stuffing signature)
- Logins at unusual hours for your user base, middle of the night in your primary timezone
- Sudden spike in login attempts right after a public breach announcement involving similar services
5.2 System-Level Warning Signs
- Unusual CPU or bandwidth spikes that correlate with login traffic
- Server response times slowing down during attack periods
- Your hosting provider or WAF sending bot traffic alerts
- Failed login notification emails flooding your admin inbox
💡 Set up automated alerts, not manual log checks. Tools like Grafana + Loki for Nginx logs, or Cloudflare email alerts, mean you get notified within minutes of an attack starting instead of discovering it hours later.
6. AI-Powered Brute Force Attacks in 2026: The Threat Most Guides Ignore
This is the section competitors are not writing yet, and it is probably the most important update for 2026.
The fundamental assumption behind most password security advice is that attackers are trying random or semi-random combinations. That assumption is no longer valid.
6.1 How AI Changed Brute Force Attacks
Modern brute force tools now use language models to generate targeted password guesses based on context about the target. Instead of ‘aaa, aab, aac,’ the AI tool generates guesses based on:
- The target’s name, birthday, employer (from LinkedIn)
- The specific service being attacked (bank passwords use different patterns than forum passwords)
- Keyboard walk patterns that are statistically common in password creation
- Regional language patterns, common words in the target’s likely language
- Known password reuse patterns from breach data for similar services
A 2024 study from Georgia Tech demonstrated that AI-generated password guessing lists outperformed traditional dictionary attacks by 24% against real user passwords. That gap is wider in 2026 as the models have improved.
6.2 GPU-Accelerated Cracking Is Now Cheap
Renting GPU compute on cloud platforms has become inexpensive enough that offline password cracking (when an attacker has obtained a password hash database) is accessible to low-budget attackers. A modern RTX 4090 can attempt 164 billion MD5 hash combinations per second. Even bcrypt (which is deliberately slow) can be tested at around 100,000 per second on a single GPU.
The practical implication: any password under 12 characters using common patterns is crackable offline. This is why the server-side rate limits matter less for hash cracking, the attack happens on the attacker’s machine, not yours.
📌 Defense against offline cracking: Use bcrypt (cost factor 12 or higher), scrypt, or Argon2id for password hashing. Never use MD5 or SHA-1 for passwords. These are not settings, they are code-level decisions that your developers need to make when building or updating your authentication system.
7. Tools and Solutions Comparison
7.1 WordPress-Specific Security Plugins
| Plugin | Free? | Login Limiting | WAF | MFA | Best For |
| Wordfence Security | Yes (paid pro) | Yes | Yes | Yes (pro) | Most WordPress sites |
| Sucuri Security | Yes (paid WAF) | Basic | Paid only | No | Sites needing CDN+WAF |
| iThemes Security | Yes (paid pro) | Yes | No | Yes (pro) | Small business sites |
| WP 2FA | Yes (paid pro) | No | No | Yes | Adding MFA to any site |
| WPS Hide Login | Yes | No | No | No | Changing login URL |
| Loginizer | Yes (paid pro) | Yes | No | Yes (pro) | Simple login protection |
7.2 Server and Infrastructure Solutions
| Tool / Service | Type | Cost | Best For |
| Fail2ban | Server-level IP banning | Free | Linux servers, SSH, web apps |
| Cloudflare WAF | Cloud WAF + CDN | Free–$200/mo | Any web application |
| Nginx + limit_req | Server rate limiting | Free | Nginx-hosted applications |
| mod_evasive (Apache) | Apache rate limiting | Free | Apache-hosted applications |
| Sucuri WAF | Cloud WAF | $199/yr+ | WordPress, Joomla, custom apps |
| CrowdStrike Falcon | Enterprise endpoint + threat intel | Enterprise pricing | Corporate networks, large sites |
8. Brute Force Attack Prevention Checklist
How to use this checklist: Go through each item and mark it as done. If any item applies to your setup and is not done, that is your current biggest vulnerability.
Authentication Layer
- MFA enabled for all user accounts (TOTP app minimum, hardware key for admins)
- Password policy enforces minimum 12 characters (15+ recommended)
- Known-breached passwords checked and blocked at registration and reset
- Default usernames changed (‘admin’, ‘administrator’, ‘root’ not in use)
- Password reuse detected and blocked (last 5-10 passwords remembered)
Server and Network Layer
- Rate limiting on all login endpoints (server-level and/or WAF)
- Progressive login throttling implemented (delays, not hard lockouts)
- CAPTCHA on login, registration, and password reset pages
- IP reputation checking active (AbuseIPDB or WAF with threat intel)
- Geo-blocking enabled for countries your service does not operate in
- Cloudflare or equivalent WAF in front of web application
- Admin panel access restricted to known IP addresses
SSH and Server Access
- SSH password authentication disabled, keys only
- Root SSH login disabled
- Fail2ban or equivalent monitoring SSH logs
- SSH port changed from 22 (friction, not security, combine with above)
- VPN required for SSH access (best practice for production servers)
WordPress-Specific (if applicable)
- /wp-login.php URL changed
- XML-RPC disabled
- Wordfence or equivalent security plugin active
- WP admin username not set to ‘admin’
- Login attempt limit set (max 5-10 before lockout)
Monitoring and Response
- Authentication log monitoring active with alerting
- Alert threshold set for failed login spikes
- Incident response plan documented for when attack is detected
- WAF security events reviewed weekly
- Last security audit: _____ (schedule next one)
9. Related Guides and Resources
If this article is relevant to what you are working on, these related resources from HammaniTech will be useful:
- How Long Do WordPress Hacks Take to Recover From?: What actually happens after a successful attack and the real recovery timeline.
- How to Speed Up WordPress: Complete Performance Guide: A fast site is easier to protect and monitor. Security and performance are connected.
- WordPress Website Development: The Complete Guide: Building WordPress sites securely from the ground up.
- On-Page SEO Checklist: A brute-forced or hacked site loses Google rankings. Protect your SEO investment.
- How to Fix the WordPress White Screen of Death: Often caused by malicious plugin injection following a compromise.
10. Sources and Further Reading
All claims in this article are backed by these high-authority sources:
| Source | Organization | What It Covers | URL |
| NIST SP 800-63B | US National Institute of Standards and Technology | Password and authentication guidelines | pages.nist.gov/800-63-3/sp800-63b.html |
| OWASP Testing Guide: Brute Force | Open Web Application Security Project | Brute force testing and blocking methodologies | owasp.org/www-community/controls/Blocking_Brute_Force_Attacks |
| Data Breach Investigations Report 2024 | Verizon | Attack statistics and breach causes | verizon.com/business/resources/reports/dbir/ |
| Have I Been Pwned API v3 | Troy Hunt | Breached password checking API documentation | haveibeenpwned.com/API/v3 |
| Fail2ban Documentation | Fail2ban Project | Installation and configuration reference | fail2ban.org/wiki/index.php/MANUAL |
| ICO Decision – Cathay Pacific | UK Information Commissioner’s Office | Real fine for inadequate brute force protection | ico.org.uk/action-weve-taken/enforcement/cathay-pacific-airways-limited/ |
Frequently Asked Questions
What is the most effective way to prevent brute force attacks?
No single method is enough. The most effective protection is a layered defense that combines MFA (which stops successful logins even with the right password), rate limiting (which makes automated attempts too slow to succeed), and active monitoring (which detects attacks in progress so you can respond). If you can only do one thing, enable MFA, it has the highest impact-to-effort ratio.
Does account lockout stop brute force attacks?
Not completely, and it creates its own problems. A hard account lockout after N failed attempts can be weaponized by an attacker to lock out all users (a DoS attack via your own security). Progressive throttling, adding delays between attempts instead of hard blocks, is more effective and does not create a denial-of-service vulnerability.
How long does a brute force attack take?
It depends entirely on password complexity and the defenses in place. A 6-character password with no rate limiting can be cracked in seconds. A 15-character passphrase behind rate limiting and MFA is practically impossible to brute force in any reasonable timeframe. The attacker will give up and move to an easier target long before succeeding.
Can HTTPS prevent brute force attacks?
HTTPS prevents credentials from being intercepted in transit, but it does not stop brute force attacks on the login endpoint itself. HTTPS is necessary but not sufficient. You still need rate limiting, MFA, and the other controls covered in this guide.
Is brute force protection necessary for small websites?
Yes. Attackers do not manually pick targets, they scan the entire internet automatically. A small personal blog gets the same automated scanning as a Fortune 500 site. Small sites are often more vulnerable because they have fewer resources dedicated to security maintenance. The defenses in this guide are free or low-cost and apply to sites of any size.
What is the difference between brute force and credential stuffing?
Brute force attacks try to guess passwords by generating combinations. Credential stuffing uses real username and password pairs that were stolen from other sites. Credential stuffing is more effective because it uses valid credentials, your password strength does not help if you reused a password that leaked elsewhere. MFA and breach-password checking are the primary defenses against credential stuffing specifically.
Final Thoughts
Brute force attacks are not going away. As computing power gets cheaper and AI tools make password guessing smarter, the cost of launching an attack is dropping toward zero. The cost of a successful attack, in fines, lost data, and reputation damage, is going up.
The good news is that good brute force attack prevention does not require enterprise budgets. MFA, rate limiting, strong password policies, and active monitoring are all achievable by any team managing any size of web infrastructure.
Start with the checklist in Section 8. Implement what is missing. Schedule a review in three months. That is the real answer, not a perfect system on day one, but consistent improvement in the right direction.
If you need help implementing any of these protections on your WordPress site or web application, the HammaniTech development team handles security hardening as part of our website maintenance services.
We use strategic solutions and industry-leading technology to create websites that reflect your brand’s unique identity and grow your customer base and revenue.
