

Der erste Scan startet, Bastora prüft 62 Sicherheitspunkte in etwa 25 Sekunden.
Bastora ist ein ehrlicher WordPress-Sicherheits-Check. Statt tausend Schalter ohne Erklärung prüft Bastora Deine Installation gegen einen festen Katalog aus 62 Sicherheitspunkten und zeigt Dir das Ergebnis als Klartext-Ampel direkt in Deinem Dashboard.
Bastora unterscheidet sich von anderen Sicherheits-Plugins in drei Punkten:
wp-content/uploads/bastora-quarantine/. Du bekommst eine E-Mail mit der Liste der reparierten Dateien. Voraussetzung: Versions-Abgleich-Opt-in aktiv. Bei Hostern mit schreibgeschützten Core-Dateien bleibt die Anzeige + Mail erhalten.Wenn eines der folgenden Plugins schon läuft, erkennt Bastora das und deaktiviert nur die überlappenden Bereiche:
Im Dashboard siehst Du pro Härtung im Klartext, warum sie aktiv oder inaktiv ist.
Wenn Du das Häkchen „Statistik aktivieren und teilen” in den Einstellungen setzt, schickt Bastora einmal sofort und danach nur alle 28 Tage eine kompakte anonyme Zusammenfassung per HTTPS-POST an https://bastora.de/v1/telemetry/. Vor dem Häkchen geht kein einziger Request raus. Die niedrige Frequenz ist bewusst: Bastora will Masse-Infos über viele Sites sammeln, kein dichtes Zeitprofil einzelner Sites.
Übertragen werden ausschließlich:
zugang.01 und eine Zahl, keine Inhalte.Was nie übertragen wird: Domain, URL, IP-Adresse, E-Mail-Adressen, Benutzernamen, Beitragsinhalte, Dateiinhalte. Der bastora.de-Server loggt keine Aufrufer-IP. Pro Site-ID wird maximal ein Eintrag pro Tag akzeptiert (UPSERT), die normale Sende-Frequenz pro Site liegt ohnehin bei einem Datensatz alle 28 Tage. Bei Deinstallation des Plugins werden die lokale Site-ID und alle Bastora-Optionen entfernt.
Bastora kontaktiert externe Server in zwei klar getrennten Fällen. Beide sind opt-in. Ab Werk macht das Plugin keine externen Verbindungen.
1. Versions-Abgleich gegen api.wordpress.org (opt-in)
Wenn Du im Welcome-Wizard oder in den Einstellungen „Versions-Abgleich erlauben” aktivierst, fragt Bastora bei einem manuellen Scan die api.wordpress.org nach:
https://api.wordpress.org/core/version-check/1.7/https://api.wordpress.org/core/checksums/1.0/?version=<version>&locale=en_UShttps://api.wordpress.org/plugins/info/1.0/<slug>.jsonhttps://api.wordpress.org/themes/info/1.2/?action=theme_information&request[slug]=<slug>Wenn Bastora bei der täglichen Prüfung manipulierte oder fehlende Kerndateien entdeckt, lädt Bastora zusätzlich die offizielle WordPress-ZIP herunter, um die saubere Originaldatei zu extrahieren:
https://downloads.wordpress.org/release/wordpress-<version>.zipDie ZIP wird einmal pro Version 7 Tage lokal in wp-content/uploads/bastora-quarantine/_core-cache/ gespeichert, um wiederholten Bandbreitenverbrauch zu vermeiden. Vor dem Ersetzen einer Datei prüft Bastora deren MD5-Hash gegen den von api.wordpress.org gemeldeten Wert (Doppel-Sicherung gegen Download-Pannen).
Ab Plugin-Version 0.4.0 lädt Bastora für die tägliche Plugin- und Theme-Wache zusätzlich pro installiertem Plugin/Theme die offizielle ZIP aus dem WordPress.org-Repository, um die einzelnen Dateien gegen das Original abzugleichen:
https://downloads.wordpress.org/plugin/<slug>.<version>.ziphttps://downloads.wordpress.org/theme/<slug>.<version>.zipDie ZIPs werden 7 Tage lokal in wp-content/uploads/bastora-quarantine/_asset-cache/ gespeichert. Plugins und Themes, die NICHT im offiziellen WordPress.org-Repository liegen (z.B. Premium-Plugins, Custom-Themes), werden als „extern, nicht prüfbar” markiert, es geht kein Request raus außer dem ersten API-Lookup, der mit 404 antwortet und das Ergebnis 24 Stunden zwischenspeichert. Bei Plugins findet eine automatische Reparatur bewusst NICHT statt; bei Funden bekommst Du eine Admin-Mail mit der Liste der abweichenden Dateien. Bei Themes aus dem WordPress.org-Repository schreibt Bastora ab Version 1.3.0 eine vom Original abweichende Datei selbst zurück und sichert die vorgefundene Fassung in der Quarantäne. Themes ohne Original bei wordpress.org bleiben vom Abgleich unangetastet; nur eindeutiger Schadcode (Webshell, Backdoor, Spuren-Verwischer) wird auch dort in die Quarantäne verschoben.
Das ist dieselbe API, die WordPress selbst für seine eigenen Update-Checks nutzt. Übertragen 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.
Wenn Du diesen Punkt nicht aktivierst, werden die update-relevanten Audit-Punkte als „nicht prüfbar” markiert und es geht keine Anfrage raus.
2. Bastora-Schwarm (opt-in, ab Plugin-Version 0.3.0)
Wenn Du den Bastora-Schwarm im Welcome-Wizard oder unter „Einstellungen Bastora-Schwarm” aktivierst, tauscht das Plugin Brute-Force-Angreifer-IPs anonym mit anderen teilnehmenden Sites aus. Drei Endpoints sind beteiligt:
https://bastora.de/api/swarm-register.php, Einmaliger POST beim Aktivieren. Der Server vergibt einen anonymen UUID-Token. Übertragen wird: die Plugin-Version. Nicht übertragen wird: Domain, URL, IP-Adresse Deiner Besucher, Owner-Daten. Die Server-IP des HTTP-Requests wird nur als gesalzener SHA-256-Hash für ein Rate-Limit gespeichert und ist nicht zurückrechenbar.https://bastora.de/api/swarm-report.php, POST bei Erkennung eines Brute-Force-Angriffs. Übertragen wird: der anonyme Token, die Angreifer-IP, der Angriffs-Typ („login_bruteforce”), die Severity, die Plugin-Version. Nicht übertragen wird: alles andere.https://bastora.de/api/swarm-feed.php, GET-Abruf der aktuellen Sperrliste, alle 5 Minuten via WP-Cron plus on-demand bei Login-Versuchen, jeweils mit 60-Sekunden-Cache und ETag-Optimierung. Im HTTP-Header geht der anonyme Token mit, sonst nichts.https://bastora.de/api/swarm-disconnect.php, POST beim Opt-out in den Einstellungen oder beim Deinstallieren. Übertragen wird: der anonyme Token. Der Server löscht den Knoten unmittelbar.Der HTTP-User-Agent ist bei allen vier Endpoints statisch „Bastora-Swarm/”, damit WordPress die Domain nicht über den Default-UA mitschickt. Rechtsgrundlage ist Art. 6 Abs. 1 lit. f DSGVO (berechtigtes Interesse an Angriffsabwehr). Eingegangene Reports werden serverseitig nach 14 Tagen automatisch gelöscht (Datenminimierung). Sperrlisten-Einträge verfallen nach 72 Stunden ohne neue Meldungen.
Pwned-Passwords-Abgleich (Opt-in, nur Backend-Login)
Wenn Du in den Einstellungen den Passwort-Leak-Check aktivierst, schickt Bastora bei jedem Backend-Login (max. 1× pro 7 Tage pro Nutzer) die ersten fünf Hex-Zeichen des SHA-1-Hashes Deines eingegebenen Passworts an https://bastora.de/v1/pwned/<prefix>. Übertragen wird ausschließlich dieses 5-Zeichen-Prefix. Nicht übertragen wird: das Passwort selbst, das vollständige Hash, der Nutzername, die Domain, irgendeine ID. Der bastora.de-Proxy fragt die offizielle haveibeenpwned.com-API mit dem Prefix an, cached das Ergebnis 7 Tage lokal in einer deutschen MySQL-Datenbank und schickt die Liste der Hash-Suffixe zurück. Der Abgleich passiert lokal in WordPress. Das Verfahren heißt k-Anonymity und wird auch von 1Password, Firefox und Chrome genutzt. Rechtsgrundlage: Art. 6 Abs. 1 lit. f DSGVO. Bei Treffer wird der Nutzer im Backend per Notice aufgefordert, das Passwort zu ändern, der Login wird nie blockiert.
Schad-URL-Feed (Opt-in)
Wenn Du den Schad-URL-Feed in den Einstellungen aktivierst, holt Bastora einmal pro Tag eine aktualisierte Domain-Liste von https://bastora.de/v1/url-feed/. Übertragen wird ausschließlich ein anonymer GET-Request, optional mit dem Zeitstempel des letzten erfolgreichen Abrufs als ?since=<unixts>, damit nur neu hinzugekommene Einträge geliefert werden. Es geht keine Domain Deiner Seite, keine Besucher-Daten und kein Identifier raus. Die Antwort ist eine reine JSON-Liste mit Schad-Domain, Typ („malware” oder „phishing”) und Severity, sie enthält keinen ausführbaren Code. Quellen, die der Bastora-Server aggregiert: URLhaus (abuse.ch, CC0 1.0) und der OpenPhish-Community-Feed. Die Liste wird lokal in einer WP-Option gespeichert (Hard-Cap 50 000 Einträge, 30 Tage Plugin-seitige TTL) und vom URL-Watch-Modul zusätzlich zur eingebauten Startliste für die Prüfung von Beiträgen und Kommentaren genutzt. Rechtsgrundlage: Art. 6 Abs. 1 lit. f DSGVO. Vor dem Opt-in-Häkchen wird kein einziger Aufruf an bastora.de/v1/url-feed/ ausgeführt.
Anonyme Sicherheits-Telemetrie an bastora.de (Opt-in)
Wenn Du in den Einstellungen den Schalter „Statistik aktivieren und teilen” setzt, schickt Bastora einmal sofort und danach nur alle 28 Tage einen JSON-POST an https://www.bastora.de/v1/telemetry/. Vor dem Häkchen wird kein Aufruf ausgeführt. Ab Plugin-Version 1.0.3 ist das Datenpaket bewusst umfangreicher, damit Bastora das gemeinsame Bedrohungsbild für die WordPress-Welt schärfen kann. Die niedrige Frequenz ist bewusst: Bastora will Masse-Infos über viele Sites sammeln, kein dichtes Zeitprofil einzelner Sites. Übertragen wird:
Was nie übertragen wird: Domain, URL, Server-IP, Besucher-IPs, E-Mail-Adressen, Benutzernamen, Beitragsinhalte, Datei-Inhalte, Datenbank-Inhalte. Der bastora.de-Server loggt keine Aufrufer-IP. Pro Site-ID akzeptiert der Server maximal einen Eintrag pro Tag (UPSERT, der jeweils neueste Stand bleibt). Rechtsgrundlage: Art. 6 Abs. 1 lit. f DSGVO. Bei Deinstallation des Plugins wird die lokale Site-ID gelöscht.
Wichtige Einordnung zur Quasi-Eindeutigkeit: Die Kombination aus Plugin-Inventar, Theme-Inventar, jeweiligen Versionen, Hosting-Provider-Slug und Locale ist statistisch sehr individuell. Auch ohne Domain entsteht damit ein „Fingerprint” der Installation. Bastora nutzt die Daten ausschließlich für die anonyme Statistik (häufigste Plugins, häufigste Lücken, Update-Rückstände) und führt die Telemetrie-Datenbank nie mit anderen Datenquellen zusammen. Wenn diese Einordnung für Dich nicht akzeptabel ist, lass das Telemetrie-Häkchen leer , das Plugin funktioniert auch ohne.
Lokale DNS-Anfrage zur Hosting-Provider-Erkennung (nur als Teil der Telemetrie-Funktion)
Wenn die Telemetrie aktiv ist, ermittelt Bastora einmalig den anonymen Hosting-Provider-Slug (z.B. „hetzner”, „ionos”, „kinsta”). Dafür ruft Bastora die lokale PHP-Funktion gethostbyaddr() mit der eigenen Server-IP auf, was eine PTR-Anfrage am Resolver des Hosters auslöst. Es geht KEIN Aufruf an einen Bastora-eigenen Server, keine externe API und keine Domain raus, nur die normale lokale Namensauflösung am Hoster-DNS. Das Ergebnis wird 30 Tage in einer WP-Option zwischengespeichert, damit das nur einmal alle 30 Tage passiert. Vor dem Telemetrie-Opt-in läuft auch diese Funktion nicht.
Vollständige Datenschutzerklärung: https://bastora.de/datenschutz.php
Verantwortliche Stelle laut Impressum: https://bastora.de/impressum.php