Geprüft wurde eine wordpress / woocommerce-Anwendung auf 4 Seiten. 15 Befunde blockieren die Freigabe und stehen in Phase G des Maßnahmenplans. 4 Kontrollen hängen von Angaben ab, die eine Website nicht preisgibt. Der größte ungenutzte Hebel liegt mit 45 von 100 Punkten bei der Sichtbarkeit in KI-Systemen.
| Befund | Bereich | Normbezug | Aufwand |
|---|---|---|---|
| Seite wird nicht über HTTPS ausgeliefert sec.no_https |
Sicherheit | GDPR-Art-32RFC-9325OWASP-ASVS-5.0-V13 |
2.0–8.0 h |
| Passwortübertragung über HTTP sec.form.password_http |
Sicherheit | GDPR-Art-32OWASP-ASVS-5.0-V13 |
0.5–2.0 h |
| .env-Datei öffentlich erreichbar expo.env |
Sicherheit | GDPR-Art-32OWASP-Top10-2025-A02NIS2-§30-BSIG |
0.3–2.0 h |
| Einwilligungspflichtige Dienste laden vor der Einwilligung consent.pre_consent_tracking |
Consent & TDDDG §25 | GDPR-Art-4-11GDPR-Art-7TDDDG-§25 |
8.0–24.0 h |
| Einwilligungspflichtige Dienste ohne Einwilligungsabfrage consent.missing_cmp |
Consent & TDDDG §25 | GDPR-Art-4-11GDPR-Art-7TDDDG-§25 |
8.0–24.0 h |
| Kein Impressum verlinkt legal.imprint.missing |
Pflichtangaben & Informationspflichten | DDG-§5 |
1.0–3.0 h |
| Keine Datenschutzerklärung gefunden legal.privacy_policy.missing |
Datenschutz / DSGVO | GDPR-Art-12GDPR-Art-13EDPB-Transparenz |
4.0–12.0 h |
| API-Schlüssel im ausgelieferten Client-Code ai.key_exposed |
KI-Sicherheit | AI-Act-VO-2024/1689OWASP-AISVS-1.0 |
4.0–16.0 h |
| Keine erkennbare Kennzeichnung der KI-Interaktion ai.transparency.missing |
KI-Governance / AI Act | AI-Act-VO-2024/1689AI-Omnibus-VO-2026/1744 |
1.0–4.0 h |
| Modell- und Prompt-Provenienz nicht nachgewiesen ai.provenance.missing |
KI-Governance / AI Act | AI-Act-Art-11ISO-42001OWASP-AISVS-1.0 |
4.0–16.0 h |
| Keine AI-Act-Klassifizierung je KI-Funktion ai.classification.missing |
KI-Governance / AI Act | AI-Act-VO-2024/1689AI-Omnibus-VO-2026/1744 |
4.0–20.0 h |
| Prompt-Injection-Resistenz nicht nachgewiesen ai.injection.unprotected |
KI-Sicherheit | OWASP-GenAI-2026-LLM01OWASP-AISVS-1.0BSI-LLM |
16.0–60.0 h |
| Nachweis fehlt: KI-Inventar / AI-BOM inkl. Modellversionen evid.ai_inventory |
Nachweise & Dokumentation | AI-ActISO-42001 |
4.0–24.0 h |
| Nachweis fehlt: AI-Act-Klassifizierung je KI-Funktion evid.ai_classification |
Nachweise & Dokumentation | AI-Act-Art-6AI-Act-Annex-III |
4.0–24.0 h |
| Nachweis fehlt: KI-Red-Team-Bericht (Prompt Injection, RAG, Tools) evid.ai_redteam |
Nachweise & Dokumentation | OWASP-GenAI-2026OWASP-AISVS-1.0 |
4.0–24.0 h |
Organisatorische Anforderungen – technisch von außen nicht prüfbar.
11 von 25 Angaben wurden automatisch aus dem Crawl abgeleitet (siehe Anhang). Diese 14 Punkte gibt eine Website grundsätzlich nicht preis – sie entscheiden aber darüber, ob BFSG, NIS2 oder der AI Act greifen.
Passive Prüfung von Transportverschlüsselung, Sicherheits-Headern, Cookies, Formularen und öffentlich erreichbaren Pfaden. Es wurden keine Angriffe ausgeführt und keine Zugangsdaten geraten.
/.env liefert HTTP 200 mit erwartetem Inhalt.
.env aus dem Webroot nehmen, Zugriff sperren und alle darin enthaltenen Zugangsdaten sofort rotieren.
Zugangsdaten werden unverschlüsselt übertragen.
Form-Action sofort auf HTTPS umstellen.
Ohne TLS sind alle Inhalte und Eingaben mitlesbar und manipulierbar.
TLS-Zertifikat einrichten (Let's Encrypt) und alles auf HTTPS erzwingen.
/wp-content/debug.log liefert HTTP 200 mit erwartetem Inhalt.
WP_DEBUG_LOG deaktivieren bzw. Logdatei außerhalb des Webroots ablegen und die alte Datei löschen.
Session-Cookies sind per JavaScript auslesbar – bei einem XSS ist die Sitzungsübernahme trivial.
HttpOnly für alle Session-/Auth-Cookies setzen.
Ohne CSP kann eingeschleustes JavaScript (XSS, kompromittiertes Third-Party-Skript, Magecart-Skimmer im Checkout) ungehindert laufen.
CSP zunächst im Report-Only-Modus ausrollen, Verstöße sammeln, dann scharf schalten. Für Shops besonders wichtig, da Kreditkarten-Skimmer genau hier ansetzen.
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/content-security-policy
Ohne Strict-Transport-Security kann ein Angreifer im selben Netz die erste Verbindung auf HTTP downgraden (SSL-Stripping).
Header setzen: Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/strict-transport-security
/xmlrpc.php liefert HTTP 200 mit erwartetem Inhalt.
xmlrpc.php sperren, sofern nicht für Jetpack/App benötigt.
Die Seite kann in einen fremden Iframe eingebettet und für Klick-Hijacking missbraucht werden.
X-Frame-Options: SAMEORIGIN und/oder CSP frame-ancestors 'self' setzen.
Cookies ohne Secure können über unverschlüsselte Verbindungen abfließen.
Alle Cookies mit Secure ausliefern.
Ohne CSRF-Token können Aktionen im Namen eingeloggter Nutzer ausgelöst werden. Hinweis: manche Frameworks setzen den Token per JavaScript – bitte manuell gegenprüfen.
CSRF-Token serverseitig erzeugen und validieren (WordPress: wp_nonce_field() / check_admin_referer()).
Unverschlüsselt geladene Ressourcen werden von Browsern blockiert oder als unsicher markiert.
Alle Ressourcen auf https:// umstellen; upgrade-insecure-requests in der CSP ergänzen.
Browser dürfen den Content-Type erraten (MIME-Sniffing).
X-Content-Type-Options: nosniff setzen.
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/x-content-type-options
Ohne /.well-known/security.txt haben Sicherheitsforscher keinen definierten Meldeweg.
/.well-known/security.txt mit Contact-, Policy- und Expires-Feld anlegen (RFC 9116).
/readme.html liefert HTTP 200 mit erwartetem Inhalt.
Zugriff auf /readme.html serverseitig unterbinden oder die Datei entfernen.
Ohne SameSite sind CSRF-Angriffe leichter möglich.
SameSite=Lax (bzw. None; Secure für Cross-Site-Zahlungsflows) setzen.
Header verraten konkrete Versionen und erleichtern automatisierten Angreifern die Auswahl passender Exploits.
X-Powered-By entfernen (expose_php = Off), Server-Tokens abschalten (server_tokens off; / ServerTokens Prod).
Eingebettete Skripte/Iframes dürfen Kamera, Mikrofon, Geolocation etc. anfragen.
Permissions-Policy: geolocation=(), camera=(), microphone=(), payment=(self) setzen.
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/permissions-policy
Vollständige URLs (inkl. Suchbegriffen, Token in Query-Strings) werden an Drittseiten weitergegeben.
Referrer-Policy: strict-origin-when-cross-origin setzen.
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/referrer-policy
Für SPF, DKIM und DMARC wird DNS-Zugriff benötigt (dnspython ist nicht installiert).
COOP isoliert den Browsing-Context gegen Cross-Origin-Angriffe.
Cross-Origin-Opener-Policy: same-origin prüfen (Achtung bei OAuth-Popups und Payment-Iframes).
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/cross-origin-opener-policy
RFC 9700 (OAuth 2.0 Security Best Current Practice) verlangt Authorization Code mit PKCE, state, exakte Redirect-URIs und verzichtet auf Implicit- und Password-Grant.
Authorization Code Flow mit PKCE, state und – bei OIDC – nonce; Tokens niemals in der URL; kurze Token-Laufzeiten; Redirect-URIs exakt matchen.
Session-Cookies ohne diese Attribute sind bei XSS oder Cross-Site-Requests direkt angreifbar.
Secure, HttpOnly und SameSite=Lax setzen.
Kurze Maximallängen verhindern Passphrasen und deuten häufig auf unsichere Speicherung hin.
Mindestens 64 Zeichen zulassen, keine künstlichen Zeichenklassenregeln.
Ob die Session-ID nach dem Login rotiert, ob Logout serverseitig invalidiert und ob Rate-Limits gegen Credential Stuffing greifen, lässt sich nur mit einem Testkonto verifizieren.
Testkonto bereitstellen und die Prüfungen im authentifizierten Lauf durchführen.
autocomplete="off" erschwert die Nutzung von Passwortmanagern und führt in der Praxis zu schwächeren, wiederverwendeten Passwörtern.
autocomplete="current-password" bzw. new-password verwenden.
Auf den gefundenen Anmeldeseiten deutet nichts auf einen zweiten Faktor hin. Eine pauschale 2FA-Pflicht für Kundenkonten gibt es nicht – für NIS2-pflichtige Einrichtungen nennt § 30 BSIG Multi-Faktor- bzw. kontinuierliche Authentifizierung dagegen ausdrücklich. Für privilegierte Zugänge ist MFA in jedem Fall Stand der Technik.
Phishingresistente MFA (WebAuthn/Passkey) mindestens für Administratoren und privilegierte Rollen verpflichtend machen; TOTP als Fallback.
https://www.w3.org/TR/webauthn-2/ · https://www.gesetze-im-internet.de/bsig_2025/__30.html
Abgleich der erkannten Versionen gegen offizielle Release-Feeds, Schwachstellendatenbanken und Support-Ende-Termine.
Support-Ende: 2022-11-28. Neue PHP-Lücken werden für diese Version nicht mehr geschlossen.
Auf PHP 8.2+ migrieren; vorher Kompatibilität mit PHPCompatibility / Rector prüfen.
Veraltete WordPress-Kernversionen sind das häufigste Einfallstor für automatisierte Massenangriffe.
Core-Update auf Staging einspielen, testen, danach produktiv; automatische Minor-Updates aktivieren.
Keine offene CVE gefunden, die Version liegt aber deutlich hinter dem aktuellen Stand.
Auf 3.7.1 oder neuer aktualisieren.
WooCommerce-Lücken betreffen direkt Bestell- und Kundendaten und werden aktiv ausgenutzt.
Update auf Staging testen (Checkout, Zahlungen, Versand, Steuern), dann produktiv ausrollen.
Universal Analytics wurde abgeschaltet – es werden keine Daten mehr erhoben, das Skript kostet aber weiterhin Ladezeit.
UA-Snippet entfernen, GA4 oder eine datenschutzfreundliche Alternative sauber einbinden.
Premium-/Custom-Plugins lassen sich nicht automatisch gegen einen Release-Feed prüfen. Genau hier fehlen Updates oft am längsten.
Lizenzstatus und Update-Kanal je Plugin dokumentieren; für Custom-Code ein Repository mit Review-Prozess einführen.
jQuery Migrate ist eine Übergangshilfe für veralteten Code und ein verlässlicher Indikator für technische Schulden.
Konsolen-Warnungen auswerten, betroffenen Code modernisieren, Migrate anschließend deaktivieren.
jQuery Migrate im Produktivbetrieb deutet auf veralteten Code hin
Ersatzbibliothek einplanen und schrittweise migrieren.
Gemessen am mobileen Abbild der Startseite mit Lighthouse 13.4.1. Google bewertet seit dem Mobile-First-Index nach der mobilen Fassung – deshalb wird nur diese abgefragt.
Zwei Messungen, die nicht dasselbe sind. Der Punktestand links ist der Laborwert: eine einzelne Messung unter genormten Bedingungen – gedrosseltes Mobilfunknetz, Mittelklassegerät, leerer Cache. Er ist reproduzierbar und eignet sich, um Änderungen zu vergleichen.
Wonach Google tatsächlich rankt, sind die Felddaten: was echte Besucher in den letzten 28 Tagen erlebt haben. Sie stehen weiter unten – sofern die Seite genug Verkehr hat, dass Google sie veröffentlicht. Weichen beide auseinander, gilt das Feld.
Die Core Web Vitals aus echtem Verkehr besteht nicht für dieser Seite.
Erhoben im Chrome UX Report über die letzten 28 Tage, gemessen an dieser Seite. Jede Torte zeigt, wie sich die Besucher auf die drei Bewertungsklassen verteilen – das ist die Information, die eine einzelne Zahl unterschlägt: Ein mittelmäßiger Durchschnitt kann bedeuten, dass alle mittelmäßig laden, oder dass die meisten sehr schnell laden und eine Minderheit sehr langsam. Nur der zweite Fall hat eine klare Ursache.
| Metrik | 75. Perzentil | Bewertung | gut | mittel | schlecht |
|---|---|---|---|---|---|
| LCP – größter Inhalt sichtbar | 4,10 s | schlecht | 38 % | 27 % | 35 % |
| INP – Reaktion auf Eingaben | 312 ms | verbesserungswürdig | 54 % | 33 % | 13 % |
| CLS – Layoutsprünge | 0,21 | verbesserungswürdig | 61 % | 26 % | 13 % |
| TTFB – erste Antwort des Servers | 1,45 s | verbesserungswürdig | 42 % | 34 % | 24 % |
Der ausgewiesene Wert ist das 75. Perzentil: drei von vier Aufrufen waren mindestens so schnell. Google nimmt bewusst nicht den Durchschnitt – der verdeckt genau die langsamen Aufrufe, um die es geht.
Eine Messung unter genormten Bedingungen. Sie sagt nicht, wie schnell Ihre Seite für einen bestimmten Besucher ist, sondern wie schnell sie unter immer gleichen Bedingungen ist – und genau deshalb lässt sich damit vergleichen, ob eine Änderung etwas gebracht hat.
| Metrik | Wert | Bewertung | Was sie misst |
|---|---|---|---|
| LCP – Größter Inhalt sichtbar | 4,8 s | schlecht | Wann der größte sichtbare Inhaltsblock fertig gezeichnet ist – meist das Titelbild oder die Überschrift. Der Wert, den ein Besucher als „die Seite ist da“ empfindet. Google nennt bis 2,5 s gut. |
| FCP – Erster Inhalt sichtbar | 2,1 s | verbesserungswürdig | Wann überhaupt zum ersten Mal etwas erscheint. Bis 1,8 s gut. Ein guter FCP bei schlechtem LCP heißt: Es geht schnell los, dauert aber lange bis zum Wesentlichen. |
| SI – Aufbaugeschwindigkeit | 5,4 s | schlecht | Wie schnell sich der sichtbare Bereich füllt, gemittelt über den ganzen Aufbau. Bestraft Seiten, die ruckweise erscheinen. |
| TBT – Blockierte Zeit | 890 ms | schlecht | Wie lange der Hauptthread so beschäftigt war, dass er auf Klicks nicht reagiert hätte. Fast immer JavaScript. Bis 200 ms gut. |
| CLS – Layoutsprünge | 0,18 | verbesserungswürdig | Wie stark Inhalte während des Ladens verrutschen – der Grund, warum man auf den falschen Knopf tippt. Bis 0,1 gut. |
Lighthouse beziffert, was jede Maßnahme einspart. Die Summe von rund 6.9 s ist eine Obergrenze – die Posten überschneiden sich teilweise, weil dieselbe Datei in mehreren Zeilen auftauchen kann. Von oben nach unten abarbeiten; die ersten zwei bis drei Posten machen erfahrungsgemäß den Großteil aus.
| Maßnahme | Zeitgewinn | Volumen | Worum es geht |
|---|---|---|---|
| Ungenutztes JavaScript entfernen | 2.4 s | 612 KB | Reduziert die Übertragung und die Zeit, die der Hauptthread mit Auswerten verbringt. Mehr dazu |
| Bilder in modernen Formaten ausliefern | 1.9 s | 848 KB | WebP und AVIF sind deutlich kleiner als JPEG und PNG bei gleicher Qualität. |
| Rendering-blockierende Ressourcen beseitigen | 1.3 s | 96 KB | Stylesheets und Skripte im Kopf verzögern den ersten Bildaufbau. |
| Ungenutztes CSS entfernen | 0.7 s | 174 KB | Ungenutzte Regeln müssen trotzdem übertragen und ausgewertet werden. |
| Antwortzeit des Servers verkürzen | 0.6 s | – | Die Zeit bis zum ersten Byte geht direkt in jede weitere Messung ein. |
Disallow: / verhindert die Indexierung vollständig.
Regel entfernen – typischer Überbleibsel aus der Staging-Phase.
Ohne Viewport-Meta ist die Seite auf Mobilgeräten nicht korrekt nutzbar – Google indexiert mobile-first.
<meta name="viewport" content="width=device-width, initial-scale=1"> ergänzen.
Ohne Canonical entstehen bei Filter-/Parameter-URLs Duplicate-Content-Probleme – im Shop besonders häufig.
Selbstreferenzierendes <link rel="canonical"> mit absoluter URL ausgeben.
Ohne Description generiert Google ein beliebiges Snippet – die Klickrate leidet.
Pro Seite eine 120–155 Zeichen lange Description mit Nutzenversprechen und Handlungsaufruf schreiben.
Alt-Texte sind Rankingfaktor für die Bildersuche und zwingend für Barrierefreiheit (BFSG/EAA).
Beschreibende Alt-Texte pflegen; dekorative Bilder mit alt="" auszeichnen.
Sprachauszeichnung fehlt – relevant für Suchmaschinen, Screenreader und KI-Systeme.
<html lang="de"> (bzw. de-DE) setzen.
Ohne Sitemap werden neue und tief verlinkte Seiten deutlich langsamer erfasst.
XML-Sitemap generieren (Yoast/RankMath/Shopify erzeugt sie automatisch) und in der Search Console einreichen.
Dünne Seiten ranken schlecht und liefern KI-Systemen nichts Zitierfähiges.
Inhaltstiefe erhöhen: Anwendungsfälle, FAQ, Spezifikationen, Ratgeberinhalte.
Verweise auf fremde Seiten, die nicht mehr erreichbar sind. Kein Fehler der eigenen Website, aber sichtbar für jeden Besucher.
Ziel aktualisieren, auf eine Archivfassung verweisen oder den Link entfernen.
Unklare Dokumenthierarchie.
Nur eine H1 je Seite, weitere Ebenen als H2/H3.
Jeder Aufruf läuft erst unverschlüsselt und wird dann umgeleitet. Das kostet einen Sprung und öffnet ein Zeitfenster, in dem sich die Anfrage umbiegen lässt.
Interne Verweise auf https:// umstellen oder relativ notieren.
Beim Teilen in sozialen Netzwerken und Messengern entsteht kein ansprechendes Vorschaubild.
og:title, og:description, og:image (1200×630) und og:url im Template ergänzen.
Suchmaschinen finden die Sitemap langsamer.
Sitemap: https://…/sitemap.xml ergänzen.
Zu kurze Titles verschenken Relevanz, zu lange werden in den SERPs abgeschnitten.
Auf 50–60 Zeichen optimieren.
Vorschau auf X/Twitter bleibt unvollständig.
twitter:card, twitter:title, twitter:image ergänzen.
Ausgesperrte Systeme können die Seite in KI-Antworten weder zitieren noch verlinken. Das kann bewusst gewollt sein (Content-Schutz) – für Sichtbarkeit ist es ein Ausschlusskriterium.
Bewusste Entscheidung dokumentieren. Für Sichtbarkeit: Such-Bots (OAI-SearchBot, PerplexityBot, Google-Extended) zulassen, reine Trainings-Bots ggf. separat behandeln.
Ohne schema.org-Auszeichnung müssen KI-Systeme Fakten wie Preis, Verfügbarkeit, Öffnungszeiten oder Autor aus dem Fließtext raten – die Zitierwahrscheinlichkeit sinkt deutlich.
Mindestens Organization + WebSite global, Product/Offer auf Produktseiten, FAQPage bei Fragen, Article bei Ratgeberinhalten, BreadcrumbList in der Navigation.
KI-Systeme extrahieren bevorzugt klar abgegrenzte, datierte und belegte Aussagen – Fließtext ohne Struktur wird selten zitiert.
Frage-basierte Zwischenüberschriften, kurze Antwortabsätze direkt darunter, Vergleichstabellen, Aktualisierungsdatum und Autorenkennzeichnung ergänzen.
llms.txt ist die entstehende Konvention, mit der KI-Systeme eine kuratierte Übersicht der wichtigsten Inhalte in Markdown erhalten – statt sich durch Navigations-HTML zu kämpfen.
/llms.txt mit Kurzbeschreibung des Unternehmens und kommentierten Links zu Kernseiten (Produkte, Preise, FAQ, Kontakt) anlegen; optional /llms-full.txt mit den Volltexten.
KI-Systeme brauchen eine eindeutige Beschreibung, wer das Unternehmen ist, um es als Entität zu verankern.
Über-uns-Seite mit klarer Positionierung, Gründungsjahr, Standort, Ansprechpartnern und sameAs-Verweisen (LinkedIn, Wikipedia, Branchenverzeichnisse) anlegen.
Ohne lang-Attribut fehlt sowohl Suchmaschinen als auch Screenreadern und KI-Systemen die Sprachzuordnung.
<html lang="de-DE"> setzen.
Name, Adresse und Telefonnummer (NAP) fehlen als strukturierte Daten. Für lokale Suche, Maps-Einträge und KI-Antworten auf Fragen wie „Anbieter in meiner Nähe“ ist das die Grundlage.
LocalBusiness- bzw. Organization-Markup mit PostalAddress, geo-Koordinaten, openingHoursSpecification und areaServed ergänzen; NAP-Daten seitenweit identisch halten und mit dem Google-Unternehmensprofil abgleichen.
Weder HTTP-Header noch lang-Attribut geben die Sprache an.
Content-Language-Header oder lang-Attribut setzen.
Ohne priceCurrency können Suchmaschinen und KI-Systeme Preise keinem Markt zuordnen.
priceCurrency im Offer-Markup ausgeben und regionale Preis-/Versandinformationen ergänzen.
Gemessen an echten Besuchern dieser Seite über die letzten 28 Tage. Das ist der Wert, nach dem Google rankt – der Laborwert von Lighthouse ist nur die Simulation dazu.
Zuerst die Metrik angehen, die als schlecht bewertet ist; die Einzelmaßnahmen aus Lighthouse zeigen, wo die Zeit verloren geht.
Labormessung unter genormten Bedingungen – gedrosseltes Mobilfunknetz, Mittelklassegerät. LCP 4,8 s, CLS 0,18, Total Blocking Time 890 ms.
Die aufgeführten Einzelmaßnahmen abarbeiten – sie sind nach eingespartem Ladezeitanteil sortiert.
Lighthouse beziffert, was jede Maßnahme einspart. Die Summe ist eine Obergrenze – die Posten überschneiden sich teilweise.
Von oben nach unten abarbeiten. Die ersten zwei bis drei Posten machen erfahrungsgemäß den Großteil aus.
HTML wird unkomprimiert ausgeliefert – typischerweise 60–80 % vermeidbares Übertragungsvolumen.
Brotli (bevorzugt) bzw. gzip für Text-Assets aktivieren.
Fehlende Maßangaben verursachen Layout-Sprünge (CLS) – einer der drei Core Web Vitals.
width/height (oder aspect-ratio) an allen <img>-Elementen setzen.
JPEG/PNG statt WebP/AVIF bedeutet typischerweise 25–50 % unnötiges Datenvolumen.
Bilder als WebP/AVIF mit <picture>-Fallback ausliefern; im Shop automatisiert über den Bilddienst der Plattform.
Wiederkehrende Besucher laden CSS/JS bei jedem Aufruf neu.
Cache-Control: public, max-age=31536000, immutable für versionierte Assets setzen.
Serverantwortzeit im guten Bereich.
Geprüft mit einer frischen Session ohne jeden Cookie: alles, was dabei geladen wird, geschieht zwangsläufig vor einer Einwilligung. JavaScript wird dabei nicht ausgeführt – was ein Consent-Tool später nachlädt, gehört in die Browser-Gegenprüfung.
Es wurden einwilligungspflichtige Dienste erkannt, aber kein Consent-Management. Damit kann keine wirksame Einwilligung vorliegen.
Consent-Management-Plattform mit Vorab-Blocking einführen und Einwilligungen protokollieren.
Beim Aufruf mit einer frischen Session – also ohne jede Einwilligung – werden bereits Informationen auf dem Endgerät gespeichert bzw. einwilligungspflichtige Dienste eingebunden. § 25 TDDDG verlangt dafür grundsätzlich eine vorherige Einwilligung; die Ausnahme greift nur bei unbedingt erforderlichen Funktionen.
Alle nicht unbedingt erforderlichen Skripte und Cookies bis zur Einwilligung blockieren – am zuverlässigsten über ein CMP mit echtem Vorab-Blocking (nicht nur nachträgliches Löschen).
Der Verantwortliche muss nachweisen können, dass eine Einwilligung erteilt wurde. Ein Consent-Protokoll wurde nicht als Nachweis hinterlegt.
Consent-Receipts mit Zeitpunkt, Zwecken/Kategorien, Policy-Version und Identifikator revisionssicher speichern und exportierbar halten.
Ohne Datenschutzerklärung sind die Informationspflichten nach Art. 13 DSGVO nicht erfüllt – schon das Ausliefern der Seite verarbeitet personenbezogene Daten (IP-Adresse).
Datenschutzerklärung erstellen und auf jeder Seite verlinken.
Einwilligungspflichtige Dienste werden geladen, ohne dass ein Consent-Tool erkennbar ist. Nach §25 TDDDG/DSGVO ist das abmahnfähig.
Consent-Management-Plattform einsetzen und Skripte erst nach erteilter Einwilligung laden (Consent Mode v2 bzw. blockierendes Tag-Management).
Es werden Dienste eingebunden, deren Anbieter typischerweise außerhalb des EWR sitzen. Ob tatsächlich eine Übermittlung stattfindet und ob sie durch Angemessenheitsbeschluss, Standardvertragsklauseln plus Transfer Impact Assessment getragen wird, lässt sich aus einem Request nicht ableiten.
Je Anbieter Transfergrundlage klären, SCC abschließen, TIA durchführen und in der Datenschutzerklärung ausweisen. Alternativ auf EU-Hosting oder lokale Einbindung umstellen.
Beim externen Einbinden wird die IP-Adresse der Besucher an Google übertragen – in Deutschland Gegenstand zahlreicher Abmahnungen (LG München I, 3 O 17493/20).
Schriften lokal hosten (self-hosted WOFF2) und die externen Verweise entfernen.
§ 5 DDG verlangt für geschäftsmäßige digitale Dienste Anbieterinformationen, die leicht erkennbar, unmittelbar erreichbar und ständig verfügbar sind.
Impressum anlegen und im Footer jeder Seite verlinken.
Für Verbrauchergeschäfte im elektronischen Geschäftsverkehr ist AGB / Nutzungsbedingungen regelmäßig erforderlich.
AGB / Nutzungsbedingungen erstellen und im Footer sowie im Bestellprozess verlinken.
Für Verbrauchergeschäfte im elektronischen Geschäftsverkehr ist Widerrufsbelehrung regelmäßig erforderlich.
Widerrufsbelehrung erstellen und im Footer sowie im Bestellprozess verlinken.
Screenreader-Nutzer erfahren nicht, was einzugeben ist. Bei Checkout-Formularen ist das ein Conversion- und Compliance-Problem (BFSG).
<label for> oder aria-label für jedes Eingabefeld.
B2C-Onlineshops unterliegen in Deutschland seit dem 28.06.2025 dem BFSG und benötigen u.a. eine Erklärung zur Barrierefreiheit.
Erklärung zur Barrierefreiheit mit Stand, Konformitätsgrad, bekannten Einschränkungen und Feedback-Mechanismus veröffentlichen und im Footer verlinken.
Übersprungene Ebenen erschweren die Orientierung per Screenreader und verwirren auch KI-Parser.
Ebenen lückenlos verwenden; Optik über CSS lösen.
Ohne <main>, <nav>, <header>, <footer> ist keine schnelle Navigation per Screenreader möglich.
Semantische HTML5-Elemente statt generischer <div> verwenden.
Tastaturnutzer müssen sich bei jedem Seitenaufruf durch die komplette Navigation arbeiten.
Als erstes fokussierbares Element einen Skip-Link auf #main einbauen.
Das Barrierefreiheitsstärkungsgesetz gilt seit dem 28.06.2025 unter anderem für Dienstleistungen im elektronischen Geschäftsverkehr gegenüber Verbrauchern. Dienstleistungs-Kleinstunternehmen sind ausgenommen. Ohne Angaben zu Zielgruppe und Unternehmensgröße lässt sich die Pflicht nicht bestimmen. Die Seite weist E-Commerce-Merkmale auf.
Scope-Fragen zielgruppe, mitarbeiterzahl und jahresumsatz beantworten.
Das deutsche NIS2-Umsetzungsgesetz ist seit dem 06.12.2025 in Kraft. Ob die Organisation als besonders wichtige oder wichtige Einrichtung erfasst ist, hängt von Sektor, Größe und Umsatz ab – und entscheidet, ob der Maßnahmenkatalog des § 30 BSIG verbindlich ist (inklusive MFA, Lieferkettensicherheit und Nachweispflicht).
Einstufung anhand der Anlagen des BSIG prüfen und dokumentieren; bei Erfassung Registrierung nicht vergessen.
Für jede KI-Funktion sind Rolle (Anbieter/Betreiber) und Risikoklasse zu bestimmen. Verbote gelten seit 02.02.2025, GPAI-Pflichten seit 02.08.2025, die allgemeine Anwendung inkl. Transparenzpflichten seit 02.08.2026. Die High-Risk-Pflichten wurden durch den AI Omnibus (VO 2026/1744) auf den 02.12.2027 (Annex III) bzw. 02.08.2028 (Annex-I-Produkte) verschoben – Engineering-Anforderungen sollten trotzdem jetzt eingeplant werden.
Klassifizierungsmemo je KI-Funktion erstellen und versioniert führen.
Jede produktive KI-Instanz muss eindeutig identifizierbar sein: Anbieter, Modellfamilie, konkrete Version bzw. Snapshot, Region, System-Prompt-Version, Retrieval-Index-Version und aktive Tools. Ohne diese Angaben sind reproduzierbare Tests, Incident Response und Änderungsmanagement unmöglich.
AI-BOM/Modell-Inventar pflegen; im Deployment-Manifest eine unveränderliche Versionsreferenz statt eines Alias wie latest verwenden.
Der AI Act verlangt, dass Menschen erkennen können, wenn sie mit einem KI-System interagieren; bestimmte synthetische Inhalte sind zu kennzeichnen. Die entsprechenden Transparenzpflichten stehen seit dem 2. August 2026 im Enforcement-Scope.
Deutlich sichtbar kennzeichnen, dass die Antworten von einem KI-System stammen – im Chat-Header und in der ersten Nachricht. KI-generierte Medien maschinenlesbar markieren.
Wenn KI-Ergebnisse Menschen betreffen, braucht es definierte Review- und Override-Punkte, qualifizierte Aufsicht und – bei ausschließlich automatisierten Entscheidungen mit erheblicher Wirkung – zusätzlich die Anforderungen aus Art. 22 DSGVO.
Entscheidungs-Policy, Eskalationspfad, Override-Funktion und Protokollierung der menschlichen Eingriffe festlegen.
Ein externer KI-Anbieter ist gleichzeitig Sicherheits-, Datenschutz-, Verfügbarkeits-, Lieferketten- und ggf. Drittlandrisiko. Bei NIS2-Pflicht ist Lieferkettensicherheit ausdrücklich Teil des Maßnahmenkatalogs.
Vendor-Dossier je Anbieter: Regionen, Unterauftragsverarbeiter, Retention, Training-on-customer-data, Security Assurance, Incident-SLA, Modellversionierung, Löschung, Exit-Strategie, Datenexport.
Ein Modellwechsel kann das Sicherheits- und Antwortverhalten verändern, ohne dass sich eine Zeile Websitecode ändert. Modellupdates sind deshalb wie Software-Releases zu behandeln.
Release-Gate: Provenienz-Prüfung, Privacy-Regression, Prompt-Injection-Suite, Safety-Eval, Qualitätsregression, Autorisierungs- und Tool-Tests, Red-Team-Teilmenge, menschliche Freigabe, Canary, überwachter Rollout.
Diese Bestandteile lösen eine AI-Act-Einordnung aus: je Funktion sind Rolle (Anbieter/Betreiber) und Risikoklasse zu bestimmen.
Indirekte Prompt Injection über Webseiten, PDFs, RAG-Dokumente, Tool-Ausgaben oder Memory gilt bei anwendungsintegrierten Sprachmodellen als inhärente Schwachstelle. Entscheidend ist die Architektur: eine Modellausgabe darf niemals als Autorisierungsentscheidung gelten.
Trust Boundaries definieren, fremde Inhalte als untrusted behandeln, Autorisierung ausschließlich serverseitig, Red-Team-Suite in die CI.
https://genai.owasp.org/ · https://owasp.org/www-project-artificial-intelligence-security-verification-standard/
Ein im Browser sichtbarer Schlüssel kann von jedem Besucher verwendet werden – auf Kosten des Betreibers und mit dessen Kontingenten und Rechten.
Schlüssel sofort rotieren, Aufrufe über einen serverseitigen Proxy mit Authentifizierung, Rate-Limit und Kostenbegrenzung führen.
KI hebt die Datenminimierung nicht auf. Zu prüfen ist mit Testdaten (Canary-Werten), welche personenbezogenen Daten, Tokens oder Geheimnisse die Grenze zum Modellanbieter tatsächlich überschreiten.
Vor dem Provider-Aufruf redigieren: PII-Erkennung, Pseudonymisierung, Allowlist erlaubter Felder; Retention beim Anbieter vertraglich begrenzen.
Modellausgabe ist untrusted input. Sie darf nicht ungeprüft als HTML, SQL, Shell-Kommando, Template, URL, API-Aufruf oder Code interpretiert werden.
Kontextsensitives Escaping und strukturelle Validierung (Schema) aller Ausgaben; Markdown-Rendering mit Allowlist; keine javascript:-Links.
Logging muss Vorfälle rekonstruierbar machen, darf aber nicht zur unkontrollierten Kopie sämtlicher personenbezogener Prompts werden. Datenminimierung und Speicherbegrenzung gelten auch für Observability.
Strukturierte, datensparsame Traces: Zeitpunkt, Request-ID, pseudonyme Mandanten-ID, Modell- und Prompt-Version, Policy-Version, Tool-Calls, Safety-Entscheidung, Klassifikation von Ein- und Ausgabe – statt Rohprompt mit Zugangsdaten und Gesundheitsdaten.
Sobald ein Modell Aktionen auslösen darf, wird aus einem Modellfehler oder einer Prompt Injection eine reale Handlung. Ein allgemeiner LLM-Prozess darf niemals direkt über breit privilegierte Zugangsdaten auf E-Mail, Cloud, CRM, Zahlungen oder Dateisystem zugreifen.
Least-Privilege je Tool, eigene Service-Identitäten, objekt- und mandantenbezogene Autorisierung, Parameter-Allowlists, menschliche Freigabe für irreversible Aktionen, Transaktionslimits.
Ein Scanner kann feststellen, dass ein Drittanbieter kontaktiert wird – nicht, ob dafür ein Auftragsverarbeitungsvertrag existiert.
Erforderlich sobald KI eingesetzt wird. Diese Anforderung lässt sich technisch nicht von außen prüfen – ohne hinterlegten Nachweis bleibt die Rechenschaftspflicht offen.
AI-Act-Klassifizierung je KI-Funktion erstellen bzw. beibringen und im Scope-File unter evidence.ai_classification hinterlegen.
Erforderlich sobald KI eingesetzt wird. Diese Anforderung lässt sich technisch nicht von außen prüfen – ohne hinterlegten Nachweis bleibt die Rechenschaftspflicht offen.
KI-Inventar / AI-BOM inkl. Modellversionen erstellen bzw. beibringen und im Scope-File unter evidence.ai_inventory hinterlegen.
Erforderlich bei produktivem LLM-Einsatz. Diese Anforderung lässt sich technisch nicht von außen prüfen – ohne hinterlegten Nachweis bleibt die Rechenschaftspflicht offen.
KI-Red-Team-Bericht (Prompt Injection, RAG, Tools) erstellen bzw. beibringen und im Scope-File unter evidence.ai_redteam hinterlegen.
Erforderlich bei KI mit Wirkung auf Personen. Diese Anforderung lässt sich technisch nicht von außen prüfen – ohne hinterlegten Nachweis bleibt die Rechenschaftspflicht offen.
AI Impact Assessment erstellen bzw. beibringen und im Scope-File unter evidence.ai_impact hinterlegen.
Erforderlich immer. Diese Anforderung lässt sich technisch nicht von außen prüfen – ohne hinterlegten Nachweis bleibt die Rechenschaftspflicht offen.
Getestetes Backup- und Wiederherstellungsverfahren erstellen bzw. beibringen und im Scope-File unter evidence.backup_restore hinterlegen.
Erforderlich bei erfassten B2C-Dienstleistungen. Diese Anforderung lässt sich technisch nicht von außen prüfen – ohne hinterlegten Nachweis bleibt die Rechenschaftspflicht offen.
Erklärung zur Barrierefreiheit erstellen bzw. beibringen und im Scope-File unter evidence.bfsg_erklaerung hinterlegen.
Erforderlich sobald ein externer Dienstleister personenbezogene Daten verarbeitet. Diese Anforderung lässt sich technisch nicht von außen prüfen – ohne hinterlegten Nachweis bleibt die Rechenschaftspflicht offen.
Auftragsverarbeitungsverträge aller Dienstleister erstellen bzw. beibringen und im Scope-File unter evidence.dpa hinterlegen.
Erforderlich immer. Diese Anforderung lässt sich technisch nicht von außen prüfen – ohne hinterlegten Nachweis bleibt die Rechenschaftspflicht offen.
Prozess für Betroffenenrechte (getestet) erstellen bzw. beibringen und im Scope-File unter evidence.dsar_prozess hinterlegen.
Erforderlich immer. Diese Anforderung lässt sich technisch nicht von außen prüfen – ohne hinterlegten Nachweis bleibt die Rechenschaftspflicht offen.
Incident-Response- und Meldeprozess (72 Stunden) erstellen bzw. beibringen und im Scope-File unter evidence.incident_runbook hinterlegen.
Erforderlich wenn eine Verarbeitung auf berechtigtem Interesse beruht. Diese Anforderung lässt sich technisch nicht von außen prüfen – ohne hinterlegten Nachweis bleibt die Rechenschaftspflicht offen.
Interessenabwägung (Legitimate Interest Assessment) erstellen bzw. beibringen und im Scope-File unter evidence.lia hinterlegen.
Erforderlich immer. Diese Anforderung lässt sich technisch nicht von außen prüfen – ohne hinterlegten Nachweis bleibt die Rechenschaftspflicht offen.
Lösch- und Aufbewahrungskonzept erstellen bzw. beibringen und im Scope-File unter evidence.loeschkonzept hinterlegen.
Erforderlich immer, wenn personenbezogene Daten verarbeitet werden. Diese Anforderung lässt sich technisch nicht von außen prüfen – ohne hinterlegten Nachweis bleibt die Rechenschaftspflicht offen.
Verzeichnis von Verarbeitungstätigkeiten (RoPA) erstellen bzw. beibringen und im Scope-File unter evidence.ropa hinterlegen.
Erforderlich bei Übermittlung in Drittländer ohne Angemessenheitsbeschluss. Diese Anforderung lässt sich technisch nicht von außen prüfen – ohne hinterlegten Nachweis bleibt die Rechenschaftspflicht offen.
Standardvertragsklauseln und Transfer Impact Assessment erstellen bzw. beibringen und im Scope-File unter evidence.scc_tia hinterlegen.
Erforderlich bei externen Dienstleistern und KI-Providern. Diese Anforderung lässt sich technisch nicht von außen prüfen – ohne hinterlegten Nachweis bleibt die Rechenschaftspflicht offen.
Lieferanten-/Vendor-Risikobewertung erstellen bzw. beibringen und im Scope-File unter evidence.vendor_assessment hinterlegen.
Erforderlich vor der Verarbeitung bei relevanter Datenverarbeitung. Diese Anforderung lässt sich technisch nicht von außen prüfen – ohne hinterlegten Nachweis bleibt die Rechenschaftspflicht offen.
Penetrationstest oder Sicherheitsprüfung erstellen bzw. beibringen und im Scope-File unter evidence.pentest hinterlegen.
Erforderlich sobald Einwilligungen eingeholt werden. Nach aktuellem Scope nicht einschlägig – bei Scope-Änderung neu bewerten.
Erforderlich bei voraussichtlich hohem Risiko (Profiling, Art.-9-Daten, KI-Scoring). Nach aktuellem Scope nicht einschlägig – bei Scope-Änderung neu bewerten.
Erforderlich bei Hosting-/Plattformrolle. Nach aktuellem Scope nicht einschlägig – bei Scope-Änderung neu bewerten.
Erforderlich bei NIS2-Pflicht oder vertraglicher Anforderung. Nach aktuellem Scope nicht einschlägig – bei Scope-Änderung neu bewerten.
Erforderlich bei NIS2-Pflicht, sonst empfohlen. Nach aktuellem Scope nicht einschlägig – bei Scope-Änderung neu bewerten.
Aufwände sind Spannen aus Erfahrungswerten je Befundtyp. Kosten = Aufwand × Stundensatz zuzüglich Projektmanagement und Risikozuschlag. Eine Indikation für die Budgetplanung – kein Angebot.
Alles, was die Freigabe verhindert: Blocker schließen und offene Scope-/Nachweisfragen klären.
| Maßnahme | Schwere | Stunden | Kosten (EUR) |
|---|---|---|---|
| Prompt-Injection-Resistenz nicht nachgewiesen ai.injection.unprotected |
⛔Blocker | 16.0–60.0 | 1.760–6.600 |
| Nachweis fehlt: KI-Inventar / AI-BOM inkl. Modellversionen evid.ai_inventory |
⛔Blocker | 4.0–24.0 | 460–2.760 |
| Nachweis fehlt: AI-Act-Klassifizierung je KI-Funktion evid.ai_classification |
⛔Blocker | 4.0–24.0 | 460–2.760 |
| Nachweis fehlt: KI-Red-Team-Bericht (Prompt Injection, RAG, Tools) evid.ai_redteam |
⛔Blocker | 4.0–24.0 | 460–2.760 |
| Einwilligungspflichtige Dienste laden vor der Einwilligung consent.pre_consent_tracking |
⛔Blocker | 8.0–24.0 | 800–2.400 |
| Einwilligungspflichtige Dienste ohne Einwilligungsabfrage consent.missing_cmp |
⛔Blocker | 8.0–24.0 | 800–2.400 |
| Keine AI-Act-Klassifizierung je KI-Funktion ai.classification.missing |
⛔Blocker | 4.0–20.0 | 440–2.200 |
| API-Schlüssel im ausgelieferten Client-Code ai.key_exposed |
⛔Blocker | 4.0–16.0 | 440–1.760 |
| Modell- und Prompt-Provenienz nicht nachgewiesen ai.provenance.missing |
⛔Blocker | 4.0–16.0 | 440–1.760 |
| Keine Datenschutzerklärung gefunden legal.privacy_policy.missing |
⛔Blocker | 4.0–12.0 | 460–1.380 |
| Seite wird nicht über HTTPS ausgeliefert sec.no_https |
⛔Blocker | 2.0–8.0 | 250–1.000 |
| Keine erkennbare Kennzeichnung der KI-Interaktion ai.transparency.missing |
⛔Blocker | 1.0–4.0 | 100–400 |
| Kein Impressum verlinkt legal.imprint.missing |
⛔Blocker | 1.0–3.0 | 115–345 |
| .env-Datei öffentlich erreichbar expo.env |
⛔Blocker | 0.3–2.0 | 38–250 |
| Passwortübertragung über HTTP sec.form.password_http |
⛔Blocker | 0.5–2.0 | 55–220 |
| Tool-Berechtigungen agentischer KI nicht nachgewiesen ai.agent.excessive_agency |
?Klärung nötig | 8.0–40.0 | 880–4.400 |
| Kein zweiter Faktor erkennbar auth.admin.no_mfa |
?Klärung nötig | 8.0–32.0 | 880–3.520 |
| NIS2-/BSIG-Einstufung nicht geklärt nis2.scope.unknown |
?Klärung nötig | 2.0–8.0 | 230–920 |
| BFSG-Anwendbarkeit nicht geklärt a11y.bfsg.scope_unknown |
?Klärung nötig | 0.5–1.0 | 58–115 |
Akute Risiken schließen, bevor sie ausgenutzt werden. Alles hier ist Gefahr im Verzug.
| Maßnahme | Schwere | Stunden | Kosten (EUR) |
|---|---|---|---|
| PHP 7.4.3 erhält keine Sicherheitsupdates mehr cur.php.eol |
!Kritisch | 8.0–40.0 | 1.000–5.000 |
| WordPress veraltet (5.9.3 → 6.8.2) cur.wp.outdated |
!Kritisch | 2.0–8.0 | 220–880 |
| robots.txt sperrt die komplette Seite seo.robots.blocks_all |
!Kritisch | 0.2–0.5 | 19–48 |
| WordPress debug.log öffentlich expo.debuglog |
▲Hoch | 0.3–2.0 | 38–250 |
Technische Basis auf einen wartbaren, aktuellen Stand bringen und die Angriffsfläche dauerhaft verkleinern.
| Maßnahme | Schwere | Stunden | Kosten (EUR) |
|---|---|---|---|
| Nachweis fehlt: Verzeichnis von Verarbeitungstätigkeiten (RoPA) evid.ropa |
▲Hoch | 4.0–24.0 | 460–2.760 |
| Nachweis fehlt: Interessenabwägung (Legitimate Interest Assessment) evid.lia |
▲Hoch | 4.0–24.0 | 460–2.760 |
| Nachweis fehlt: Auftragsverarbeitungsverträge aller Dienstleister evid.dpa |
▲Hoch | 4.0–24.0 | 460–2.760 |
| Nachweis fehlt: Standardvertragsklauseln und Transfer Impact Assessment evid.scc_tia |
▲Hoch | 4.0–24.0 | 460–2.760 |
| Nachweis fehlt: Lösch- und Aufbewahrungskonzept evid.loeschkonzept |
▲Hoch | 4.0–24.0 | 460–2.760 |
| Nachweis fehlt: Prozess für Betroffenenrechte (getestet) evid.dsar_prozess |
▲Hoch | 4.0–24.0 | 460–2.760 |
| Nachweis fehlt: Incident-Response- und Meldeprozess (72 Stunden) evid.incident_runbook |
▲Hoch | 4.0–24.0 | 460–2.760 |
| Nachweis fehlt: AI Impact Assessment evid.ai_impact |
▲Hoch | 4.0–24.0 | 460–2.760 |
| Nachweis fehlt: Lieferanten-/Vendor-Risikobewertung evid.vendor_assessment |
▲Hoch | 4.0–24.0 | 460–2.760 |
| Nachweis fehlt: Erklärung zur Barrierefreiheit evid.bfsg_erklaerung |
▲Hoch | 4.0–24.0 | 460–2.760 |
| Nachweis fehlt: Getestetes Backup- und Wiederherstellungsverfahren evid.backup_restore |
▲Hoch | 4.0–24.0 | 460–2.760 |
| Datenminimierung an der Provider-Grenze ungeprüft ai.dlp.unverified |
▲Hoch | 8.0–24.0 | 880–2.640 |
| Tracking-Dienste ohne erkennbares Consent-Management privacy.no_consent |
▲Hoch | 8.0–24.0 | 800–2.400 |
| Mögliche Drittlandtransfers ohne hinterlegten Nachweis (2 Anbieter) privacy.transfer.undocumented |
▲Hoch | 4.0–20.0 | 460–2.300 |
| Menschliche Aufsicht nicht nachgewiesen ai.oversight.missing |
▲Hoch | 4.0–20.0 | 440–2.200 |
| OAuth-/OIDC-Flow entspricht nicht der aktuellen Security-BCP auth.oauth.weak_parameters |
▲Hoch | 4.0–16.0 | 440–1.760 |
| Behandlung der Modellausgabe nicht nachgewiesen ai.output.unvalidated |
▲Hoch | 4.0–16.0 | 440–1.760 |
| KI-Lieferantenrisiko nicht bewertet ai.vendor.unassessed |
▲Hoch | 4.0–16.0 | 440–1.760 |
| Content-Security-Policy fehlt sec.csp |
▲Hoch | 4.0–16.0 | 400–1.600 |
| WooCommerce veraltet (6.1.0 → 9.9.0) cur.woo.outdated |
▲Hoch | 3.0–12.0 | 330–1.320 |
| Kein Nachweis über erteilte Einwilligungen consent.no_proof |
▲Hoch | 4.0–12.0 | 440–1.320 |
| AGB / Nutzungsbedingungen nicht verlinkt legal.terms.missing |
▲Hoch | 2.0–8.0 | 230–920 |
| Widerrufsbelehrung nicht verlinkt legal.withdrawal.missing |
▲Hoch | 2.0–8.0 | 230–920 |
| jquery veraltet (1.12.4 → 3.7.1) cur.lib.old.jquery |
▲Hoch | 0.5–4.0 | 50–400 |
| Session-Cookies ohne HttpOnly sec.cookie.httponly |
▲Hoch | 0.5–2.0 | 55–220 |
| Session-Cookie ohne Secure, HttpOnly, SameSite auth.session.cookie_flags |
▲Hoch | 0.5–2.0 | 55–220 |
| HSTS-Header fehlt sec.hsts |
▲Hoch | 0.5–1.5 | 62–188 |
| KI-Logging und Nachvollziehbarkeit ungeklärt ai.logging.insufficient |
◆Mittel | 4.0–12.0 | 440–1.320 |
| POST-Formulare ohne erkennbaren CSRF-Token sec.form.csrf |
◆Mittel | 2.0–8.0 | 220–880 |
| Session-Rotation und Logout nicht automatisiert prüfbar auth.session.rotation |
◆Mittel | 2.0–6.0 | 220–660 |
| 2 Plugins nicht im offiziellen Verzeichnis cur.wp.plugins.premium |
◆Mittel | 1.0–4.0 | 115–460 |
| Mixed Content (HTTP-Ressourcen auf HTTPS-Seite) sec.mixed_content |
◆Mittel | 1.0–4.0 | 100–400 |
| Google Fonts werden extern geladen privacy.google_fonts |
◆Mittel | 1.0–4.0 | 100–400 |
| Universal Analytics (UA) noch eingebunden cur.analytics.ua_eol |
◆Mittel | 1.0–3.0 | 100–300 |
| XML-RPC aktiv expo.xmlrpc |
◆Mittel | 0.3–2.0 | 38–250 |
| Cookies ohne Secure-Flag sec.cookie.secure |
◆Mittel | 0.5–2.0 | 55–220 |
| Passwortlänge auf 20 Zeichen begrenzt auth.password.maxlength |
◆Mittel | 0.5–2.0 | 55–220 |
| X-Content-Type-Options fehlt sec.xcto |
◆Mittel | 0.2–0.5 | 25–62 |
| Kein Clickjacking-Schutz sec.clickjacking |
◆Mittel | 0.2–0.5 | 25–62 |
Auffindbarkeit in klassischer Suche und KI-Systemen herstellen, Ladezeiten und Conversion verbessern.
| Maßnahme | Schwere | Stunden | Kosten (EUR) |
|---|---|---|---|
| Core Web Vitals aus echtem Nutzerverkehr: besteht nicht perf.crux |
▲Hoch | 8.0–40.0 | 800–4.000 |
| Lighthouse-Performance (mobil): 41/100 perf.lighthouse |
▲Hoch | 8.0–40.0 | 800–4.000 |
| 5 Einzelmaßnahmen mit rund 6.9 s Zeitgewinn perf.massnahmen |
▲Hoch | 4.0–32.0 | 400–3.200 |
| Keine strukturierten Daten (JSON-LD) geo.ai.schema.missing |
▲Hoch | 6.0–24.0 | 570–2.280 |
| 2 KI-Crawler werden per robots.txt ausgesperrt geo.ai.blocked_crawlers |
▲Hoch | 0.5–2.0 | 48–190 |
| Viewport-Meta fehlt seo.viewport.missing |
▲Hoch | 0.3–1.0 | 28–95 |
| Sehr wenig Textinhalt seo.thin_content |
◆Mittel | 8.0–40.0 | 760–3.800 |
| Inhalte sind schlecht zitierfähig aufbereitet geo.ai.citability |
◆Mittel | 8.0–32.0 | 760–3.040 |
| Nachweis fehlt: Penetrationstest oder Sicherheitsprüfung evid.pentest |
◆Mittel | 4.0–24.0 | 460–2.760 |
| Kein Freigabe-Gate für Modellwechsel ai.change_management.missing |
◆Mittel | 4.0–16.0 | 440–1.760 |
| Keine modernen Bildformate (WebP/AVIF) perf.img.format |
◆Mittel | 3.0–12.0 | 300–1.200 |
| 2 von 2 Bildern ohne alt-Attribut seo.img.alt |
◆Mittel | 2.0–10.0 | 190–950 |
| Standortdaten nicht maschinenlesbar ausgezeichnet geo.local.nap |
◆Mittel | 3.0–10.0 | 285–950 |
| 2 Bilder ohne width/height perf.img.dimensions |
◆Mittel | 2.0–8.0 | 200–800 |
| 2 Formularfelder ohne Beschriftung a11y.labels |
◆Mittel | 2.0–8.0 | 200–800 |
| Seiten ohne Meta-Description seo.description.missing |
◆Mittel | 2.0–8.0 | 190–760 |
| Keine Barrierefreiheitserklärung gefunden a11y.statement |
◆Mittel | 2.0–6.0 | 230–690 |
| llms.txt fehlt geo.ai.llms_txt |
◆Mittel | 2.0–6.0 | 190–570 |
| Statische Assets ohne Browser-Caching perf.static_cache |
◆Mittel | 1.0–4.0 | 125–500 |
| Canonical-Tag fehlt seo.canonical.missing |
◆Mittel | 1.0–4.0 | 95–380 |
| Keine XML-Sitemap gefunden seo.sitemap.missing |
◆Mittel | 1.0–4.0 | 95–380 |
| Keine Kompression aktiv perf.compression |
◆Mittel | 0.5–2.0 | 62–250 |
| `<html lang>` fehlt seo.lang.missing |
◆Mittel | 0.3–1.0 | 28–95 |
| Sprachattribut im <html>-Tag fehlt geo.local.html_lang |
◆Mittel | 0.2–0.5 | 20–50 |
| jquery-migrate wird nicht mehr weiterentwickelt cur.lib.deprecated.jquery-migrate |
•Niedrig | 2.0–12.0 | 200–1.200 |
| jQuery Migrate im Produktivbetrieb aktiv cur.jquery_migrate |
•Niedrig | 2.0–12.0 | 200–1.200 |
| Keine erkennbare Über-uns-/Entitätsseite geo.ai.entity |
•Niedrig | 4.0–12.0 | 380–1.140 |
| Title-Länge außerhalb des Optimums seo.title.length |
•Niedrig | 1.0–4.0 | 95–380 |
| Open-Graph-Daten unvollständig seo.opengraph |
•Niedrig | 1.0–4.0 | 95–380 |
| Mehrere H1-Überschriften seo.h1.multiple |
•Niedrig | 1.0–3.0 | 95–285 |
| 1 tote Links nach außen seo.broken_links.extern |
•Niedrig | 0.5–3.0 | 48–285 |
| 3 interne Links zeigen noch auf http:// seo.interne_http_links |
•Niedrig | 0.5–3.0 | 48–285 |
| WordPress readme.html (verrät Version) expo.wp_readme |
•Niedrig | 0.3–2.0 | 38–250 |
| Cookies ohne SameSite-Attribut sec.cookie.samesite |
•Niedrig | 0.5–2.0 | 55–220 |
| Permissions-Policy fehlt sec.permissions |
•Niedrig | 0.3–1.0 | 38–125 |
| Software-Versionen werden preisgegeben sec.info_leak |
•Niedrig | 0.3–1.0 | 38–125 |
| security.txt fehlt expo.securitytxt.missing |
•Niedrig | 0.3–1.0 | 38–125 |
| Referrer-Policy fehlt sec.referrer |
•Niedrig | 0.2–0.5 | 25–62 |
| Passwortfeld unterbindet Passwortmanager auth.password.autocomplete_off |
•Niedrig | 0.2–0.5 | 20–50 |
| Kein Sitemap-Verweis in der robots.txt seo.robots.no_sitemap |
•Niedrig | 0.2–0.5 | 19–48 |
Feinschliff, Barrierefreiheit, Monitoring und ein Prozess, der den erreichten Stand hält.
| Maßnahme | Schwere | Stunden | Kosten (EUR) |
|---|---|---|---|
| Keine semantischen Landmarks a11y.landmarks |
•Niedrig | 2.0–8.0 | 200–800 |
| Währung nicht maschinenlesbar ausgezeichnet geo.local.currency |
•Niedrig | 1.0–4.0 | 100–400 |
| Überschriftenhierarchie mit Sprüngen a11y.heading_order |
•Niedrig | 1.0–4.0 | 100–400 |
| Kein Skip-Link zum Hauptinhalt a11y.skiplink |
•Niedrig | 0.5–2.0 | 50–200 |
| Kein Content-Language-Signal geo.local.content_language |
•Niedrig | 0.3–1.0 | 38–125 |
| Umsetzung (296–1323 h) | 31.900 – 143.235 |
| Projektmanagement und QA (12–15 %) | 3.828 – 21.485 |
| Risikozuschlag (15 %) | 5.359 – 24.708 |
| Summe | 41.087 – 189.428 |
| abzüglich Automatisierungseffekt (Abschnitt 8) | − bis 74.745 |
Stundensätze: Backend 110 · Frontend 100 · DevOps 125 · SEO 95 · PM 115 EUR/h.
Aus den Befunden wurde ein ausführbares Arbeitspaket erzeugt. Jeder automatisierbare Befund ist ein fertiger Arbeitsauftrag mit Verifikationsschritt und – wo nötig – menschlichem Freigabe-Gate.
| Konnektor | Typ | Zweck | Status |
|---|---|---|---|
| filesystem | MCP (offiziell) | Zugriff auf das ausgecheckte Theme-/Plugin-Repository, damit Claude Code Änderungen direkt im Quellcode vornimmt. | erforderlich |
| github | MCP (offiziell) | Branch je Maßnahme, Pull Request, Review, CI-Status. Sorgt dafür, dass keine Änderung ungeprüft live geht. | erforderlich |
| wp-cli-bridge | Eigenentwicklung (klein) | WP-CLI auf dem Staging-System ausführen (Updates, Datenbank-Suchen/Ersetzen, Cache-Flush, Site-Health). Als schlanker eigener MCP-Server oder abgesicherter SSH-Wrapper mit Kommando-Allowlist umsetzen. | erforderlich |
| webaudit | In diesem Paket enthalten | Dieses Audit-Tool selbst als Konnektor: nach jeder Maßnahme erneut scannen und prüfen, ob der Befund verschwunden ist. webaudit mcp startet den mitgelieferten MCP-Server. | erforderlich |
| playwright | MCP (offiziell) | Automatisierte Regressionstests der Kernflows (Startseite, Produktseite, Warenkorb, Checkout) nach jeder Änderung. | optional |
| sentry | MCP (offiziell) | Fehler nach dem Deployment sofort erkennen – wichtigstes Abbruchkriterium für automatische Rollouts. | optional |
| slack | MCP (offiziell) | Statusmeldungen und Freigabe-Anfragen in den Projektkanal. | optional |
| # | Aufgabe | Phase | Schwere | Stunden | Freigabe |
|---|---|---|---|---|---|
| 1 | Seite wird nicht über HTTPS ausgeliefert prompts/sec-no-https.md |
gate | ⛔Blocker | 2.0–8.0 | Kritischer Befund – Vier-Augen-Prinzip |
| 2 | Passwortübertragung über HTTP prompts/sec-form-password-http.md |
gate | ⛔Blocker | 0.5–2.0 | Kritischer Befund – Vier-Augen-Prinzip |
| 3 | .env-Datei öffentlich erreichbar prompts/expo-env.md |
gate | ⛔Blocker | 0.3–2.0 | Zugangsdaten-Rotation und Löschungen nur nach Rücksprache |
| 4 | Einwilligungspflichtige Dienste laden vor der Einwilligung prompts/consent-pre-consent-tracking.md |
gate | ⛔Blocker | 8.0–24.0 | Consent-Änderungen betreffen Rechtspflichten – Freigabe durch Datenschutz |
| 5 | Einwilligungspflichtige Dienste ohne Einwilligungsabfrage prompts/consent-missing-cmp.md |
gate | ⛔Blocker | 8.0–24.0 | Consent-Änderungen betreffen Rechtspflichten – Freigabe durch Datenschutz |
| 6 | Kein Impressum verlinkt prompts/legal-imprint-missing.md |
gate | ⛔Blocker | 1.0–3.0 | Rechtstexte nur nach juristischer Prüfung veröffentlichen |
| 7 | Keine Datenschutzerklärung gefunden prompts/legal-privacy-policy-missing.md |
gate | ⛔Blocker | 4.0–12.0 | Rechtstexte nur nach juristischer Prüfung veröffentlichen |
| 8 | API-Schlüssel im ausgelieferten Client-Code prompts/ai-key-exposed.md |
gate | ⛔Blocker | 4.0–16.0 | KI-Änderungen: Freigabe durch Datenschutz und Fachbereich |
| 9 | Keine erkennbare Kennzeichnung der KI-Interaktion prompts/ai-transparency-missing.md |
gate | ⛔Blocker | 1.0–4.0 | KI-Änderungen: Freigabe durch Datenschutz und Fachbereich |
| 10 | Modell- und Prompt-Provenienz nicht nachgewiesen prompts/ai-provenance-missing.md |
gate | ⛔Blocker | 4.0–16.0 | KI-Änderungen: Freigabe durch Datenschutz und Fachbereich |
| 11 | Keine AI-Act-Klassifizierung je KI-Funktion prompts/ai-classification-missing.md |
gate | ⛔Blocker | 4.0–20.0 | KI-Änderungen: Freigabe durch Datenschutz und Fachbereich |
| 12 | Prompt-Injection-Resistenz nicht nachgewiesen prompts/ai-injection-unprotected.md |
gate | ⛔Blocker | 16.0–60.0 | KI-Änderungen: Freigabe durch Datenschutz und Fachbereich |
| 13 | Nachweis fehlt: KI-Inventar / AI-BOM inkl. Modellversionen prompts/evid-ai-inventory.md |
gate | ⛔Blocker | 4.0–24.0 | Nachweise sind Dokumente der Organisation – Entwurf ja, Freigabe durch die Fachfunktion |
| 14 | Nachweis fehlt: AI-Act-Klassifizierung je KI-Funktion prompts/evid-ai-classification.md |
gate | ⛔Blocker | 4.0–24.0 | Nachweise sind Dokumente der Organisation – Entwurf ja, Freigabe durch die Fachfunktion |
| 15 | Nachweis fehlt: KI-Red-Team-Bericht (Prompt Injection, RAG, Tools) prompts/evid-ai-redteam.md |
gate | ⛔Blocker | 4.0–24.0 | Nachweise sind Dokumente der Organisation – Entwurf ja, Freigabe durch die Fachfunktion |
| 16 | Kein zweiter Faktor erkennbar prompts/auth-admin-no-mfa.md |
gate | ?Klärung nötig | 8.0–32.0 | Änderungen an der Authentifizierung können Nutzer aussperren |
| 17 | Tool-Berechtigungen agentischer KI nicht nachgewiesen prompts/ai-agent-excessive-agency.md |
gate | ?Klärung nötig | 8.0–40.0 | KI-Änderungen: Freigabe durch Datenschutz und Fachbereich |
| 18 | WordPress veraltet (5.9.3 → 6.8.2) prompts/cur-wp-outdated.md |
p0 | !Kritisch | 2.0–8.0 | Kern-/Shop-Update: Staging-Test und Freigabe zwingend |
| 19 | PHP 7.4.3 erhält keine Sicherheitsupdates mehr prompts/cur-php-eol.md |
p0 | !Kritisch | 8.0–40.0 | PHP-Migration: Infrastruktur-Änderung mit Ausfallrisiko |
| 20 | robots.txt sperrt die komplette Seite prompts/seo-robots-blocks-all.md |
p0 | !Kritisch | 0.2–0.5 | Kritischer Befund – Vier-Augen-Prinzip |
| 21 | WordPress debug.log öffentlich prompts/expo-debuglog.md |
p0 | ▲Hoch | 0.3–2.0 | Zugangsdaten-Rotation und Löschungen nur nach Rücksprache |
| 22 | HSTS-Header fehlt prompts/sec-hsts.md |
p1 | ▲Hoch | 0.5–1.5 | – |
| 23 | Content-Security-Policy fehlt prompts/sec-csp.md |
p1 | ▲Hoch | 4.0–16.0 | CSP kann Funktionen brechen – erst Report-Only, dann scharf |
| 24 | Session-Cookies ohne HttpOnly prompts/sec-cookie-httponly.md |
p1 | ▲Hoch | 0.5–2.0 | – |
| 25 | Session-Cookie ohne Secure, HttpOnly, SameSite prompts/auth-session-cookie-flags.md |
p1 | ▲Hoch | 0.5–2.0 | Änderungen an der Authentifizierung können Nutzer aussperren |
| 26 | OAuth-/OIDC-Flow entspricht nicht der aktuellen Security-BCP prompts/auth-oauth-weak-parameters.md |
p1 | ▲Hoch | 4.0–16.0 | Änderungen an der Authentifizierung können Nutzer aussperren |
| 27 | WooCommerce veraltet (6.1.0 → 9.9.0) prompts/cur-woo-outdated.md |
p1 | ▲Hoch | 3.0–12.0 | Kern-/Shop-Update: Staging-Test und Freigabe zwingend |
| 28 | jquery veraltet (1.12.4 → 3.7.1) prompts/cur-lib-old-jquery.md |
p1 | ▲Hoch | 0.5–4.0 | – |
| 29 | Kein Nachweis über erteilte Einwilligungen prompts/consent-no-proof.md |
p1 | ▲Hoch | 4.0–12.0 | Consent-Änderungen betreffen Rechtspflichten – Freigabe durch Datenschutz |
| 30 | Datenminimierung an der Provider-Grenze ungeprüft prompts/ai-dlp-unverified.md |
p1 | ▲Hoch | 8.0–24.0 | KI-Änderungen: Freigabe durch Datenschutz und Fachbereich |
| 31 | Behandlung der Modellausgabe nicht nachgewiesen prompts/ai-output-unvalidated.md |
p1 | ▲Hoch | 4.0–16.0 | KI-Änderungen: Freigabe durch Datenschutz und Fachbereich |
| 32 | Menschliche Aufsicht nicht nachgewiesen prompts/ai-oversight-missing.md |
p1 | ▲Hoch | 4.0–20.0 | KI-Änderungen: Freigabe durch Datenschutz und Fachbereich |
| 33 | KI-Lieferantenrisiko nicht bewertet prompts/ai-vendor-unassessed.md |
p1 | ▲Hoch | 4.0–16.0 | KI-Änderungen: Freigabe durch Datenschutz und Fachbereich |
| 34 | Tracking-Dienste ohne erkennbares Consent-Management prompts/privacy-no-consent.md |
p1 | ▲Hoch | 8.0–24.0 | Rechtliche Bewertung erforderlich |
| 35 | Mögliche Drittlandtransfers ohne hinterlegten Nachweis (2 Anbieter) prompts/privacy-transfer-undocumented.md |
p1 | ▲Hoch | 4.0–20.0 | Rechtliche Bewertung erforderlich |
| 36 | Nachweis fehlt: Verzeichnis von Verarbeitungstätigkeiten (RoPA) prompts/evid-ropa.md |
p1 | ▲Hoch | 4.0–24.0 | Nachweise sind Dokumente der Organisation – Entwurf ja, Freigabe durch die Fachfunktion |
| 37 | Nachweis fehlt: Interessenabwägung (Legitimate Interest Assessment) prompts/evid-lia.md |
p1 | ▲Hoch | 4.0–24.0 | Nachweise sind Dokumente der Organisation – Entwurf ja, Freigabe durch die Fachfunktion |
| 38 | Nachweis fehlt: Auftragsverarbeitungsverträge aller Dienstleister prompts/evid-dpa.md |
p1 | ▲Hoch | 4.0–24.0 | Nachweise sind Dokumente der Organisation – Entwurf ja, Freigabe durch die Fachfunktion |
| 39 | Nachweis fehlt: Standardvertragsklauseln und Transfer Impact Assessment prompts/evid-scc-tia.md |
p1 | ▲Hoch | 4.0–24.0 | Nachweise sind Dokumente der Organisation – Entwurf ja, Freigabe durch die Fachfunktion |
| 40 | Nachweis fehlt: Lösch- und Aufbewahrungskonzept prompts/evid-loeschkonzept.md |
p1 | ▲Hoch | 4.0–24.0 | Nachweise sind Dokumente der Organisation – Entwurf ja, Freigabe durch die Fachfunktion |
| 41 | Nachweis fehlt: Prozess für Betroffenenrechte (getestet) prompts/evid-dsar-prozess.md |
p1 | ▲Hoch | 4.0–24.0 | Nachweise sind Dokumente der Organisation – Entwurf ja, Freigabe durch die Fachfunktion |
| 42 | Nachweis fehlt: Incident-Response- und Meldeprozess (72 Stunden) prompts/evid-incident-runbook.md |
p1 | ▲Hoch | 4.0–24.0 | Nachweise sind Dokumente der Organisation – Entwurf ja, Freigabe durch die Fachfunktion |
| 43 | Nachweis fehlt: AI Impact Assessment prompts/evid-ai-impact.md |
p1 | ▲Hoch | 4.0–24.0 | Nachweise sind Dokumente der Organisation – Entwurf ja, Freigabe durch die Fachfunktion |
| 44 | Nachweis fehlt: Lieferanten-/Vendor-Risikobewertung prompts/evid-vendor-assessment.md |
p1 | ▲Hoch | 4.0–24.0 | Nachweise sind Dokumente der Organisation – Entwurf ja, Freigabe durch die Fachfunktion |
| 45 | Nachweis fehlt: Erklärung zur Barrierefreiheit prompts/evid-bfsg-erklaerung.md |
p1 | ▲Hoch | 4.0–24.0 | Nachweise sind Dokumente der Organisation – Entwurf ja, Freigabe durch die Fachfunktion |
| 46 | Nachweis fehlt: Getestetes Backup- und Wiederherstellungsverfahren prompts/evid-backup-restore.md |
p1 | ▲Hoch | 4.0–24.0 | Nachweise sind Dokumente der Organisation – Entwurf ja, Freigabe durch die Fachfunktion |
| 47 | X-Content-Type-Options fehlt prompts/sec-xcto.md |
p1 | ◆Mittel | 0.2–0.5 | – |
| 48 | Kein Clickjacking-Schutz prompts/sec-clickjacking.md |
p1 | ◆Mittel | 0.2–0.5 | – |
| 49 | Cookies ohne Secure-Flag prompts/sec-cookie-secure.md |
p1 | ◆Mittel | 0.5–2.0 | – |
| 50 | Mixed Content (HTTP-Ressourcen auf HTTPS-Seite) prompts/sec-mixed-content.md |
p1 | ◆Mittel | 1.0–4.0 | – |
| 51 | POST-Formulare ohne erkennbaren CSRF-Token prompts/sec-form-csrf.md |
p1 | ◆Mittel | 2.0–8.0 | – |
| 52 | XML-RPC aktiv prompts/expo-xmlrpc.md |
p1 | ◆Mittel | 0.3–2.0 | Zugangsdaten-Rotation und Löschungen nur nach Rücksprache |
| 53 | Passwortlänge auf 20 Zeichen begrenzt prompts/auth-password-maxlength.md |
p1 | ◆Mittel | 0.5–2.0 | Änderungen an der Authentifizierung können Nutzer aussperren |
| 54 | Session-Rotation und Logout nicht automatisiert prüfbar prompts/auth-session-rotation.md |
p1 | ◆Mittel | 2.0–6.0 | Änderungen an der Authentifizierung können Nutzer aussperren |
| 55 | Universal Analytics (UA) noch eingebunden prompts/cur-analytics-ua-eol.md |
p1 | ◆Mittel | 1.0–3.0 | – |
| 56 | KI-Logging und Nachvollziehbarkeit ungeklärt prompts/ai-logging-insufficient.md |
p1 | ◆Mittel | 4.0–12.0 | KI-Änderungen: Freigabe durch Datenschutz und Fachbereich |
| 57 | Google Fonts werden extern geladen prompts/privacy-google-fonts.md |
p1 | ◆Mittel | 1.0–4.0 | Rechtliche Bewertung erforderlich |
| 58 | Viewport-Meta fehlt prompts/seo-viewport-missing.md |
p2 | ▲Hoch | 0.3–1.0 | – |
| 59 | 2 KI-Crawler werden per robots.txt ausgesperrt prompts/geo-ai-blocked-crawlers.md |
p2 | ▲Hoch | 0.5–2.0 | – |
| 60 | Keine strukturierten Daten (JSON-LD) prompts/geo-ai-schema-missing.md |
p2 | ▲Hoch | 6.0–24.0 | – |
| 61 | Lighthouse-Performance (mobil): 41/100 prompts/perf-lighthouse.md |
p2 | ▲Hoch | 8.0–40.0 | – |
| 62 | 5 Einzelmaßnahmen mit rund 6.9 s Zeitgewinn prompts/perf-massnahmen.md |
p2 | ▲Hoch | 4.0–32.0 | – |
| 63 | Seiten ohne Meta-Description prompts/seo-description-missing.md |
p2 | ◆Mittel | 2.0–8.0 | – |
| 64 | Canonical-Tag fehlt prompts/seo-canonical-missing.md |
p2 | ◆Mittel | 1.0–4.0 | – |
| 65 | `<html lang>` fehlt prompts/seo-lang-missing.md |
p2 | ◆Mittel | 0.3–1.0 | – |
| 66 | 2 von 2 Bildern ohne alt-Attribut prompts/seo-img-alt.md |
p2 | ◆Mittel | 2.0–10.0 | – |
| 67 | Sehr wenig Textinhalt prompts/seo-thin-content.md |
p2 | ◆Mittel | 8.0–40.0 | – |
| 68 | Keine XML-Sitemap gefunden prompts/seo-sitemap-missing.md |
p2 | ◆Mittel | 1.0–4.0 | – |
| 69 | llms.txt fehlt prompts/geo-ai-llms-txt.md |
p2 | ◆Mittel | 2.0–6.0 | – |
| 70 | Inhalte sind schlecht zitierfähig aufbereitet prompts/geo-ai-citability.md |
p2 | ◆Mittel | 8.0–32.0 | – |
| 71 | Sprachattribut im <html>-Tag fehlt prompts/geo-local-html-lang.md |
p2 | ◆Mittel | 0.2–0.5 | – |
| 72 | Standortdaten nicht maschinenlesbar ausgezeichnet prompts/geo-local-nap.md |
p2 | ◆Mittel | 3.0–10.0 | – |
| 73 | Keine Kompression aktiv prompts/perf-compression.md |
p2 | ◆Mittel | 0.5–2.0 | – |
| 74 | Statische Assets ohne Browser-Caching prompts/perf-static-cache.md |
p2 | ◆Mittel | 1.0–4.0 | – |
| 75 | 2 Bilder ohne width/height prompts/perf-img-dimensions.md |
p2 | ◆Mittel | 2.0–8.0 | – |
| 76 | Keine modernen Bildformate (WebP/AVIF) prompts/perf-img-format.md |
p2 | ◆Mittel | 3.0–12.0 | – |
| 77 | 2 Formularfelder ohne Beschriftung prompts/a11y-labels.md |
p2 | ◆Mittel | 2.0–8.0 | – |
| 78 | Keine Barrierefreiheitserklärung gefunden prompts/a11y-statement.md |
p2 | ◆Mittel | 2.0–6.0 | – |
| 79 | Kein Freigabe-Gate für Modellwechsel prompts/ai-change-management-missing.md |
p2 | ◆Mittel | 4.0–16.0 | KI-Änderungen: Freigabe durch Datenschutz und Fachbereich |
| 80 | Nachweis fehlt: Penetrationstest oder Sicherheitsprüfung prompts/evid-pentest.md |
p2 | ◆Mittel | 4.0–24.0 | Nachweise sind Dokumente der Organisation – Entwurf ja, Freigabe durch die Fachfunktion |
| 81 | Referrer-Policy fehlt prompts/sec-referrer.md |
p2 | •Niedrig | 0.2–0.5 | – |
| 82 | Permissions-Policy fehlt prompts/sec-permissions.md |
p2 | •Niedrig | 0.3–1.0 | – |
| 83 | Software-Versionen werden preisgegeben prompts/sec-info-leak.md |
p2 | •Niedrig | 0.3–1.0 | – |
| 84 | Cookies ohne SameSite-Attribut prompts/sec-cookie-samesite.md |
p2 | •Niedrig | 0.5–2.0 | – |
| 85 | WordPress readme.html (verrät Version) prompts/expo-wp-readme.md |
p2 | •Niedrig | 0.3–2.0 | Zugangsdaten-Rotation und Löschungen nur nach Rücksprache |
| 86 | security.txt fehlt prompts/expo-securitytxt-missing.md |
p2 | •Niedrig | 0.3–1.0 | Zugangsdaten-Rotation und Löschungen nur nach Rücksprache |
| 87 | Passwortfeld unterbindet Passwortmanager prompts/auth-password-autocomplete-off.md |
p2 | •Niedrig | 0.2–0.5 | Änderungen an der Authentifizierung können Nutzer aussperren |
| 88 | jquery-migrate wird nicht mehr weiterentwickelt prompts/cur-lib-deprecated-jquery-migrate.md |
p2 | •Niedrig | 2.0–12.0 | – |
| 89 | jQuery Migrate im Produktivbetrieb aktiv prompts/cur-jquery-migrate.md |
p2 | •Niedrig | 2.0–12.0 | – |
| 90 | Title-Länge außerhalb des Optimums prompts/seo-title-length.md |
p2 | •Niedrig | 1.0–4.0 | – |
| 91 | Mehrere H1-Überschriften prompts/seo-h1-multiple.md |
p2 | •Niedrig | 1.0–3.0 | – |
| 92 | Kein Sitemap-Verweis in der robots.txt prompts/seo-robots-no-sitemap.md |
p2 | •Niedrig | 0.2–0.5 | – |
| 93 | Open-Graph-Daten unvollständig prompts/seo-opengraph.md |
p2 | •Niedrig | 1.0–4.0 | – |
| 94 | 1 tote Links nach außen prompts/seo-broken-links-extern.md |
p2 | •Niedrig | 0.5–3.0 | – |
| 95 | 3 interne Links zeigen noch auf http:// prompts/seo-interne-http-links.md |
p2 | •Niedrig | 0.5–3.0 | – |
| 96 | Keine erkennbare Über-uns-/Entitätsseite prompts/geo-ai-entity.md |
p2 | •Niedrig | 4.0–12.0 | – |
| 97 | Kein Content-Language-Signal prompts/geo-local-content-language.md |
p3 | •Niedrig | 0.3–1.0 | – |
| 98 | Währung nicht maschinenlesbar ausgezeichnet prompts/geo-local-currency.md |
p3 | •Niedrig | 1.0–4.0 | – |
| 99 | Keine semantischen Landmarks prompts/a11y-landmarks.md |
p3 | •Niedrig | 2.0–8.0 | – |
| 100 | Kein Skip-Link zum Hauptinhalt prompts/a11y-skiplink.md |
p3 | •Niedrig | 0.5–2.0 | – |
| 101 | Überschriftenhierarchie mit Sprüngen prompts/a11y-heading-order.md |
p3 | •Niedrig | 1.0–4.0 | – |
Diese Merkmale musste niemand beantworten – sie wurden aus dem Seiteninhalt erschlossen. Es sind Annahmen mit Beleg, keine Zusicherungen: sie ersparen die Rückfrage, lösen aber allein keinen Blocker aus.
| Grundlage | Was daraus geprüft wird |
|---|---|
| DSGVO (VO 2016/679) | Rechtmäßigkeit, Transparenz, Betroffenenrechte, Sicherheit der Verarbeitung, Rechenschaftspflicht |
| TDDDG § 25 | Einwilligung für Speichern/Auslesen von Informationen auf dem Endgerät – unabhängig vom Personenbezug |
| DDG § 5 | Anbieterkennzeichnung: leicht erkennbar, unmittelbar erreichbar, ständig verfügbar |
| BSIG § 30 (NIS2-Umsetzung, in Kraft seit 06.12.2025) | Risikomanagement inkl. MFA/kontinuierlicher Authentifizierung, Lieferkettensicherheit, Schwachstellenmanagement, Nachweispflicht |
| DSA (VO 2022/2065) | Pflichten für Vermittler-, Hosting- und Plattformdienste – nicht für reine Unternehmensauftritte |
| AI Act (VO 2024/1689) i.d.F. AI Omnibus (VO 2026/1744) | Verbote seit 02.02.2025, GPAI seit 02.08.2025, allgemeine Anwendung und Transparenzpflichten seit 02.08.2026; High-Risk nach Annex III verschoben auf 02.12.2027, Annex-I-Produkte auf 02.08.2028 |
| BFSG (seit 28.06.2025) | Barrierefreiheit erfasster B2C-Dienstleistungen; Ausnahme für Kleinstunternehmen |
| OWASP ASVS 5.0 | technische Verifikationsbaseline für Webanwendungen |
| OWASP Top 10:2025 | Risikoklassifikation, u.a. Broken Access Control, Supply Chain Failures |
| OWASP AISVS 1.0 (24.06.2026) | verifizierbare KI-Sicherheitsanforderungen |
| OWASP GenAI LLM Top 10:2026 (03.08.2026) | aktuelle GenAI-Bedrohungstaxonomie |
| OWASP Top 10 for Agentic Applications 2026 | Risiken autonomer KI-Systeme |
| ISO/IEC 27001:2022 / 27002:2022 | ISMS-Rahmen und Control-Guidance |
| ISO/IEC 42001:2023 / 23894:2023 / 42005:2025 | KI-Managementsystem, KI-Risikomanagement, AI Impact Assessment |
| RFC 9700 / RFC 6238 / RFC 6797 / WebAuthn L2 | OAuth-2.0-Security-BCP, TOTP, HSTS, phishingresistente Authentifizierung |