| 开发者 | zerobot |
|---|---|
| 更新时间 | 2026年5月18日 22:58 |
| PHP版本: | 7.4 及以上 |
| WordPress版本: | 6.9 |
| 版权: | GPLv2 or later |
| 版权网址: | 版权信息 |
No. The default Fail Mode is "Fail Open" — visitors are allowed through silently and the incident is logged to the PHP error log. You can switch to Fail Closed in Protection Settings if you prefer strict security.
Every visitor decision is cached per-IP for 24 hours by default, so repeat visitors do not trigger additional API calls. A page that gets 1,000 hits/hour from returning visitors typically results in only a handful of API calls.
No. The fingerprint collector is disabled by default and only injects on the public site when the administrator turns on "Browser Fingerprint" under Protection Settings.
Yes — the REST API Guard auto-exempts /wc/store/ routes. Add other custom routes to the
exempt list as needed.
Single-site only in v1.0. Multisite support is planned for v1.1.
Helpers::countryNameToCode() lookup resolves names to
codes, and the flag image renders before the country name on every
log row.$_SERVER['REQUEST_URI'] in XmlRpcGuard::register() is
now run through wp_unslash() and sanitize_text_field() before the
regex match, clearing the two PHPCS warnings about that variable.License::isDomainAuthorized() method that the admin_notices hook called.
The method now exists on the License class, fails open when no
authorization state has been recorded yet, and gets set true/false by
activate() based on whether the auto domain-registration call to the
ZeroBot platform succeeded (HTTP 200) or reported the domain as already
registered (HTTP 409).flagpedia.net/privacy
URL from the External Services section of readme.txt.wp_add_inline_script() attached to the existing zerobot-security-admin
handle, instead of an inline <script> tag. No behavioural change — the
same JS payload is delivered through the official WordPress enqueue API.wp_enqueue_script() with a
script_loader_tag filter for the data attributes, replacing the raw
echo '<script>'. Respects standard WordPress script filters.delete_transient() for each,
so the object cache and transient DB stay in sync.