{"id":10841,"date":"2026-05-21T10:30:28","date_gmt":"2026-05-21T02:30:28","guid":{"rendered":"https:\/\/aeosub.com\/jr-security-hardening-login-protection\/"},"modified":"2026-05-21T10:30:28","modified_gmt":"2026-05-21T02:30:28","slug":"jr-security-hardening-login-protection","status":"publish","type":"post","link":"https:\/\/aeosub.com\/zh\/jr-security-hardening-login-protection\/","title":{"rendered":"JR Security Hardening and Login Protection"},"content":{"rendered":"<div class=\"plugin-info-card\" style=\"border: 1px solid #e2e8f0;border-radius: 10px;overflow: hidden;margin-bottom: 30px;font-family: -apple-system, system-ui, sans-serif;background: #fff\">\n<table style=\"width: 100%;border-collapse: collapse;font-size: 14px\">\n<tr style=\"border-bottom: 1px solid #edf2f7\">\n<th style=\"padding: 15px 20px;text-align: left;width: 35%;color: #4a5568;background: #fcfcfc\"><img decoding=\"async\" src=\"https:\/\/s.w.org\/plugins\/geopattern-icon\/jr-security-hardening-login-protection.svg\" style=\"width: 40px;height: 40px;border-radius: 6px;margin-right: 12px;vertical-align: middle\"> Developer<\/th>\n<td style=\"padding: 15px 20px;font-weight: 500\"><a href=\"https:\/\/profiles.wordpress.org\/reinajhon46\/\" target=\"_blank\" rel=\"noopener\">reinajhon46<\/a><\/td>\n<\/tr>\n<tr style=\"border-bottom: 1px solid #edf2f7\">\n<th style=\"padding: 12px 20px;text-align: left;color: #4a5568;background: #fcfcfc\">Version<\/th>\n<td style=\"padding: 12px 20px\">v1.0.0<\/td>\n<\/tr>\n<tr style=\"border-bottom: 1px solid #edf2f7\">\n<th style=\"padding: 12px 20px;text-align: left;color: #4a5568;background: #fcfcfc\">Active Installs<\/th>\n<td style=\"padding: 12px 20px\">0 +<\/td>\n<\/tr>\n<tr style=\"border-bottom: 1px solid #edf2f7\">\n<th style=\"padding: 12px 20px;text-align: left;color: #4a5568;background: #fcfcfc\">Requires \/ Tested<\/th>\n<td style=\"padding: 12px 20px\">5.0 \/ 6.9.4<\/td>\n<\/tr>\n<tr style=\"border-bottom: 1px solid #edf2f7\">\n<th style=\"padding: 12px 20px;text-align: left;color: #4a5568;background: #fcfcfc\">Last Updated<\/th>\n<td style=\"padding: 12px 20px\">2026-05-21 2:15am GMT<\/td>\n<\/tr>\n<tr>\n<th style=\"padding: 12px 20px;text-align: left;color: #4a5568;background: #fcfcfc\">Official Link<\/th>\n<td style=\"padding: 12px 20px\"><a href=\"https:\/\/wordpress.org\/plugins\/jr-security-hardening-login-protection\/\" target=\"_blank\" style=\"text-decoration: none;color: #4a3bca;font-weight: bold\" rel=\"noopener\">View Details \u2192<\/a><\/td>\n<\/tr>\n<\/table><\/div>\n<div class=\"plugin-short-desc\" style=\"margin: 20px 0;padding: 12px 15px;background: #f9fafb;border-left: 4px solid #4a3bca;border-radius: 6px;font-style: italic;color: #4a5568\">WordPress hardening and login protection: security headers, enumeration blocking, rate limiting, IP whitelist, event logging and server rules.<\/div>\n<p>JR Security Hardening and Login Protection secures your WordPress installation at the application level with one-click hardening modules. Designed to be secure by default and Cloudflare compatible.<\/p>\n<p><strong>Included modules:<\/strong><\/p>\n<ul>\n<li><strong>Disable XML-RPC<\/strong> \u2014 Full block (filter + hard block) to prevent brute force attacks and pingback DDoS.<\/li>\n<li><strong>Hide WordPress version<\/strong> \u2014 Removes version from generator meta and CSS\/JS assets.<\/li>\n<li><strong>Disable file editor<\/strong> \u2014 Prevents theme and plugin editing from the admin panel (DISALLOW_FILE_EDIT).<\/li>\n<li><strong>Disable emojis<\/strong> \u2014 Removes WordPress emoji scripts and styles, improving performance.<\/li>\n<li><strong>Block user enumeration (?author= and \/author\/)<\/strong> \u2014 Dual-layer protection against username discovery.<\/li>\n<li><strong>Block REST enumeration (wp-json users)<\/strong> \u2014 Prevents enumeration via the WordPress REST API.<\/li>\n<li><strong>Block sensitive paths\/files<\/strong> \u2014 Blocks access to readme.html, license.txt, .env, .git, composer.json, etc. (only what passes through WordPress).<\/li>\n<li><strong>Security headers<\/strong> \u2014 X-Content-Type-Options, Referrer-Policy, Permissions-Policy, X-Frame-Options, HSTS (HTTPS only) and removal of technology-revealing headers.<\/li>\n<li><strong>Login protection<\/strong> \u2014 Rate limiting by IP and by user+IP with configurable temporary lockout.<\/li>\n<li><strong>IP whitelist<\/strong> \u2014 Excludes trusted IPs from rate limiting to avoid accidental lockouts.<\/li>\n<li><strong>Email notification<\/strong> \u2014 Receive an email when an IP is locked out due to too many failed login attempts.<\/li>\n<li><strong>Activity log<\/strong> \u2014 Security event logging in a dedicated database table with configurable retention and automatic cleanup via cron.<\/li>\n<li><strong>Ready-to-use server rules<\/strong> \u2014 Code for Apache (.htaccess) and Nginx to block static files that WordPress cannot reach.<\/li>\n<\/ul>\n<p><strong>Smart IP detection:<\/strong><\/p>\n<ul>\n<li>Native support for Cloudflare (CF-Connecting-IP).<\/li>\n<li>Option to trust X-Forwarded-For \/ X-Real-IP behind trusted proxies.<\/li>\n<li>Fallback to REMOTE_ADDR.<\/li>\n<\/ul>\n<p><strong>Clean uninstall:<\/strong><\/p>\n<p>When the plugin is deleted, all options, the events table and transients are removed. No data is left behind in your database.<\/p>","protected":false},"excerpt":{"rendered":"<p>WordPress hardening and login protection: security headers, enumeration blocking, rate limiting, IP whitelist, event logging and server rules.<\/p>","protected":false},"author":1,"featured_media":9317,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"footnotes":""},"categories":[252],"tags":[1027,1449,664,555],"class_list":["post-10841","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-trends","tag-hardening","tag-login-protection","tag-security","tag-wordpress-plugin"],"_links":{"self":[{"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/posts\/10841","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/comments?post=10841"}],"version-history":[{"count":0,"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/posts\/10841\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/media\/9317"}],"wp:attachment":[{"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/media?parent=10841"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/categories?post=10841"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/tags?post=10841"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}