Zum Hauptinhalt springen

Befehlsmenü

Zu einer Seite springen oder den Katalog durchsuchen

KI-Tools & -Skripte

Prüfung von Convex-Funktionen

Prüfen Sie Convex-Funktionen vor dem Deployment: Schlüssel im Code, öffentliche Mutations, die ohne Auth-Prüfung per ID löschen, CORS, das Cookies mit jeder Website teilt, fehlende Validatoren, api.* in Cron-Jobs und Queries, die ganze Tabellen lesen.

$5.00

Das bekommst du: 1 Datei · 43.88 KB · ZIP

Kaufoptionen ansehen

Produktbeschreibung

Eine Mutation wie remove = mutation({ args: { id: v.id("tasks") }, handler: async (ctx, args) => { await ctx.db.delete(args.id) } }) funktioniert in der Entwicklung einwandfrei, in der Produktion aber kann jeder, der die URL Ihres Deployments aus dem Browser kopiert, damit beliebige Aufgaben löschen: Jede exportierte Query, Mutation und Action ist öffentlich. Dasselbe gilt für corsRouter mit allowCredentials: true und den Standard-Origins, das den Origin jeder Website zurückgibt, und für einen Cron-Job, der api.messages.send mit dem Autor "System" aufruft, was jeder Client ebenfalls senden kann. Dieser Skill findet diese und die weiteren unten aufgeführten Convex-Fehler vor dem Deployment und erklärt Ihnen, wie Sie jeden einzelnen beheben.

Ihr Agent führt einen Scanner über die TypeScript- und JavaScript-Dateien in Ihrem Ordner convex/ aus (Funktionen, http.ts, crons.ts, schema.ts). Er weiß, welche Konstruktoren öffentlich und welche intern sind, liest Handler-Parameter in Pfeil-, Funktions- und Methodenschreibweise (sowie benannte Handler, die in derselben Datei deklariert sind), folgt Import-Aliasen und wertet ctx.auth, getAuthUserId, Auth-Hilfsfunktionen, die ctx erhalten, eigene Funktions-Wrapper sowie Argumente namens secret, key oder code als Zugriffsprüfungen, sodass die Convex-Auth- und Clerk-Setups aus der Dokumentation ohne Befund durchlaufen. Aufrufe anderer Funktionen über ctx.runMutation und Komponentenaufrufe wie ein Rate Limiter werden nicht mit Auth-Prüfungen verwechselt, und Webhook-Routen brauchen einen echten Verifizierungsaufruf, nicht nur einen Namen, in dem webhook vorkommt. Er führt Ihren Code nie aus und verbindet sich nie mit einem Deployment. Er liefert BLOCK, REVIEW oder NOT FLAGGED mit Datei, Zeile, Begründung und einem sichereren Ansatz, und der Regelleitfaden verlinkt für jede Regel die zugrunde liegende offizielle Seite. Secrets werden nie ausgegeben.

Was geprüft wird

BLOCK (vor der Auslieferung beheben)

  • C01: API-Schlüssel, Tokens und Passwörter im Convex-Code: Konstanten und Eigenschaften mit Secret-Namen, Authorization-Header, literale Fallback-Werte nach process.env, bekannte Schlüsselformate (geheime Schlüssel von Stripe und Clerk, Webhook-Secrets, Schlüssel von OpenAI, Anthropic, GitHub, Slack, Google und AWS, Convex-Deploy-Keys einschließlich Preview-Keys, Admin-Keys für Self-Hosting, private Schlüssel) sowie Passwörter in Datenbank-URLs
  • C02: eine öffentliche Mutation, die ein Dokument anhand einer ID aus ihren Argumenten ändert, ersetzt oder löscht, ohne den Aufrufer zu prüfen
  • C03: Anmeldedaten für jeden Origin erlaubt: corsRouter mit allowCredentials und Standard-Origins, "*" oder Platzhaltern für gemeinsam genutzte Hosts wie "*.vercel.app", oder ein zurückgegebener Origin-Header mit Access-Control-Allow-Credentials ohne Prüfung (oder nur mit einer startsWith-Prüfung)

