02 / Was geprüft wird

Jede Prüfung, in klarem Deutsch.

Deckproof führt 112 Prüfungen aus: drei benotete Bereiche und acht Hersteller-Signale ohne Note. Die 57, die die meisten Noten entscheiden, stehen hier. Sicherheit und Qualität werden benotet. Rechtliche Punkte sind neutrale technische Befunde mit allgemeinen Quellen, nie ein Urteil über deine Seite. Jede Kennung hier ist dieselbe wie in deinem Bericht.

SICHERHEIT27 PrüfungenKommen Fremde an deine Daten, deine Schlüssel oder deinen Code? Das sind die Probleme hinter den großen Vibe-Coding-Lecks.
A-01
Jeder kann deine Datenbank lesen
Deine Supabase-Tabelle antwortet jedem, der fragt, ganz ohne Login. Das sind die Daten deiner Nutzer, lesbar für Fremde. Wir fragen einmal nur die Zeilenzahl ab, nie eine Zeile, und berichten, was zurückkam. OWASP A01:2025
KRITISCH
A-04
Deine Firebase-Datenbank ist offen
Deine Firebase-Daten lassen sich ohne Anmeldung lesen. OWASP A01:2025
KRITISCH
S-01
Dein Generalschlüssel steht in der Seite
Der Supabase Service Key liegt im Code deiner Seite. Wer ihn liest, hat deine ganze Datenbank, alle Schlösser wirkungslos. CWE-798
KRITISCH
S-02
Ein geheimer Schlüssel steht in deiner Seite
Wir durchsuchen den Code deiner Seite nach Schlüsseln (Stripe, OpenAI, AWS, GitHub), die nie öffentlich sein dürfen. Damit kann jemand dein Geld ausgeben oder deine Daten lesen. CWE-798
KRITISCH
S-04
Deine Konfigurationsdatei ist herunterladbar
Die .env-Datei mit Passwörtern und Schlüsseln wird ausgeliefert wie jede andere Seite. CWE-538
KRITISCH
DE-SEC-01
Kein Schloss
Nicht über HTTPS ausgeliefert, oder das Zertifikat ist abgelaufen oder nicht vertrauenswürdig. Das zuerst, alles andere wartet. GDPR Art. 32
KRITISCH
S-05
Deine Code-Historie ist öffentlich
Der Ordner .git ist erreichbar, damit lässt sich dein ganzer Quellcode samt alter Versionen herunterladen. CWE-538
HOCH
A-05
Deine Dateiablage ist auflistbar
Supabase Storage beantwortet eine anonyme Anfrage nach der Bucket-Liste und lässt Fremde die Dateien darin auflisten. Öffentliche Buckets liefern jede Datei an jeden mit Link. CWE-284
HOCH
S-03
Server-Variablennamen in der Seite
Dein Build-Werkzeug kopiert jede Variable mit VITE_ oder NEXT_PUBLIC_ in die Seite. Heißt eine davon SERVICE_ROLE oder SECRET, ist auch ihr Wert öffentlich. CWE-798
HOCH
A-03
Personenbezogene Daten sind öffentlich lesbar
Eine lesbare Tabelle enthält Felder wie E-Mail, Telefon oder Passwort-Hashes. Genau solche Lecks landen bei der Aufsichtsbehörde. CWE-359
HOCH
C-02
Andere Seiten können die Daten deiner angemeldeten Nutzer lesen
Eine Freigabe-Einstellung (CORS) spiegelt jede Herkunft und erlaubt Zugangsdaten, also kann jede fremde Website dein Backend nach den Daten einer angemeldeten Besucherin fragen. Ein schlichtes "*" für öffentliche Daten ist in Ordnung und wird nicht gemeldet. CWE-942
HOCH
AI-01
KI-SDK läuft im Browser
Der Code schaltet dangerouslyAllowBrowser ein, was nur mit dem Modell-Schlüssel in der Seite geht. Wer die Seite liest, kann auf deine Rechnung Geld ausgeben. Wir probieren den Schlüssel nie. CWE-798
HOCH
S-06
Dein Quellcode wird mitgeliefert
Source Maps lassen jeden deinen Code, deine Kommentare und interne Adressen lesen. CWE-540
MITTEL
A-06
Deine Datenbank verteilt ihren eigenen Bauplan
Der GraphQL-Endpunkt von Supabase beantwortet eine anonyme Abfrage und listet jede Tabelle und Spalte. Wir nutzen die Antwort, um genau diese Tabellen zu prüfen, rein lesend. CWE-200
MITTEL
S-08
Deine API-Beschreibung ist öffentlich
Eine openapi.json oder swagger.json listet jede Route und jeden Parameter deines Backends zum Mitlesen. CWE-200
MITTEL
C-04
Deine API verteilt ihren eigenen Bauplan
GraphQL-Introspection ist an, jeder kann deine API auffordern, alles aufzulisten, was sie kann. CWE-200
MITTEL
T-02
Keine Content-Security-Policy
Eine Einstellung, die eingeschleuste Skripte stoppt. Ohne sie läuft fremder Code wie deine eigene Seite. CWE-693
MITTEL
T-02d
Deine Content-Security-Policy sagt nichts über Skripte
Du schickst eine CSP, aber sie setzt überhaupt keine Skriptregel. Gegen ein eingeschleustes Skript schützt sie dich damit genau so viel wie keine CSP, deshalb zählt sie auch gleich. CWE-693
MITTEL
T-01
Sichere Verbindung nicht erzwungen
Browsern wird nicht gesagt, dass sie immer HTTPS nutzen sollen, der erste Besuch lässt sich abfangen. CWE-319
MITTEL
T-03
Deine Seite lässt sich einrahmen
Eine fremde Seite kann deine Anmeldeseite in sich einbetten und deine Nutzer zu Klicks verleiten. CWE-1021
MITTEL
T-08
Sitzungs-Cookie ohne Schutzflaggen
Ein Cookie, das nach Login oder Sitzung aussieht, hat nicht die Flaggen, die es von unverschlüsselten Verbindungen und von Skripten fernhalten. Analyse-Cookies melden wir getrennt als niedrig. CWE-1004
MITTEL
AI-02
Browser ruft Modell-API direkt
Die Seite ruft OpenAI, Anthropic oder Google direkt aus dem Browser. Das braucht einen Schlüssel in der Seite, der öffentlich ist. Läuft es über einen eigenen Proxy, ist es ein Fehlalarm. Wir rufen den Endpunkt nie auf. CWE-201
MITTEL
A-07
Konten ohne E-Mail-Bestätigung
Die Registrierung ist offen und die Bestätigung per E-Mail ist aus. Ein Skript kann tausende Konten anlegen, auch mit fremden Adressen. CWE-287
NIEDRIG
T-09
Keine Permissions-Policy
Kamera, Mikrofon, Standort und Bezahlen bleiben für deine Seiten und alles darin Eingebettete eingeschaltet. CWE-16
NIEDRIG
T-10
Sicherheits-Header zweimal mit verschiedenen Werten
Deine Anwendung und der davor liegende Proxy oder das CDN setzen denselben Schutz-Header und sind sich uneinig. Browser führen die beiden nicht zusammen, jeder greift sich einen heraus. Es schützt also nicht das, was du eingestellt hast. RFC 9110
NIEDRIG
MAIL-01
Kein DMARC: deine Domain lässt sich fälschen
Deine Domain hat keine DMARC-Regel, also können Mailserver gefälschte Absender in deinem Namen nicht abweisen. Genau das ermöglicht Phishing in deinem Namen. Nur DNS gelesen. RFC 7489
NIEDRIG
MAIL-02
Kein SPF-Eintrag
Deine Domain nennt keine erlaubten Mailserver (SPF). Ohne SPF und DMARC ist das Fälschen deiner Absenderdomain trivial. Nur DNS gelesen. RFC 7208
NIEDRIG
RECHT & PFLICHTANGABEN19 PrüfungenZeigt deine Seite, was EU- und deutsches Recht erwarten: Impressum, Datenschutzerklärung, Cookie-Verhalten, Schriften. Als neutrale Information mit Quellen, nie als Rechtsberatung.
DE-IMP-01
Kein Impressum gefunden
Bei geschäftsmäßigen Websites erwartet das deutsche Recht eine Anbieterkennzeichnung (§5 DDG). Wir sagen, was wir gefunden haben, und verlinken die Regel. Allgemeine Information, keine Rechtsberatung. §5 DDG
HOCH
DE-PRIV-01
Keine Datenschutzerklärung gefunden
Das EU-Recht erwartet eine (Art. 13 DSGVO). Wir suchen unter den üblichen Adressen und in den Links der Seite. Allgemeine Information, keine Rechtsberatung. Art. 13 DSGVO
HOCH
DE-PRIV-04
Deine Datenschutzerklärung nennt Dienste nicht, die du nutzt
Wir vergleichen die Dienste, die deine Seite tatsächlich lädt (Analyse, Schriften, Karten), mit dem, was deine Datenschutzerklärung nennt. Art. 13 DSGVO
HOCH
DE-CK-03
Tracking vor der Einwilligung
In einem echten Browser beobachten wir beim ersten Besuch, welche Analyse- oder Werbedienste Daten senden und welche Cookies geschrieben werden, bevor jemand klickt, und noch einmal nach einem Klick auf „Ablehnen“. Ein Tag, das nur lädt und per Consent Mode auf „abgelehnt“ steht, wird von einem Pixel unterschieden, das feuert. Ohne Browser-Durchlauf: Tracker im Code ohne Einwilligungslösung. Allgemeine Information (§25 TDDDG). §25 TDDDG
HOCH
DE-IMP-04
Impressum ist ohne JavaScript leer
Die Impressumsseite gibt es, aber der Server liefert sie fast leer aus, die Angaben erscheinen erst, wenn JavaScript gelaufen ist. Ohne JavaScript, im Archiv oder für eine automatische Prüfung wirkt die Seite leer. Allgemeine Information, keine Rechtsberatung. §5 DDG
MITTEL
DE-PRIV-05
Datenschutztext steht nicht in der ausgelieferten Seite
Die Datenschutzseite gibt es, aber ihr Text erscheint erst, wenn JavaScript gelaufen ist. Wir können sie dann nicht lesen und ein Besucher ohne JavaScript auch nicht. Wir sagen das, statt zu raten, was drinsteht. Allgemeine Information, keine Rechtsberatung. Art. 12 DSGVO
MITTEL
DE-3P-01
Schriften von Google geladen
Die Adresse jeder Besucherin geht bei jedem Aufruf an Google; seit einem Münchner Urteil von 2022 ein häufiges Abmahnthema. Im Tiefenscan in einem echten Browser bestätigt. Allgemeine Information. LG München I
MITTEL
DE-3P-03
Einbettungen, die ohne Einwilligung nach Hause funken
YouTube, Google Maps oder Social-Einbettungen laden fremden Code und setzen Cookies schon beim Aufruf. Wir prüfen darauf, wenn keine Einwilligungslösung da ist. §25 TDDDG
MITTEL
DE-A11Y-01
Keine Erklärung zur Barrierefreiheit
Wer online verkauft, für den erwartet das BFSG eine Erklärung zur Barrierefreiheit. Wir prüfen, ob eine verlinkt ist. Allgemeine Information. §14 BFSG
MITTEL
DE-A11Y-02
Text unter dem nötigen Kontrast
Wir messen jeden Text gegen die Farbe, die tatsächlich dahinter liegt. Die WCAG verlangt 4,5:1 bei normalem Text und 3:1 bei großem. Das braucht einen echten Browser, läuft also im Tiefenscan. Allgemeine Information. WCAG 1.4.3 / BFSG
MITTEL
DE-A11Y-03
Bedienelemente ohne Namen
Eine Schaltfläche, die nur aus einem Symbol besteht, wird ohne Beschriftung als "Schaltfläche" vorgelesen und sonst nichts. Wir prüfen jedes Bedienelement auf einen Namen, den ein Screenreader vorlesen kann. Allgemeine Information. WCAG 4.1.2 / BFSG
MITTEL
DE-A11Y-04
Formularfelder ohne Beschriftung
Ein Platzhaltertext ist keine Beschriftung, er verschwindet beim Tippen. Wir prüfen, ob jedes Feld eine Beschriftung hat, die Hilfsmittel auslesen können. Allgemeine Information. WCAG 3.3.2 / BFSG
MITTEL
DE-A11Y-05
Fokus unsichtbar oder kein Weg an der Navigation vorbei
Wir gehen mit der Tabulatortaste durch die ersten Bedienelemente und prüfen, ob sich sichtbar etwas ändert, und ob es einen Sprunglink oder eine Landmarkenstruktur gibt, um das Menü zu überspringen. Allgemeine Information. WCAG 2.4.7 / 2.4.1 / BFSG
MITTEL
US-OPT-01
Kein US-Opt-out-Link
Wenn US-Werbetechnik eingebunden ist, erwartet kalifornisches Recht einen "Do Not Sell / Your Privacy Choices"-Link. Wir prüfen, ob es einen gibt. CCPA
MITTEL
DE-SHOP-01
Shop erkannt, aber Verbraucher-Basics nicht gefunden
Wenn wir eine Kasse sehen, suchen wir, was ein deutscher Verbraucher-Shop braucht: AGB, Widerrufsbelehrung, Preise "inkl. MwSt." und einen Button "zahlungspflichtig bestellen". Wir melden nur, was nicht erkannt wurde. Allgemeine Information. §312j BGB / PAngV
MITTEL
DE-A11Y-06
Weitere maschinell erkennbare Barrieren
Alles Weitere, was axe-core gegen WCAG 2.1 AA findet, zusammengefasst in einer Zeile mit den Regelnamen, damit der Bericht lesbar bleibt. Allgemeine Information. WCAG 2.1 AA / BFSG
NIEDRIG
DE-SHOP-02
Abo, aber kein Kündigungsbutton
Wenn die Seite einen Dauervertrag verkauft, erwartet §312k BGB einen klar beschrifteten Kündigungsbutton. Wir prüfen, ob es einen gibt. Allgemeine Information. §312k BGB
NIEDRIG
AI-ACT-01
Chatbot ohne KI-Hinweis
Wenn ein Chat oder KI-Assistent eingebettet ist, erwartet der EU AI Act (Art. 50, seit 02.08.2026) einen Hinweis, dass man mit KI spricht, falls das nicht offensichtlich ist. Wir prüfen darauf. Allgemeine Information. Art. 50 EU AI Act
NIEDRIG
DE-HOST-01
Wo die Seite gehostet wird
Wir lösen die Adresse auf und fragen das Internet-Register, um Hoster, Land und EU-Zugehörigkeit zu nennen. Für EU-Besucher ist Hosting außerhalb der EU ein Drittlandtransfer, den die Datenschutzerklärung nennen sollte. Eine Tatsache, kein Urteil, kostet keine Punkte. Art. 44 DSGVO
SIGNAL
QUALITÄT11 PrüfungenFunktioniert deine Seite für Google, für Handys und für Menschen mit Screenreader.
Q-01
Suchmaschinen sollen wegbleiben
Ein noindex in der Seite oder im Header, oder eine robots.txt, die alles sperrt, ist noch aktiv. Vorschau-Builds haben das mit Absicht; eine veröffentlichte Seite damit ist unsichtbar. SEO
HOCH
Q-05c
Titel ist noch die Vorlage
Im Tab steht "Vite + React" oder "Lovable App". Das ist die Überschrift deines Suchergebnisses. SEO
MITTEL
Q-12
Localhost-Adressen im ausgelieferten Code
Der Code ruft noch eine Adresse auf, die es nur auf dem Rechner der Entwicklerin gibt, also scheitert eine Funktion still bei jeder Besucherin. Reliability
MITTEL
Q-05a
Titel oder Beschreibung fehlen
Suchergebnisse und Browser-Tabs zeigen die nackte Adresse statt deines Namens. SEO
MITTEL
Q-09
Google sieht eine leere Seite
Deine Seite entsteht erst, wenn Code im Browser läuft, Suchmaschinen und Link-Vorschauen sehen also nichts. SEO
MITTEL
Q-10c
Bilder ohne Beschreibung
Screenreader und Google können nicht erkennen, was deine Bilder zeigen. Eine Grundregel der Barrierefreiheit (WCAG). WCAG 1.1.1
MITTEL
Q-13
Zu viel JavaScript
Mehr als ein paar Megabyte Skript beim ersten Laden brauchen auf dem Handy Sekunden. Wir wiegen, was die Seite wirklich lädt. Web performance
MITTEL
Q-16
Eine Datei konnte nicht geprüft werden
Unsere eigene Anfrage nach robots.txt, sitemap.xml oder dem Favicon blieb unbeantwortet. Dann sagen wir das, statt zu behaupten, die Datei fehle. Kostet keine Punkte. Scan coverage
NIEDRIG
Q-10a
Keine Sprache gesetzt
Deine Seite sagt nicht, in welcher Sprache sie ist, das verwirrt Screenreader und Übersetzer. WCAG 3.1.1
NIEDRIG
Q-10d
Die Seite gibt die falsche Sprache an
Die Seite deklariert eine Sprache und ist in einer anderen geschrieben, ein Screenreader liest sie also mit der falschen Aussprache vor. Builder, die auf Englisch trainiert sind, lassen lang="en" stehen, auch wenn du eine andere Sprache verlangst. WCAG 3.1.1
NIEDRIG
Q-07
Keine robots.txt oder Sitemap
Zwei kleine Dateien, die Suchmaschinen sagen, wo sie schauen sollen. Wir prüfen außerdem den Canonical-Link, das Favicon und eine <h1>. SEO
NIEDRIG
CRA-HERSTELLER-SIGNALE8 PrüfungenAcht öffentliche Signale rund um den Cyber Resilience Act, gemeldet als gefunden oder nicht gefunden. Keine Note, kein Urteil. Der Test steht auf deckproof.dev/de/cra.
CRA-01
security.txt oder sichtbarer Sicherheitskontakt
Wir suchen unter /.well-known/security.txt eine Datei nach RFC 9116 mit den Feldern Contact und Expires, oder eine sichtbare Seite mit einem Kontakt für Sicherheitsmeldungen. CRA (EU) 2024/2847
SIGNAL
CRA-02
Hinweise zur Meldung von Schwachstellen
Wir suchen deutsche und englische Formulierungen wie „Schwachstelle melden“, „Responsible Disclosure“, „Coordinated Disclosure“ oder „CVD“, außerdem das Feld Policy in einer security.txt. CRA (EU) 2024/2847
SIGNAL
CRA-03
Sicherheitshinweise oder PSIRT-Seite
Wir suchen Hinweise auf eine Seite oder einen Feed für Sicherheitshinweise: „Sicherheitshinweise“, „Security Advisories“, „PSIRT“, „CSAF“. CRA (EU) 2024/2847
SIGNAL
CRA-04
Angabe zur Supportdauer
Wir suchen auf den gelesenen Seiten Formulierungen wie „Supportdauer“, „Supportzeitraum“, „Sicherheitsupdates bis“ oder „End of Support“. CRA (EU) 2024/2847
SIGNAL
CRA-05
Erwähnung einer SBOM
Wir suchen die Begriffe „SBOM“, „Software Bill of Materials“, „Software-Stückliste“, „CycloneDX“ und „SPDX“. CRA (EU) 2024/2847
SIGNAL
CRA-06
Erwähnung der EU-Konformitätserklärung
Wir suchen „EU-Konformitätserklärung“, „Declaration of Conformity“ und Wendungen zur CE-Kennzeichnung. CRA (EU) 2024/2847
SIGNAL
CRA-07
Schlüssel oder Richtlinie für verschlüsselte Meldungen
Wir suchen „PGP“, „GPG“ und „OpenPGP“ sowie in einer security.txt die Felder Encryption und Policy. CRA (EU) 2024/2847
SIGNAL
CRA-08
Impressum mit erkennbarem Kontaktweg
Wir nutzen dieselbe Impressumsprüfung wie im Deckproof-Test und melden nur, welche Art von Kontaktweg wir sehen (E-Mail, Telefon, Formular). Namen, Adressen und Nummern werden weder angezeigt noch gespeichert. CRA (EU) 2024/2847
SIGNAL

Alles davon jetzt auf deiner Seite laufen lassen, kostenlos, ohne Anmeldung.