{"id":316373,"date":"2026-06-10T20:24:18","date_gmt":"2026-06-10T20:24:18","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/bastora-security-audit\/"},"modified":"2026-06-10T21:17:06","modified_gmt":"2026-06-10T21:17:06","slug":"bastora-security-audit","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/bastora-security-audit\/","author":22020153,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.2.3","stable_tag":"0.2.3","tested":"7.0","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"Bastora Security Audit","header_author":"Bastora","header_description":"Honest 52-point security audit for WordPress. Hardens login, server configuration, version leaks and security headers without conflicts.","assets_banners_color":"c3c8c6","last_updated":"2026-06-10 21:17:06","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/bastora.de\/","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":46,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.2.2":{"tag":"0.2.2","author":"mathiasva","date":"2026-06-10 20:23:57"},"0.2.3":{"tag":"0.2.3","author":"mathiasva","date":"2026-06-10 21:17:06"}},"upgrade_notice":{"0.2.3":"<p>Plugin-Beschreibung und Plugin-Listing-Seite auf wordpress.org auf Deutsch \u00fcbersetzt. Screenshots-Sektion mit vier Bildern wieder aufgenommen.<\/p>","0.2.2":"<p>Plugin Review Team feedback: all paid-tier markers removed from code, UI and report. Wizard is now three steps. Marker constant for the conflict-check renamed to a neutral name.<\/p>","0.2.1":"<p>Vorbereitung f\u00fcr die Einreichung im WordPress-Plugin-Verzeichnis: Plugin-Name, Donate-Link und Screenshots-Sektion bereinigt.<\/p>","0.2.0":"<p>Neuer Onboarding-Wizard mit vier Schritten plus echtem Vorher-Nachher-Vergleich. H\u00e4rtungen werden erst nach Klick scharf geschaltet, das Plugin misst vorher nur.<\/p>","0.1.6":"<p>Plugin Review Team-Feedback: doppelte URI im Header entfernt.<\/p>","0.1.5":"<p>Plugin Review Team-Vorbereitung: Inline-<code>onclick<\/code>\/<code>style<\/code>\/<code>base64<\/code>-SVG durchg\u00e4ngig in enqueued Assets bzw. Dashicons ausgelagert; POST-Sanitization geh\u00e4rtet.<\/p>","0.1.4":"<p>Plugin Review Team feedback: unn\u00f6tiges <code>require_once<\/code> von <code>wp-admin\/includes\/plugin.php<\/code> im Konflikt-Check entfernt.<\/p>","0.1.3":"<p>Konflikt-Check erkennt jetzt auch MU-Plugin-basierte Sicherheits-Schichten \u2014 verhindert Filter-Doppelung und Whitelabel-Br\u00fcche.<\/p>","0.1.2":"<p>External calls to api.wordpress.org are now opt-in by default \u2014 review your settings after upgrade if you rely on the update-related audit points.<\/p>","0.1.1":"<p>Plugin Review Team feedback: text domain alignment, CSS enqueue, contributors fix.<\/p>","0.1.0":"<p>Initial release.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3568084,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3568084,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3568084,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3568084,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["0.2.2","0.2.3"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3568084,"resolution":"1","location":"assets","locale":"","width":1280,"height":720},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3568084,"resolution":"2","location":"assets","locale":"","width":1280,"height":720},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3568084,"resolution":"3","location":"assets","locale":"","width":1280,"height":720},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3568084,"resolution":"4","location":"assets","locale":"","width":1280,"height":720}},"screenshots":{"1":"Der erste Scan startet \u2014 Bastora pr\u00fcft 52 Sicherheitspunkte in etwa 20 Sekunden.","2":"Ergebnis des ersten Scans: Score plus klare Aufteilung in bestanden, Hinweise und offene Punkte.","3":"Bastora schaltet die H\u00e4rtungen scharf \u2014 wo ein anderes Sicherheits-Plugin schon zust\u00e4ndig ist, l\u00e4sst Bastora die Hand davon.","4":"Das Dashboard nach Aktivierung: aktueller Sicherheits-Score und jeder Pr\u00fcfpunkt mit Klartext-Erkl\u00e4rung."}},"plugin_section":[],"plugin_tags":[8533,2439,31093,602,600],"plugin_category":[38,54],"plugin_contributors":[266569],"plugin_business_model":[],"class_list":["post-316373","plugin","type-plugin","status-publish","hentry","plugin_tags-audit","plugin_tags-brute-force","plugin_tags-hardening","plugin_tags-login","plugin_tags-security","plugin_category-authentication","plugin_category-security-and-spam-protection","plugin_contributors-mathiasva","plugin_committers-mathiasva"],"banners":{"banner":"https:\/\/ps.w.org\/bastora-security-audit\/assets\/banner-772x250.png?rev=3568084","banner_2x":"https:\/\/ps.w.org\/bastora-security-audit\/assets\/banner-1544x500.png?rev=3568084","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/bastora-security-audit\/assets\/icon-128x128.png?rev=3568084","icon_2x":"https:\/\/ps.w.org\/bastora-security-audit\/assets\/icon-256x256.png?rev=3568084","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/bastora-security-audit\/assets\/screenshot-1.png?rev=3568084","caption":"Der erste Scan startet \u2014 Bastora pr\u00fcft 52 Sicherheitspunkte in etwa 20 Sekunden."},{"src":"https:\/\/ps.w.org\/bastora-security-audit\/assets\/screenshot-2.png?rev=3568084","caption":"Ergebnis des ersten Scans: Score plus klare Aufteilung in bestanden, Hinweise und offene Punkte."},{"src":"https:\/\/ps.w.org\/bastora-security-audit\/assets\/screenshot-3.png?rev=3568084","caption":"Bastora schaltet die H\u00e4rtungen scharf \u2014 wo ein anderes Sicherheits-Plugin schon zust\u00e4ndig ist, l\u00e4sst Bastora die Hand davon."},{"src":"https:\/\/ps.w.org\/bastora-security-audit\/assets\/screenshot-4.png?rev=3568084","caption":"Das Dashboard nach Aktivierung: aktueller Sicherheits-Score und jeder Pr\u00fcfpunkt mit Klartext-Erkl\u00e4rung."}],"raw_content":"<!--section=description-->\n<p><strong>Bastora<\/strong> ist ein ehrlicher WordPress-Sicherheits-Check. Statt tausend Schalter ohne Erkl\u00e4rung pr\u00fcft Bastora Deine Installation gegen einen festen Katalog aus <strong>52 Sicherheitspunkten<\/strong> und zeigt Dir das Ergebnis als Klartext-Ampel direkt in Deinem Dashboard.<\/p>\n\n<p>Bastora unterscheidet sich von anderen Sicherheits-Plugins in drei Punkten:<\/p>\n\n<ol>\n<li><strong>Ehrliche Au\u00dfensicht.<\/strong> Bastora pr\u00fcft Deine Seite so, wie ein Bot sie sieht: Versionslecks im HTML, offene Verzeichnis-Listen, fehlende Security-Header, sichtbare Endpoints. Die meisten anderen Plugins pr\u00fcfen nur ihre eigene Konfiguration.<\/li>\n<li><strong>Konflikt-erkennende Auto-H\u00e4rtung.<\/strong> H\u00e4rtungen sind ab Werk aktiv. Bastora pr\u00fcft, ob ein anderes Sicherheits-Plugin (Wordfence, Solid Security, AIOS, Limit Login Attempts und andere) denselben Punkt schon \u00fcbernimmt, und tritt elegant zur Seite, statt einen Konflikt zu bauen.<\/li>\n<li><strong>Null Konfiguration.<\/strong> Installieren, aktivieren, einmal \u201eSicherheitspr\u00fcfung starten\" klicken, fertig. Bastora richtet sich selbst ein.<\/li>\n<\/ol>\n\n<h4>Was Bastora pr\u00fcft<\/h4>\n\n<ul>\n<li><strong>Zugangssicherheit (11 Punkte):<\/strong> HTTPS-Login, Brute-Force-Schutz, Salt-Keys, geteilte Konten, Login-Verhalten<\/li>\n<li><strong>Systemabsicherung (10 Punkte):<\/strong> Datei-Editor, Verzeichnis-Listings, wp-config-Sperre, Debug-Modus, Dateirechte, Revisionen<\/li>\n<li><strong>Informationsschutz (10 Punkte):<\/strong> Generator-Tag, RSD-Link, WLW-Manifest, XML-RPC, REST-API-Benutzer, Pingbacks, X-Powered-By<\/li>\n<li><strong>Security-Header (5 Punkte):<\/strong> X-Frame-Options, X-Content-Type-Options, Referrer-Policy, Permissions-Policy, HSTS<\/li>\n<li><strong>Pingbacks (2 Punkte):<\/strong> ausgehende und eingehende Pingbacks<\/li>\n<li><strong>Auto-Updates (7 Punkte):<\/strong> n\u00e4chtlicher Schutz, Minor-\/Major-Auto-Updates, Plugin-\/Theme-Auto-Updates, verwaiste Erweiterungen<\/li>\n<li><strong>Monitoring und Betrieb (7 Punkte):<\/strong> Transients, Revisions-Cleanup, Captcha, WordPress-Version, PHP-Version, \/uploads\/-PHP-Sperre, Sicherheits-Plugin-Status<\/li>\n<\/ul>\n\n<h4>Was Bastora h\u00e4rtet (wenn kein Konflikt erkannt wird)<\/h4>\n\n<ul>\n<li>WordPress-Version aus HTML und RSS-Feed entfernt<\/li>\n<li>RSD-Link und WLW-Manifest entfernt<\/li>\n<li>Login-Shake-Effekt deaktiviert<\/li>\n<li>Login-Fehlermeldung verallgemeinert (verr\u00e4t nicht mehr, welche Benutzer existieren)<\/li>\n<li>Author-Seiten umgeleitet (verhindert das Aufz\u00e4hlen von Benutzernamen)<\/li>\n<li>XML-RPC abgeschaltet (au\u00dfer ein konkurrierendes Plugin \u00fcbernimmt das schon)<\/li>\n<li>Pingback-XML-RPC-Methoden gesperrt<\/li>\n<li>REST-API-Endpoint \/users f\u00fcr nicht eingeloggte Anfragen gesperrt<\/li>\n<li>Application Passwords deaktiviert<\/li>\n<li><strong>Login-Honeypot:<\/strong> verstecktes Formularfeld in der Login-Maske, das Bots ausf\u00fcllen und sich damit als Bot zu erkennen geben<\/li>\n<li><strong>Brute-Force-Schutz mit IP-Sperre:<\/strong> 5 Fehlversuche \u2192 30 Minuten Sperre. Bei wiederholten Sperren: Eskalation auf 4 Stunden, dann 24 Stunden. Z\u00e4hler setzt sich nach erfolgreichem Login zur\u00fcck. IPv6 wird auf dem \/64-Pr\u00e4fix gesperrt. Cloudflare- und Reverse-Proxy-IP-Erkennung ist eingebaut.<\/li>\n<\/ul>\n\n<h4>Konflikt-erkennend<\/h4>\n\n<p>Wenn eines der folgenden Plugins schon l\u00e4uft, erkennt Bastora das und deaktiviert nur die \u00fcberlappenden Bereiche:<\/p>\n\n<ul>\n<li>Wordfence Security<\/li>\n<li>Sucuri Security<\/li>\n<li>Solid Security (fr\u00fcher iThemes)<\/li>\n<li>All-In-One WP Security &amp; Firewall<\/li>\n<li>MalCare Security<\/li>\n<li>WP Cerber Security<\/li>\n<li>Limit Login Attempts Reloaded<\/li>\n<li>Disable XML-RPC<\/li>\n<li>Disable Application Passwords<\/li>\n<li>Really Simple SSL<\/li>\n<li>HTTP Headers<\/li>\n<\/ul>\n\n<p>Im Dashboard siehst Du pro H\u00e4rtung im Klartext, warum sie aktiv oder inaktiv ist.<\/p>\n\n<h4>Was Bastora bewusst **nicht** macht<\/h4>\n\n<ul>\n<li><strong>Kein erzwungenes TOTP.<\/strong> Solopreneure sperren sich regelm\u00e4\u00dfig mit Authenticator-Apps aus. Bastora setzt stattdessen auf Brute-Force-Schutz, Rate-Limit und Anomalie-Erkennung.<\/li>\n<li><strong>Kein Verstecken der Login-URL.<\/strong> Eine umbenannte Login-URL macht den Passwort-Reset-Link in der Mail kaputt, sobald das Plugin deaktiviert wird. Rate-Limit plus Honeypot ist die saubere L\u00f6sung.<\/li>\n<li><strong>Keine Cloud-Verbindung ohne Zustimmung.<\/strong> Alle externen Verbindungen (auch Versions-Abgleich gegen wordpress.org) sind ab Werk aus. Sie schalten sich erst ein, wenn Du sie im Welcome-Wizard oder in den Einstellungen ausdr\u00fccklich freigibst.<\/li>\n<\/ul>\n\n<h4>Optionale anonyme Statistik (geplant, in dieser Version noch nicht aktiv)<\/h4>\n\n<p>Eine k\u00fcnftige Plugin-Version wird optionale anonyme Sicherheits-Telemetrie an bastora.de anbieten. <strong>In dieser Plugin-Version wird keine Telemetrie gesendet. Der Opt-in-Schalter speichert nur Deine Zustimmung f\u00fcr ein sp\u00e4teres Release.<\/strong> Wenn die Versand-Pipeline sp\u00e4ter live geht, w\u00fcrden ausschlie\u00dflich folgende anonymisierten technischen Werte \u00fcbertragen:<\/p>\n\n<ul>\n<li>WordPress-, PHP- und MySQL-Versions-Strings<\/li>\n<li>Locale (zum Beispiel de_DE)<\/li>\n<li>Liste der installierten Plugin-Slugs (ohne Versionen)<\/li>\n<li>Audit-Ergebnisse (welche der 52 Punkte sind rot, gelb, gr\u00fcn)<\/li>\n<li>Eine zuf\u00e4llige anonyme Site-ID (UUID), lokal beim ersten Plugin-Start erzeugt<\/li>\n<\/ul>\n\n<p>Was <strong>nie<\/strong> \u00fcbertragen w\u00fcrde: Domain, URL, IP-Adressen, E-Mail-Adressen, Benutzernamen, Beitragsinhalte, Dateiinhalte.<\/p>\n\n<h3>Privacy<\/h3>\n\n<h4>Externe Verbindungen<\/h4>\n\n<p>Bastora kontaktiert externe Server in zwei klar getrennten F\u00e4llen. <strong>Beide sind opt-in. Ab Werk macht das Plugin keine externen Verbindungen.<\/strong><\/p>\n\n<p><strong>1. Versions-Abgleich gegen api.wordpress.org (opt-in)<\/strong><\/p>\n\n<p>Wenn Du im Welcome-Wizard oder in den Einstellungen \u201eVersions-Abgleich erlauben\" aktivierst, fragt Bastora bei einem manuellen Scan die api.wordpress.org nach:<\/p>\n\n<ul>\n<li>der aktuellen WordPress-Core-Version: <code>https:\/\/api.wordpress.org\/core\/version-check\/1.7\/<\/code><\/li>\n<li>pro erkennbarem Plugin nach dessen letztem Update-Datum: <code>https:\/\/api.wordpress.org\/plugins\/info\/1.0\/&lt;slug&gt;.json<\/code><\/li>\n<li>pro erkennbarem Theme nach dessen letztem Update-Datum: <code>https:\/\/api.wordpress.org\/themes\/info\/1.2\/?action=theme_information&amp;request[slug]=&lt;slug&gt;<\/code><\/li>\n<\/ul>\n\n<p>Das ist dieselbe API, die WordPress selbst f\u00fcr seine eigenen Update-Checks nutzt. \u00dcbertragen wird nur der Slug pro Plugin oder Theme. Keine Domain, keine Nutzerdaten, keine Besucher-IP. Die Abfragen laufen nur bei manuellem Klick auf den Scan-Button, nie automatisch im Hintergrund. Antworten werden 24 Stunden zwischengespeichert.<\/p>\n\n<p>Wenn Du diesen Punkt nicht aktivierst, werden die update-relevanten Audit-Punkte als \u201enicht pr\u00fcfbar\" markiert und es geht keine Anfrage raus.<\/p>\n\n<p><strong>2. Anonyme Telemetrie an bastora.de (geplant, in dieser Version nicht aktiv)<\/strong><\/p>\n\n<p>Eine k\u00fcnftige Plugin-Version soll optionale anonymisierte Telemetrie an bastora.de anbieten. <strong>In dieser Plugin-Version ist diese Pipeline nicht implementiert \u2014 kein <code>wp_remote_post<\/code>, kein Payload, keine \u00dcbertragung an bastora.de findet im Code statt.<\/strong> Der Opt-in-Schalter in den Einstellungen speichert nur Deine Zustimmung f\u00fcr ein sp\u00e4teres Release.<\/p>\n\n<p>Wenn die Versand-Pipeline in einem sp\u00e4teren Release live geht, w\u00fcrden die folgenden anonymisierten Werte \u00fcbertragen:<\/p>\n\n<ul>\n<li>WordPress-, PHP- und MySQL-Versions-Strings<\/li>\n<li>Locale-Code (zum Beispiel de_DE)<\/li>\n<li>Liste der installierten Plugin-Slugs (ohne Versionen)<\/li>\n<li>Theme-Slug des aktiven Themes<\/li>\n<li>Audit-Ergebnisse: pro Sicherheitspunkt der Status (passed \/ warning \/ failed)<\/li>\n<li>Eine zuf\u00e4llige anonyme Site-ID (UUID), lokal beim ersten Plugin-Start erzeugt<\/li>\n<\/ul>\n\n<p>Was <strong>nie<\/strong> \u00fcbertragen w\u00fcrde: Domain, URL, IP-Adressen, E-Mail-Adressen, Benutzernamen, Beitragsinhalte, Dateiinhalte, Datenbankinhalte.<\/p>\n\n<h4>Datenschutzhinweis<\/h4>\n\n<p>Vollst\u00e4ndige Datenschutzerkl\u00e4rung: https:\/\/bastora.de\/datenschutz.php\nVerantwortliche Stelle laut Impressum: https:\/\/bastora.de\/impressum.php<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Installiere das Plugin aus dem WordPress-Plugin-Verzeichnis oder lade den ZIP-Ordner nach <code>\/wp-content\/plugins\/<\/code>.<\/li>\n<li>Aktiviere das Plugin im Men\u00fc \u201ePlugins\".<\/li>\n<li>\u00d6ffne das neue Men\u00fc \u201eBastora\" und klicke einmal auf \u201eSicherheitspr\u00fcfung starten\".<\/li>\n<\/ol>\n\n<p>Mehr ist nicht zu tun. Bastora richtet sich selbst ein.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"brauche%20ich%20technisches%20wissen%2C%20um%20bastora%20zu%20nutzen%3F\"><h3>Brauche ich technisches Wissen, um Bastora zu nutzen?<\/h3><\/dt>\n<dd><p>Nein. Bastora braucht keine Konfiguration. Installieren, aktivieren, scannen \u2014 fertig.<\/p><\/dd>\n<dt id=\"funktioniert%20bastora%20neben%20wordfence%2Fsucuri%2Fsolid%20security%3F\"><h3>Funktioniert Bastora neben Wordfence\/Sucuri\/Solid Security?<\/h3><\/dt>\n<dd><p>Ja. Bastora erkennt diese Plugins beim Aktivieren und tritt in den \u00fcberlappenden Bereichen zur Seite. Das Dashboard zeigt Dir, welche H\u00e4rtungen wegen eines Konflikts inaktiv sind.<\/p><\/dd>\n<dt id=\"%C3%9Cbertr%C3%A4gt%20das%20plugin%20daten%20von%20meiner%20seite%3F\"><h3>\u00dcbertr\u00e4gt das Plugin Daten von meiner Seite?<\/h3><\/dt>\n<dd><p>Ab Werk nichts. Die einzigen externen Verbindungen, die diese Version macht, sind opt-in-Versions-Abgleiche gegen api.wordpress.org (nur der Slug, keine Domain, keine Nutzerdaten). Die anonyme Statistik-Pipeline an bastora.de ist <strong>in dieser Version nicht aktiv<\/strong> \u2014 der Opt-in-Schalter in den Einstellungen speichert nur Deine Zustimmung f\u00fcr ein sp\u00e4teres Release.<\/p><\/dd>\n<dt id=\"wie%20nehme%20ich%20die%20statistik-zustimmung%20wieder%20zur%C3%BCck%3F\"><h3>Wie nehme ich die Statistik-Zustimmung wieder zur\u00fcck?<\/h3><\/dt>\n<dd><p>Bastora \u2192 Einstellungen \u2192 Haken bei \u201eZustimmung vormerken\" raus \u2192 speichern. Da in dieser Plugin-Version keine Daten gesendet werden, l\u00f6scht das Zur\u00fccknehmen einfach die gespeicherte Zustimmung.<\/p><\/dd>\n<dt id=\"wo%20werden%20die%20daten%20gespeichert%3F\"><h3>Wo werden die Daten gespeichert?<\/h3><\/dt>\n<dd><p>Auf deutschen Servern. Bastora arbeitet ausschlie\u00dflich mit einem deutschen Hoster.<\/p><\/dd>\n<dt id=\"was%20passiert%2C%20wenn%20ich%20bastora%20deinstalliere%3F\"><h3>Was passiert, wenn ich Bastora deinstalliere?<\/h3><\/dt>\n<dd><p>Bei normaler Deaktivierung bleiben die Bastora-Einstellungen erhalten. Wenn Du das Plugin per \u201eL\u00f6schen\" entfernst, werden alle Einstellungen, Audit-Berichte und Site-IDs gel\u00f6scht. H\u00e4rtungen werden automatisch zur\u00fcckgerollt.<\/p><\/dd>\n<dt id=\"wann%20kommt%20der%20gedruckte%20bericht%3F\"><h3>Wann kommt der gedruckte Bericht?<\/h3><\/dt>\n<dd><p>In einer der n\u00e4chsten Plugin-Versionen. Ab 0.1.0 steht der Bericht als HTML direkt im Dashboard zur Verf\u00fcgung.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.2.3<\/h4>\n\n<ul>\n<li>Plugin-Header-Beschreibung und readme.txt auf Deutsch \u00fcbersetzt \u2014 Plugin-Listing-Seite auf wordpress.org ist damit f\u00fcr die deutsche Zielgruppe lesbar.<\/li>\n<li>Screenshots-Sektion wieder aufgenommen, vier Bilder erg\u00e4nzt (Scan-Start, Scan-Ergebnis, H\u00e4rtung scharf schalten, Dashboard).<\/li>\n<li>Plugin-Assets (Icon, Banner) im WP.org-Plugin-Verzeichnis aktualisiert.<\/li>\n<\/ul>\n\n<h4>0.2.2<\/h4>\n\n<ul>\n<li>Plugin Review Team feedback: all paid-tier markers removed. The dead <code>premium_only_ids()<\/code> list, the dashboard upsell block, the report's premium section and the wizard's paid-service step are gone. The wizard now has three steps (opt-in \u2192 scan \u2192 activation). No more references to a paid tier inside the plugin code, the admin UI or the printable report.<\/li>\n<li>Conflict-check marker constant renamed from <code>BASTORA_PRO_SECURITY_LAYER_VERSION<\/code> to <code>BASTORA_MANAGED_LAYER_VERSION<\/code> (neutral naming, no Pro\/Premium connotation).<\/li>\n<li>readme.txt: paid-service section removed.<\/li>\n<li>Telemetry consistency: the opt-in toggle in the welcome wizard and in settings now clearly states that the bastora.de sender pipeline is <strong>not active in this plugin version<\/strong>, the toggle only records consent for a future release. readme.txt Privacy section aligned to match.<\/li>\n<li>Scanner: <code>check_monitor_03<\/code> (captcha plugins detection) and <code>check_monitor_07<\/code> (security plugin detection) now read <code>active_plugins<\/code> directly from the option instead of loading <code>wp-admin\/includes\/plugin.php<\/code>. One less <code>require_once<\/code> of a core file.<\/li>\n<\/ul>\n\n<h4>0.2.1<\/h4>\n\n<ul>\n<li>Plugin-Name auf \u201eBastora Security Audit\" gek\u00fcrzt (deckungsgleich mit dem Slug, kein Sonderzeichen im Header).<\/li>\n<li><code>Donate link<\/code> aus <code>readme.txt<\/code> entfernt (verwies auf die Produktseite, keine echte Spenden-URL).<\/li>\n<li><code>== Screenshots ==<\/code>-Sektion tempor\u00e4r aus <code>readme.txt<\/code> entfernt. Wird wieder aufgenommen, sobald die Bilder im WordPress-Assets-Verzeichnis liegen.<\/li>\n<li>MU-Plugin-Konflikt-Check liest jetzt zus\u00e4tzlich eine Marker-Konstante. Quellcode-Kommentar produktneutral formuliert.<\/li>\n<\/ul>\n\n<h4>0.2.0<\/h4>\n\n<ul>\n<li>Neuer Onboarding-Wizard mit schrittweiser Aktivierung der H\u00e4rtungen plus Vorher-Nachher-Vergleich.<\/li>\n<li>H\u00e4rtungen werden erst nach dem ersten Klick auf \u201eJetzt absichern\" im Wizard scharf geschaltet. Davor l\u00e4uft das Plugin im reinen Mess-Modus.<\/li>\n<li>Bisheriges Welcome-Banner mit Zwei-H\u00e4kchen-Block durch den Wizard ersetzt.<\/li>\n<\/ul>\n\n<h4>0.1.6<\/h4>\n\n<ul>\n<li>Plugin Review Team-Feedback: <code>Author URI<\/code> aus dem Plugin-Header entfernt, da identisch mit <code>Plugin URI<\/code>. Nur noch eine URI im Header.<\/li>\n<\/ul>\n\n<h4>0.1.5<\/h4>\n\n<ul>\n<li>Welcome-Banner und Bericht: Inline-<code>onclick<\/code>-Handler durch enqueued JavaScript ersetzt (<code>assets\/admin.js<\/code>, <code>assets\/js\/report.js<\/code>).<\/li>\n<li>Inline-<code>style<\/code>-Attribute im Welcome-Banner und im Login-Honeypot in Utility-Klassen (<code>assets\/admin.css<\/code>, <code>assets\/css\/login-honeypot.css<\/code>) ausgelagert.<\/li>\n<li>Men\u00fc-Icon nutzt jetzt das WordPress-Standard-Dashicon <code>dashicons-shield<\/code> statt eines <code>base64<\/code>-Inline-SVG.<\/li>\n<li><code>$_POST<\/code>-Werte im Welcome- und Settings-Handler durchlaufen jetzt zus\u00e4tzlich <code>wp_unslash<\/code> + <code>sanitize_text_field<\/code>, auch wenn sie nur als Bool genutzt werden.<\/li>\n<li>Plugin-Header um <code>Author URI<\/code> und <code>Domain Path<\/code> erg\u00e4nzt.<\/li>\n<\/ul>\n\n<h4>0.1.4<\/h4>\n\n<ul>\n<li>Konflikt-Check liest die aktiven Plugins direkt aus der <code>active_plugins<\/code>-Option und l\u00e4dt <code>wp-admin\/includes\/plugin.php<\/code> nicht mehr unn\u00f6tig. Vermeidet einen <code>require_once<\/code> ohne unmittelbar folgenden Funktions-Aufruf.<\/li>\n<\/ul>\n\n<h4>0.1.3<\/h4>\n\n<ul>\n<li>Konflikt-Check erkennt jetzt auch MU-Plugin-basierte Sicherheits-Schichten (Marker-Konstanten\/Funktionen). Plugin zieht sich automatisch in den \u00fcberlappenden Bereichen zur\u00fcck (XML-RPC, REST users, Security Headers, Brute-Force, Honeypot, Application Passwords), damit Filter nicht doppelt feuern und der Bastora-Honeypot auf Whitelabel-Sites unsichtbar bleibt.<\/li>\n<\/ul>\n\n<h4>0.1.2<\/h4>\n\n<ul>\n<li>External version-check calls to api.wordpress.org are now opt-in by default. Welcome banner uses two separate checkboxes (external calls + anonymous statistics), each independently toggleable in the settings page.<\/li>\n<li>Update-related audit points (update.06, update.07, monitor.04) report \"not checkable\" when the user has not enabled external calls.<\/li>\n<li>Privacy section in readme.txt expanded with the exact endpoint URLs and opt-in mechanics.<\/li>\n<\/ul>\n\n<h4>0.1.1<\/h4>\n\n<ul>\n<li>Text domain aligned with plugin slug (bastora-security-audit)<\/li>\n<li>Printable report CSS moved from inline style to enqueued stylesheet<\/li>\n<li>Contributors list corrected to plugin author account<\/li>\n<\/ul>\n\n<h4>0.1.0<\/h4>\n\n<ul>\n<li>Initial release<\/li>\n<li>Scanner covering all 52 audit points<\/li>\n<li>11 conflict-aware filter hardenings<\/li>\n<li>Conflict detection for 13 known security plugins<\/li>\n<li>Admin dashboard with status card, findings list and hardening overview<\/li>\n<\/ul>","raw_excerpt":"Ehrlicher 52-Punkte-Sicherheits-Check f\u00fcr WordPress. Pr\u00fcft, h\u00e4rtet die wichtigsten Stellen automatisch und tritt zur Seite, wenn ein anderes Sicherhei &hellip;","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/316373","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=316373"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/mathiasva"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=316373"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=316373"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=316373"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=316373"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=316373"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=316373"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}