Security Hardener
Basic hardening: secure headers, login honeypot, user enumeration blocking, generic login errors, rate limiting, and more.
Next Milestone 300
Unlock Exact Install Count
See the precise estimated active installs for this plugin, calculated from real-time ranking data.
- Exact install estimates within tiers
- Track install growth over time
- Milestone progress predictions
Rank Changes
Downloads Growth
Upgrade to Pro
Unlock 30-day, 90-day, and yearly download history charts with a Pro subscription.
Upgrade NowReviews & Ratings
Tracked Keywords
Showing 4 of 4| Keyword | Position | Change | Type | Updated |
|---|---|---|---|---|
| hardening | 28 | — | Tag | 1 month ago |
| Brute Force | 77 | — | Tag | 1 month ago |
| login protection | 115 | — | Tag | 1 month ago |
| headers | 187 | — | Tag | 1 month ago |
Unlock Keyword Analytics
Track keyword rankings, search positions, and discover new ranking opportunities with a Pro subscription.
- Full keyword position tracking
- Historical ranking data
- Competitor keyword analysis
Track This Plugin
Get detailed analytics, keyword tracking, and position alerts delivered to your inbox.
Start Tracking FreePlugin Details
- Version
- 2.2.0
- Last Updated
- Apr 03, 2026
- Requires WP
- 6.9+
- Tested Up To
- 6.9.4
- PHP Version
- 8.2 or higher
- Author
- Marc Armengou
Support & Rating
- Rating
- ☆ ☆ ☆ ☆ ☆ 0
- Reviews
- 0
- Support Threads
- 0
- Resolved
- 0%
Keywords
Upgrade to Pro
Unlock keyword rankings, search positions, and detailed analytics with a Pro subscription.
Upgrade NowSimilar Plugins
Frequently Asked Questions
Common questions about Security Hardener
Does this plugin slow down my site?
No. The plugin uses lightweight WordPress hooks and native functions. Security headers add negligible overhead, and rate limiting only checks transients during login attempts.
I use a CDN or proxy (Cloudflare, etc.). How do I get the correct IP?
By default, rate limiting uses REMOTE_ADDR. If behind a trusted proxy, add this to wp-config.php:
define('WPSH_TRUSTED_PROXIES', array(
'173.245.48.0', // Example: Cloudflare IP range
// Add your proxy IPs here
));
The plugin will then check HTTP_CF_CONNECTING_IP (Cloudflare) or HTTP_X_FORWARDED_FOR headers.
What headers does this plugin add?
When security headers are enabled:
* X-Frame-Options: SAMEORIGIN
* X-Content-Type-Options: nosniff
* Referrer-Policy: strict-origin-when-cross-origin
* Permissions-Policy: geolocation=(), microphone=(), camera=()
When HSTS is enabled (HTTPS only):
* Strict-Transport-Security: max-age=31536000; includeSubDomains (configurable)
Does the plugin work with page caching?
Yes. Security headers are sent at the PHP level before caching. However, if you use aggressive server-level caching, you may need to configure your cache to allow these headers through.
Can I use this with other security plugins?
Yes, but be careful of conflicts. If another plugin also:
* Sends security headers, you may get duplicates (usually harmless)
* Blocks user enumeration, one should be disabled
* Has login rate limiting, choose one to avoid confusion
This plugin is designed to be lightweight and focused on core WordPress hardening.
What happens to my data when I uninstall?
When you uninstall (not just deactivate) the plugin:
* All plugin settings are deleted
* All security logs are deleted
* All login rate limiting transients are cleared
* Your WordPress installation is returned to its default state
Note: Deactivating the plugin preserves all settings.
Does this block the WordPress REST API?
No. The plugin only secures user-related endpoints by requiring authentication. All other REST API functionality works normally. Public endpoints like oEmbed continue to work.
I'm locked out after too many failed attempts. What do I do?
Failed login blocks expire automatically based on your configured window (default: 15 minutes). Wait for the block period to expire, or:
Access your database (phpMyAdmin, etc.)
Search for options with _transient_wpsh_login_ in the name
Delete those transient options
Try logging in again
Review the "Recent Security Events" log
Use browser dev tools to inspect HTTP headers
Try accessing /?author=1 (should return 404 if blocking is enabled)
Test failed login attempts to verify rate limiting
Does this plugin require HTTPS?
Not required, but strongly recommended. HSTS features require HTTPS. For maximum security, your entire site should use HTTPS with a valid SSL certificate.
Is this plugin compatible with multisite?
The plugin is designed for single-site installations. Multisite compatibility has not been tested and is not officially supported at this time.