{"id":581,"date":"2026-05-23T10:19:10","date_gmt":"2026-06-29T11:07:58","guid":{"rendered":"https:\/\/brutefort.com\/blog\/brute-force-attack-wordpress\/"},"modified":"2026-09-03T09:03:50","modified_gmt":"2026-09-03T09:03:50","slug":"brute-force-attack-wordpress","status":"publish","type":"post","link":"https:\/\/brutefort.com\/blog\/brute-force-attack-wordpress\/","title":{"rendered":"What Is a Brute Force Attack on WordPress (And How to Stop One)"},"content":{"rendered":"\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1125\" height=\"750\" src=\"https:\/\/brutefort.com\/blog\/wp-content\/uploads\/2026\/06\/pexels-photo-1089438.jpeg\" alt=\"Code on a screen representing a brute force attack on WordPress\" class=\"wp-image-579\" srcset=\"https:\/\/brutefort.com\/blog\/wp-content\/uploads\/2026\/06\/pexels-photo-1089438.jpeg 1125w, https:\/\/brutefort.com\/blog\/wp-content\/uploads\/2026\/06\/pexels-photo-1089438-300x200.jpeg 300w, https:\/\/brutefort.com\/blog\/wp-content\/uploads\/2026\/06\/pexels-photo-1089438-1024x683.jpeg 1024w, https:\/\/brutefort.com\/blog\/wp-content\/uploads\/2026\/06\/pexels-photo-1089438-768x512.jpeg 768w\" sizes=\"auto, (max-width: 1125px) 100vw, 1125px\" \/><figcaption>Photo by Markus Spiske from Pexels<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">A brute force attack is exactly what it sounds like: an attacker \u2014 almost always a bot \u2014 tries to log in to your WordPress site by guessing passwords. Not creatively. Not cleverly. Just over and over, thousands of times, until something works.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Picture someone trying every key on a giant keychain against your front door, one after another, without pausing. That&#8217;s a brute force attack, except the &#8220;door&#8221; is your WordPress login page and the &#8220;keys&#8221; are millions of leaked passwords.<\/p>\n\n\n\n<div class=\"wp-block-callout\"><p><strong>Quick Answer:<\/strong> A brute force attack is an automated, repeated password-guessing attack against your login page. WordPress has zero built-in protection against it. Rate limiting and a custom login URL \u2014 both included in BruteFort \u2014 stop it completely.<\/p><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">It&#8217;s one of the oldest attack methods on the internet, and it&#8217;s still one of the most common on WordPress specifically. Why? Because every WordPress site&#8217;s login page sits at the same predictable URL by default. No reconnaissance needed \u2014 the bot already knows where to look.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">How a Brute Force Attack Actually Works<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The attack itself is simple. A bot sends POST requests to <code>\/wp-login.php<\/code> with a username and password. WordPress checks the credentials, returns a failure, and the bot tries the next combination. Repeat, at hundreds or thousands of attempts per minute.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Most bots start with the username <strong>admin<\/strong> \u2014 the WordPress default that a huge percentage of older sites still use. From there, they cycle through password lists that range from common choices like &#8220;password123&#8221; to massive databases of passwords from previous data breaches.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Here&#8217;s the thing: WordPress doesn&#8217;t slow them down. There&#8217;s no built-in limit on how many times someone can attempt a login. No lockout after failed attempts. No alert that anything unusual is happening. The bot can run indefinitely without any friction unless you add it yourself.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The Real Cost of a Successful Attack<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">If the attack succeeds and an attacker gets admin access to your WordPress site, the consequences are serious. They can install malware, redirect your traffic, steal customer data, add your site to a spam network, or simply destroy content.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Cleanup is expensive and time-consuming \u2014 and some hosting providers will take your site offline entirely if they detect malicious activity coming from it. Even a failed attack has a cost. Thousands of login requests put load on your server, and shared hosting plans are particularly vulnerable to slowdowns from attack traffic.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">What Stops a Brute Force Attack<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Two things make brute force attacks impractical: limiting attempts and hiding the target.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">BruteFort covers both from a single plugin; here&#8217;s how each piece works.<\/p>\n\n\n\n<div class=\"wp-block-stackable-button-group stk-block-button-group stk-block stk-4e52b9a\" data-block-id=\"4e52b9a\"><div class=\"stk-row stk-inner-blocks stk-block-content stk-button-group\">\n<div class=\"wp-block-stackable-button stk-block-button stk-block stk-8a4bf0e\" data-block-id=\"8a4bf0e\"><style>.stk-8a4bf0e .stk-button{background:#f13434 !important;border-top-left-radius:var(--stk--preset--border-radius--small, 4px) !important;border-top-right-radius:var(--stk--preset--border-radius--small, 4px) !important;border-bottom-right-radius:var(--stk--preset--border-radius--small, 4px) !important;border-bottom-left-radius:var(--stk--preset--border-radius--small, 4px) !important;}.stk-8a4bf0e .stk-button:before{border-color:#0f0e17 !important;}<\/style><a class=\"stk-link stk-button stk--hover-effect-darken\" href=\"https:\/\/brutefort.com\/brutefort-features\/\"><span class=\"stk-button__inner-text\">Get BruteFort Now!<\/span><\/a><\/div>\n<\/div><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Rate limiting: cut off the bot after a few tries<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">A rate limit says: after X failed login attempts from the same IP within Y minutes, block that IP temporarily. In BruteFort&#8217;s Rate Limit Settings, you set the max allowed attempts and the time window yourself, and the lockout enforces automatically \u2014 turning a viable attack into an impossible one. A bot that can only try 5 passwords per 30 minutes would need years to test even a modest list. You can also customize the error message shown to blocked IPs \u2014 the <code>{{locked_out_until}}<\/code> variable inserts the exact time the lockout expires.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"589\" src=\"https:\/\/brutefort.com\/blog\/wp-content\/uploads\/2026\/07\/brutefort-rate-limiting-settings.webp\" alt=\"BruteFort's full Rate Limit Settings tab showing rate limits and lockout settings together\" class=\"wp-image-672\" srcset=\"https:\/\/brutefort.com\/blog\/wp-content\/uploads\/2026\/07\/brutefort-rate-limiting-settings.webp 1024w, https:\/\/brutefort.com\/blog\/wp-content\/uploads\/2026\/07\/brutefort-rate-limiting-settings-300x173.webp 300w, https:\/\/brutefort.com\/blog\/wp-content\/uploads\/2026\/07\/brutefort-rate-limiting-settings-768x442.webp 768w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Custom login URL: remove the target entirely<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Bots attack <code>\/wp-login.php<\/code> because that&#8217;s where WordPress logins always live. Change that URL to something unpredictable, and bots scanning for the default path hit a dead end. BruteFort&#8217;s Custom Login URL feature lets you set a custom slug in seconds. The default URL stops responding, and only users who know the new path can access the login form at all.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"589\" src=\"https:\/\/brutefort.com\/blog\/wp-content\/uploads\/2026\/07\/brutefort-custom-login-url.webp\" alt=\"BruteFort's Custom Login URL panel with the toggle and login slug field\" class=\"wp-image-671\" srcset=\"https:\/\/brutefort.com\/blog\/wp-content\/uploads\/2026\/07\/brutefort-custom-login-url.webp 1024w, https:\/\/brutefort.com\/blog\/wp-content\/uploads\/2026\/07\/brutefort-custom-login-url-300x173.webp 300w, https:\/\/brutefort.com\/blog\/wp-content\/uploads\/2026\/07\/brutefort-custom-login-url-768x442.webp 768w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">IP blocking: permanently remove repeat offenders<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">For IPs that keep coming back, a permanent block is cleaner than repeated temporary lockouts. BruteFort&#8217;s IP Settings tab lets you manually blacklist specific addresses, or whitelist trusted IPs so they&#8217;re never affected by rate limiting at all. The Logs section shows you which IPs have triggered lockouts, making it easy to identify the worst offenders.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"589\" src=\"https:\/\/brutefort.com\/blog\/wp-content\/uploads\/2026\/07\/brutefort-ip-settings.webp\" alt=\"BruteFort's IP Settings panel showing the whitelist and blacklist manager with an IP table\" class=\"wp-image-669\" srcset=\"https:\/\/brutefort.com\/blog\/wp-content\/uploads\/2026\/07\/brutefort-ip-settings.webp 1024w, https:\/\/brutefort.com\/blog\/wp-content\/uploads\/2026\/07\/brutefort-ip-settings-300x173.webp 300w, https:\/\/brutefort.com\/blog\/wp-content\/uploads\/2026\/07\/brutefort-ip-settings-768x442.webp 768w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Rate limiting, a custom login URL, and IP management \u2014 all three live inside a single BruteFort settings panel, no code required.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Frequently Asked Questions About Brute Force Attacks on WordPress<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">How do I know if my WordPress site is being brute forced?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The most direct way is to check your login logs. BruteFort records every lockout with the triggering IP, the number of failed attempts, and the timestamp. Unusual server slowdowns \u2014 especially during off-hours \u2014 can also indicate attack traffic hitting your login page. Some hosting providers surface this in their dashboards as unusual request spikes.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Does using a strong password stop brute force attacks?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">A strong, unique password makes a successful attack much less likely, but it doesn&#8217;t stop the attempts. A bot will still hammer your login page for hours \u2014 consuming server resources and generating noise in your logs \u2014 even if it never succeeds. Rate limiting stops the attempts themselves, regardless of password strength.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Can my hosting provider stop brute force attacks for me?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Some hosts offer firewall-level rate limiting or login protection, but it varies widely. Many shared hosting environments have no such protection. Even when your host provides some coverage, plugin-level rate limiting gives you direct control over the thresholds, lockout behavior, and error messaging \u2014 without relying on your host&#8217;s configuration.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Is BruteFort free to use?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Yes. BruteFort&#8217;s core features \u2014 including rate limiting, custom login URL, and IP management \u2014 are available in the free version. Install it from your WordPress plugins dashboard and configure the settings in under five minutes.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1123\" height=\"750\" src=\"https:\/\/brutefort.com\/blog\/wp-content\/uploads\/2026\/06\/pexels-photo-5952651.jpeg\" alt=\"Server rack representing WordPress hosting infrastructure under attack\" class=\"wp-image-580\" srcset=\"https:\/\/brutefort.com\/blog\/wp-content\/uploads\/2026\/06\/pexels-photo-5952651.jpeg 1123w, https:\/\/brutefort.com\/blog\/wp-content\/uploads\/2026\/06\/pexels-photo-5952651-300x200.jpeg 300w, https:\/\/brutefort.com\/blog\/wp-content\/uploads\/2026\/06\/pexels-photo-5952651-1024x684.jpeg 1024w, https:\/\/brutefort.com\/blog\/wp-content\/uploads\/2026\/06\/pexels-photo-5952651-768x513.jpeg 768w\" sizes=\"auto, (max-width: 1123px) 100vw, 1123px\" \/><figcaption>Photo by Brett Sayles from Pexels<\/figcaption><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\">Brute force attacks are relentless but entirely preventable. Rate limiting makes them impractical. A custom login URL makes your site invisible to the scanners that find targets in the first place. Together, they handle the vast majority of automated attack traffic with no ongoing effort required. <a href=\"https:\/\/brutefort.com\">BruteFort<\/a> sets both up from a single plugin panel.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If this helped, follow us for more WordPress security guides. You might also like:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><a href=\"https:\/\/brutefort.com\/blog\/wordpress-login-security\/\">WordPress Login Security: How to Protect Your Site from Unauthorized Access<\/a><\/li><li>How to Change Your WordPress Login URL<\/li><li>How to Limit Login Attempts in WordPress<\/li><\/ul>\n\n\n\n<script type=\"application\/ld+json\">\n{\n  \"@context\": \"https:\/\/schema.org\",\n  \"@graph\": [\n    {\n      \"@type\": \"BreadcrumbList\",\n      \"itemListElement\": [\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 1,\n          \"name\": \"Home\",\n          \"item\": \"https:\/\/brutefort.com\/\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 2,\n          \"name\": \"Blog\",\n          \"item\": \"https:\/\/brutefort.com\/blog\/\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 3,\n          \"name\": \"What Is a Brute Force Attack on WordPress (And How to Stop One)\",\n          \"item\": \"https:\/\/brutefort.com\/blog\/brute-force-attack-wordpress\/\"\n        }\n      ]\n    },\n    {\n      \"@type\": \"FAQPage\",\n      \"mainEntity\": [\n        {\n          \"@type\": \"Question\",\n          \"name\": \"How do I know if my WordPress site is being brute forced?\",\n          \"acceptedAnswer\": {\n            \"@type\": \"Answer\",\n            \"text\": \"The most direct way is to check your login logs. BruteFort records every lockout with the triggering IP, the number of failed attempts, and the timestamp. Unusual server slowdowns \u2014 especially during off-hours \u2014 can also indicate attack traffic hitting your login page. Some hosting providers surface this in their dashboards as unusual request spikes.\"\n          }\n        },\n        {\n          \"@type\": \"Question\",\n          \"name\": \"Does using a strong password stop brute force attacks?\",\n          \"acceptedAnswer\": {\n            \"@type\": \"Answer\",\n            \"text\": \"A strong, unique password makes a successful attack much less likely, but it doesn't stop the attempts. A bot will still hammer your login page for hours \u2014 consuming server resources and generating noise in your logs \u2014 even if it never succeeds. Rate limiting stops the attempts themselves, regardless of password strength.\"\n          }\n        },\n        {\n          \"@type\": \"Question\",\n          \"name\": \"Can my hosting provider stop brute force attacks for me?\",\n          \"acceptedAnswer\": {\n            \"@type\": \"Answer\",\n            \"text\": \"Some hosts offer firewall-level rate limiting or login protection, but it varies widely. Many shared hosting environments have no such protection. Even when your host provides some coverage, plugin-level rate limiting gives you direct control over the thresholds, lockout behavior, and error messaging \u2014 without relying on your host's configuration.\"\n          }\n        },\n        {\n          \"@type\": \"Question\",\n          \"name\": \"Is BruteFort free to use?\",\n          \"acceptedAnswer\": {\n            \"@type\": \"Answer\",\n            \"text\": \"Yes. BruteFort's core features \u2014 including rate limiting, custom login URL, and IP management \u2014 are available in the free version. Install it from your WordPress plugins dashboard and configure the settings in under five minutes. Brute force attacks are relentless but entirely preventable. Rate limiting makes them impractical. A custom login URL makes your site invisible to the scanners that find targets in the first place. Together, they handle the vast majority of automated attack traffic with no ongoing effort required. BruteFort sets both up from a single plugin panel.\"\n          }\n        }\n      ]\n    }\n  ]\n}\n<\/script>\n\n","protected":false},"excerpt":{"rendered":"<p>Brute force attacks hit WordPress login pages constantly. Here&#8217;s exactly how they work and the specific settings that shut them down.<\/p>\n","protected":false},"author":1,"featured_media":579,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[33],"tags":[],"class_list":["post-581","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-brute-force"],"blocksy_meta":[],"_links":{"self":[{"href":"https:\/\/brutefort.com\/blog\/wp-json\/wp\/v2\/posts\/581","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/brutefort.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/brutefort.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/brutefort.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/brutefort.com\/blog\/wp-json\/wp\/v2\/comments?post=581"}],"version-history":[{"count":6,"href":"https:\/\/brutefort.com\/blog\/wp-json\/wp\/v2\/posts\/581\/revisions"}],"predecessor-version":[{"id":853,"href":"https:\/\/brutefort.com\/blog\/wp-json\/wp\/v2\/posts\/581\/revisions\/853"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/brutefort.com\/blog\/wp-json\/wp\/v2\/media\/579"}],"wp:attachment":[{"href":"https:\/\/brutefort.com\/blog\/wp-json\/wp\/v2\/media?parent=581"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/brutefort.com\/blog\/wp-json\/wp\/v2\/categories?post=581"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/brutefort.com\/blog\/wp-json\/wp\/v2\/tags?post=581"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}