REVIEW (vor dem Release prüfen)

  • C11: eine öffentliche Mutation oder Action, die nie prüft, wer sie aufruft (Speichern über ctx.runMutation oder der Aufruf einer Komponente gilt nicht als Prüfung)
  • C12: eine öffentliche Funktion, die ihre Argumente ohne args-Validator liest
  • C13: api.*-Funktionen, die eingeplant, mit ctx.runQuery / runMutation / runAction ausgeführt oder von Cron-Jobs aufgerufen werden statt internal.*
  • C14: .filter in einer Datenbankabfrage statt eines Index (paginierte Abfragen ausgenommen)
  • C15: .collect() auf einer Abfrage ohne Indexbereich
  • C16: Date.now() oder new Date() innerhalb einer Query
  • C17: eine HTTP-Action, die Daten schreibt, Aufgaben einplant oder Dateien speichert, ohne ctx.auth, ohne Prüfung eines Authorization- oder Signatur-Headers und ohne Verifizierungsaufruf (svix, jwt, stripe constructEvent, HMAC)
  • C18: Schreibvorgänge mit ctx.db, Scheduler-Aufrufe oder ctx.runMutation / runAction ohne await
  • C19: ein zurückgegebener Origin mit Anmeldedaten, dessen einzige Prüfung lückenhaft oder unklar ist (endsWith ohne führenden Punkt, includes, ein nicht verankerter regulärer Ausdruck)

Lieferumfang

  • Der Scanner (Python 3.9+, nur Standardbibliothek)
  • Ein Regelleitfaden mit Begründung, sichererem Ansatz und offizieller Quelle für jede Regel
  • Ein riskantes und ein sicheres Beispiel-Backend mit Convex (Aufgaben, eine KI-Action, Cron-Jobs und HTTP-Routen) sowie der echte Bericht, den der Scanner für das riskante Beispiel erzeugt

Einschränkungen

Der Scanner liest jede Datei für sich. Per Name übergebene Handler werden nur verfolgt, wenn sie in derselben Datei deklariert sind. Bei Hilfsfunktionen und eigenen Funktions-Wrappern aus anderen Dateien wird angenommen, dass sie die Prüfungen durchführen, die ihre Namen nahelegen. Daher werden mit customMutation, authedMutation oder Ents erstellte Funktionen sowie aus anderen Dateien importierte Handler nicht auf fehlende Auth-Prüfung oder fehlende Validatoren geprüft. Abfragen, die über mehrere Anweisungen hinweg aufgebaut werden, Row-Level-Security-Regeln sowie Allowlists oder CORS-Einstellungen in anderen Dateien werden nicht verfolgt, und Client-Code, .env-Dateien und Dashboard-Einstellungen werden nicht gelesen. NOT FLAGGED ist keine Garantie.

Inhalt

Eine ZIP-Datei mit 19 Dateien: SKILL.md, der Scanner in scripts/ (6 Python-Dateien), references/rules.md (jede Regel mit Begründung und sichererem Ansatz) und examples/ (10 Beispieldateien sowie report.md, die echte Scanner-Ausgabe für das riskante Beispiel).

Verwendung: Dies ist ein Agent-Skill: ein Ordner mit einer Datei SKILL.md und Python-Skripten, die ein KI-Coding-Agent wie Claude Code, Cursor oder Codex CLI ausführen kann. Entpacken Sie ihn in den Skills-Ordner Ihres Agenten (für Claude Code: ~/.claude/skills/) und bitten Sie dann Ihren Agenten, Ihr Projekt zu prüfen. Die Skripte laufen auch eigenständig mit Python 3.9 oder neuer, ohne dass etwas installiert werden muss. Sie lesen nur Ihre Dateien: kein Netzwerkzugriff, und nichts wird irgendwohin gesendet.

Das bekommst du

1 Datei · 43.88 KB

  • convex-functions-check-1.0.0.zipZIP · 43.88 KB
LizenzKommerzielle Nutzung erlaubt
PaketprüfungBestanden

Getly hat die hochgeladenen Dateien geöffnet und nichts gefunden, was das Öffnen verhindern würde. Das ist kein Virenscan und keine Qualitätsbewertung.

Veröffentlicht12. Nov. 2026
Dateigröße43.88 KB
DateiformatZIP
Versionv1.0

Tags

convexbackendtypescriptsecuritydatabaseai agent skill
R
RR HH

Häufige Fragen

Erhalte ich sofort Zugriff?

Ja. Dies ist ein digitales Produkt - du kannst es direkt nach dem Kauf aus deiner Bibliothek herunterladen.

Darf ich es für kommerzielle Projekte nutzen?

Ja. Kommerzielle Nutzung ist erlaubt: im eigenen Business und in dem, was du verkaufst. Die Datei selbst darfst du nicht weiterverkaufen oder verbreiten.

Wie sind die Rückerstattungsbedingungen?

Du kannst innerhalb von 30 Tagen eine Rückerstattung anfordern. Stimmt etwas nicht, fordere sie bei deiner Bestellung an - das Getly-Team prüft sie.

Welche Dateiformate und -größen erhalte ich?

Du lädst 1 Datei herunter - ZIP - insgesamt 43.88 KB.

Erhalte ich kostenlose Updates?

Ja - wenn der Verkäufer eine neue Version veröffentlicht, kannst du die aktuellen Dateien kostenlos erneut aus deiner Bibliothek herunterladen. Aktuelle Änderungen findest du im Changelog.

Preis

$5.00