WordPress Login Security Checker
Passively audit public `/wp-login.php` accessibility, XML-RPC exposure, and login security headers without executing login attempts.
This tool evaluates public, non-invasive HTTP signals only. It does not attempt credential guessing, password brute-forcing, or security penetration testing against target websites.
Hardening WordPress Login Endpoints & Preventing Brute-Force Attacks
- â 1. Changing the Default /wp-login.php URL
- â 2. Disabling XML-RPC via .htaccess
- â 3. Enforcing Two-Factor Authentication (2FA)
- â 4. Immunizing Logins via Nimbica Static Edge
- â 5. How the Passive Audit Works
- â 6. Worked Example: Two Audit Outcomes
- â 7. Practical Use Cases
- â 8. Limitations of a Passive Scan
1. Changing the Default /wp-login.php URL
Default WordPress login paths are targeted by automated brute-force botnets. As documented in WordPress Brute Force Attack Hardening, hiding `/wp-login.php` stops 99% of automated login scans.
2. Disabling XML-RPC via .htaccess
Block access to xmlrpc.php in your server .htaccess file to prevent multicall password guessing. Audit REST API settings in our WordPress REST API Tester.
3. Enforcing Two-Factor Authentication (2FA)
Scan for malware signals in our WordPress Malware Quick Scanner.
4. Immunizing Logins via Nimbica Static Edge
Nimbica pre-renders WordPress content into static HTML served from 300+ global edge locations. Since static edge nodes execute zero server PHP code, brute-force login attempts cannot overload origin server resources.
5. How the Passive Audit Works
The checker performs exactly two read-only HTTP requests against your domain â no credentials are ever submitted. First, it requests {your-domain}/wp-login.php and reads the response status: a 200 OK means the default login form is directly reachable and rendered as-is (exposed); any other status (a 404, or a redirect to a custom URL) is treated as hidden or relocated. Second, it requests {your-domain}/xmlrpc.php and treats both 200 and 405 Method Not Allowed as "exposed," since both confirm the XML-RPC endpoint file exists and WordPress core is actively processing requests to it.
Both requests are fired independently and the results rendered side by side. No login attempt, password guess, or authenticated request is ever made â this distinguishes the tool from an actual penetration test or credential-stuffing simulation, which this explicitly is not.
6. Worked Example: Two Audit Outcomes
Scenario A â a stock WordPress install with no security hardening: /wp-login.php returns 200 and /xmlrpc.php returns 200. Result: both flagged exposed. This is the default, unmodified state of virtually every fresh WordPress install and is the exact fingerprint automated brute-force botnets scan the internet for.
Scenario B â the same site after installing a login-URL-changer plugin and adding an .htaccess block on XML-RPC: /wp-login.php now returns 404 (hidden/custom path), and /xmlrpc.php returns 403 Forbidden (blocked, not just unreachable). Result: both flagged clean. Interpretation: Scenario B has meaningfully reduced its exposure surface to opportunistic automated attacks, though a targeted attacker with your custom login URL could still attempt requests against it.
7. Practical Use Cases
- Post-hardening verification: After installing a security plugin or changing your login URL, confirm the change actually took effect from an outside vantage point.
- Pre-purchase site audit: When buying an existing WordPress site or taking over client hosting, quickly check its baseline login exposure before you have admin access.
- Multi-site fleet spot-checks: Agencies managing dozens of client sites can quickly triage which ones still run default, unhardened login configurations.
- Client security reporting: Use the pass/fail badges as evidence in a monthly maintenance report showing hardening work was applied.
8. Limitations of a Passive Scan
- Two signals only: This audit checks exactly two endpoints. It does not check password strength, 2FA status, security header configuration (HSTS, CSP), user enumeration via
?author=1, or REST API exposure â use the Malware Quick Scanner and a dedicated REST API audit for those. - Custom 404 pages can mask a live endpoint: A theme or plugin returning a styled "page not found" response with an unusual status code could be misread by any automated status-based check, including this one.
- Not a brute-force simulation: A clean result here says nothing about whether your actual admin password is weak, reused, or has been leaked in a prior breach.
- Point-in-time only: Results reflect the moment of the scan. A plugin update, theme change, or security setting rollback afterward will not be reflected until you re-scan.
Protect your WordPress login against brute-force attacks with Nimbica
Transform dynamic PHP rendering bottlenecks into ultra-fast static HTML deployed across 300+ global edge locations.
Frequently Asked Questions
How does the WordPress Login Security Checker audit my site?
The checker evaluates public, observable HTTP signals: checking if `/wp-login.php` is directly accessible, checking if `/xmlrpc.php` is exposed, and inspecting response headers.
Why is an exposed /wp-login.php endpoint a security risk?
Exposing default `/wp-login.php` URLs allows automated botnets to run brute-force password guessing attacks, consuming origin PHP worker memory.
Why should XML-RPC (/xmlrpc.php) be disabled in WordPress?
XML-RPC supports legacy mobile apps and pingbacks, but enables multicall brute-force attacks where hundreds of password guesses are tested in a single HTTP request.
Why does the tool count HTTP 405 as XML-RPC being "exposed"?
A 405 Method Not Allowed response means the /xmlrpc.php file exists and is being processed by WordPress core â it just rejected the specific request method used for the check. That confirms the endpoint is live and reachable, which is enough for an attacker to target it with a properly formatted POST request.
I moved my login page with a plugin, but the tool still says it found something at /wp-login.php. Why?
Some "hide login" plugins return a custom 404 page (not a redirect) at the default URL, which is correctly treated as hidden. Others leave /wp-login.php reachable as a fallback or redirect visitors through it before showing the real form â check what actual HTTP status your specific plugin returns.
Does a "Login URL Hidden" result mean my site cannot be brute-forced at all?
No. It means the default, most heavily targeted URL isn't trivially discoverable by generic botnet scanners. A targeted attacker who finds your custom login path through other means (leaked URLs, misconfigured redirects) can still attempt login requests against it â hiding the URL is a friction layer, not a substitute for rate limiting, 2FA, and strong passwords.
Can this tool detect if I have a Web Application Firewall (WAF) blocking brute-force attempts?
Not directly. The checker reports raw HTTP status codes from the endpoints, but a WAF or security plugin (Wordfence, Cloudflare) intercepting and challenging requests may return its own status codes (like 403 or a CAPTCHA page) that this passive check surfaces but does not specifically identify as WAF protection.
Related Tools in This Cluster
WordPress Malware Quick Scanner
Scan any WordPress URL for public malware redirect signatures and hidden iframes.
WordPress REST API Tester
Audit public REST API endpoints for user enumeration and security settings.
WordPress Version & Update Checker
Scan any WordPress URL to detect core version, update status, and exposure risks.
