ReportedIP Hive Light protects WordPress logins against brute-force and password-spray attacks. It is intentionally focused: a per-IP attempt counter, a progressive block ladder, and an optional community lookup. No bloat, no dashboards, no upsell.
Two operating modes
How it works
wp_login_failed increments a per-IP counter using an atomic upsert (no race conditions under concurrent attacks).wp_authenticate_user short-circuits known-bad IPs before the WordPress core authentication runs.Cache-Control: no-store, no-cache, must-revalidate, max-age=0 and Pragma: no-cache headers on the block page.Privacy
wp_salt(). Plain-text usernames are never persisted or transmitted.For developers
reportedip_hive_is_whitelisted, reportedip_hive_get_client_ip, reportedip_hive_event_category_map, reportedip_hive_api_endpoint.reportedip_hive_log, reportedip_hive_ip_blocked, reportedip_hive_report_queued.A free Community Access Key is available at reportedip.de. The plugin works without one in Local Shield mode.
This plugin can connect to the ReportedIP API at https://reportedip.de. All
external requests are opt-in only — they are made exclusively when (a) a
“Community Access Key” has been entered in the plugin settings and (b) the
“Operation Mode” is set to “Community Network”. The default mode is “Local
Shield”, which performs zero external requests.
https://reportedip.de/wp-json/reportedip/v2/check?ip={ip}X-Key: {your-access-key}wp_authenticate_userhttps://reportedip.de/wp-json/reportedip/v2/reportX-Key: {your-access-key}https://reportedip.de/wp-json/reportedip/v2/verify-keyX-Key: {entered-key}When a brute-force attempt is detected and the failing username is recorded
locally, the plugin stores sha256( username + wp_salt() ) only — never the
plain text. The salted hash is also what would be transmitted with a report,
preventing recipients from recovering the original username.
You can switch back to Local Shield mode at any time in Settings ReportedIP
Hive Connection. Doing so stops all external traffic immediately.
This plugin ships every stylesheet and script it needs inside the plugin
folder. No CDN, no Google Fonts, no remote stylesheets, no remote scripts
are loaded — every asset URL begins with the plugin’s own
wp-content/plugins/reportedip-hive/ path.
The full list of bundled, locally-served assets:
assets/css/design-system.css — design tokens and components used onassets/css/admin.css — admin-page overrides on top of the designassets/css/wizard.css — standalone styles for the first-run setupassets/js/admin.js — handles tab switching and the AJAXfetch() againstadmin-ajax.php (same origin); no third-party endpointwp_kses() with an explicit allow-list<img> element points at an external host.The complete list of files distributed in the WordPress.org ZIP is
visible at Plugins Plugin File Editor once the plugin is installed.
License URI: https://www.gnu.org/licenses/gpl-2.0.html).vendor/ directory, no jQuery copy,jquery, wp-list-table, etc.) and the plugin only dependsReportedIP Hive Light is provided “as is”, without warranty of any kind, express or
implied, including but not limited to warranties of merchantability, fitness
for a particular purpose, and non-infringement. The author shall not be liable
for any claim, damages, or other liability arising from the use of this
software (this is the standard GPLv2-or-later disclaimer; see the LICENSE
file for the full text).
The plugin provides defense-in-depth against brute-force and password-spray
login attacks. It does not replace strong passwords, two-factor
authentication, server-level firewalls, or web-application firewalls. No
single security measure offers a 100 % guarantee against compromise. You
remain responsible for the overall security posture of your WordPress site.
The optional Community Network mode forwards data to the third-party service
operated at https://reportedip.de — see the “External services” section
above for the full data flow. Site operators that enable Community Network
mode are responsible for assessing the lawful basis under their applicable
data-protection regime (in the EU, GDPR Art. 6(1)(f) — legitimate interest
in network security — typically applies) and for updating their own privacy
policy accordingly.