Most WordPress security plugins protect sites by modelling attackers — maintaining lists of known bad IPs, known attack signatures, and known malicious patterns. Janric Shield takes the opposite approach.
Janric Shield models your legitimate users, not the attackers.
During a short learning phase it builds a behavioural profile of how your admins actually log in — when, where, from which networks, and how they interact with the login form. Once that profile is established, anything that deviates significantly from it is flagged as suspicious. A brand new attack tool, a previously unseen technique, a credential stuffing campaign — it doesn’t matter whether it appears on any blocklist. If it doesn’t look like you, it scores high.
Learning Phase (Days 1–14)
The plugin silently observes every login attempt and builds a per-site, per-user baseline covering:
No data leaves your server. Everything is stored locally in your WordPress database using Welford’s online algorithm — a compact statistical method that maintains running mean and variance without storing individual data points.
Advisory Phase (Days 7–14)
Once enough legitimate logins have been recorded, the plugin begins scoring attempts and showing you what would have been blocked — without actually blocking anything yet. This lets you verify the model is accurate before enabling enforcement.
Active Phase (Day 14+)
With blocking enabled, attempts are scored in real time against your learned baseline. Suspicious attempts are challenged with a math-based security question and a tarpitting delay. High-confidence attacks are blocked outright.
Every login attempt receives a suspicion score from 0 to 100:
Immediate (from day one, no learning required)
admin or root that don’t exist on your sitepython-requests, curl, wget, sqlmap, nikto and otherssystem.multicall batch attacksAfter baseline established (7–14 days)
After per-user profile established (20+ logins per user)
Beyond login protection, Janric Shield also includes:
/wp-json/wp/v2/users receive convincing fake usernames instead of your real ones. The probe is logged and scored.Janric Shield operates entirely on your own server. No data is transmitted to any external service except for optional IP geolocation lookups (country and network type) which use the public ip-api.com service. IP addresses are stored as SHA-256 hashes in the attempt log. No personally identifiable information is shared with Janric or any third party.
The plugin is structured around five core classes:
JanricShield_Baseline — Welford online statistics engine, per-site and per-user profilesJanricShield_Scorer — Scores attempts against the learned baselineJanricShield_Capture — Hooks into WordPress authentication pipeline, captures behavioural signalsJanricShield_Enforcer — Acts on scores based on current mode and thresholdsJanricShield_DB — Database schema, migrations, and settings