apiKey clientseitig vorhanden: Der Provider sendet ihn beim Laden deiner App an den Wallet-Bootstrap (/waas/config). Das ist bei einem clientseitigen SDK zu erwarten. Diese Seite erklärt genau, was dieser API key tun kann und was nicht – und wie du ihn absicherst.
Was der API key tun kann – und was nicht
Beginne hier, denn dieser Punkt wird leicht missverstanden: Der Helius API key ist ein Zugangsnachweis für RPC und Credits, kein Wallet-Schlüssel. Ein offengelegter API key kann nicht:- Transaktionen oder Nachrichten signieren,
- Guthaben verschieben oder darauf zugreifen oder
- auf das eingebettete Wallet eines Benutzers zugreifen.
Die Offenlegung umgeht auch nicht die Abrechnung. WaaS-Signaturen werden in dem
Moment erfasst, in dem das eingebettete Wallet signiert, nicht auf der Ebene des API key. Ein offengelegter API key kann
weder kostenlose Signaturen erzeugen noch Signaturen von der Website einer anderen Person abrechnen lassen. Die Erfassung
hängt nicht von der Geheimhaltung des API key ab.
Sichere ihn ab
Diese Schutzebenen reichen vom geringsten Aufwand bis zur stärksten Abgrenzung. Die erste Ebene ist die erforderliche Grundlage. Ergänze je nach Risikotoleranz die weiteren Ebenen.1. Beschränke deinen API key auf Domains (erforderlich)
Beschränke den API key auf die Origins, unter denen deine App läuft. So ist ein aus deinem Bundle ausgelesener API key an anderen Orten nutzlos.1
Open RPC Access Control
Öffne im Dashboard deinen API key im Bereich
RPCs und dann Access Control.
2
Add your domains to Allowed Domains
Füge jede Origin hinzu, über die du deine App bereitstellst – Produktion, Staging und Vorschau:
3
Use a separate key per environment
Verwende jeweils einen eigenen API key für lokale Entwicklung, Staging und Produktion. So kannst du einen davon rotieren,
ohne die anderen Umgebungen außer Betrieb zu nehmen.
Domain-Zulassungslisten verhindern Missbrauch im Browser, aber nicht durch ein gezieltes Skript. Die
Prüfung liest den
Origin/Referer-Header des request. Ein Browser setzt ihn
korrekt, aber ein Client außerhalb des Browsers, z. B. curl -H "Origin: yourdapp.com", kann
ihn fälschen. Das gilt für jeden clientseitigen API key, nicht nur für Helius.
Die Domain-Beschränkung verhindert zuverlässig den häufigsten Fall: Dein API key wird auf
einer fremden Website verwendet. Wenn du eine Grenze brauchst, die sich nicht fälschen lässt, verwende einen
serverseitigen API key, der auf deine IPs/CIDRs beschränkt ist (Schritt 4).2. Sichere RPC-URLs ohne API key (automatisch)
RPC-Datenverkehr enthält deinen API key überhaupt nicht. Das SDK ruft beim Bootstrap die sichere RPC-URL ohne API key deines Projekts ab und verwendet sie automatisch fürconnection-Aufrufe. Du musst nichts konfigurieren.
Da diese URLs keinen API key enthalten, lässt sich aus einem RPC-request nichts extrahieren. Außerdem gilt für sie ein rate limit von 5 RPS pro IP. Ihr Schutz hängt daher nicht von Origin-Prüfungen ab. Diese Funktion ist in kostenpflichtigen Tarifen verfügbar. Hat ein Projekt keine sichere RPC-URL, verwendet RPC stattdessen den Route Handler derselben Origin aus Schritt 3.
3. Verschiebe den API key auf die Serverseite – serverless
Damit der API key bei RPC-, Sende- und Transaktionsverlaufsaufrufen nicht im Browser landet, leitest du diese Aufrufe über deinen eigenen endpoint. Dieser fügt den API key aus einem serverseitigen Secret ein. Auf diese Weise aktivierst du auch die für Sender optimierte Transaktionsübermittlung und den Transaktionsverlauf. Beide Optionen sind zu 100 % serverless. Du musst keinen Server betreiben:-
Next.js route handler – wird als serverless Funktion bereitgestellt, etwa über Vercel, Netlify oder Cloudflare. Liest
HELIUS_API_KEYaus der Serverumgebung.app/api/helius/[...path]/route.ts -
Cloudflare Worker proxy – die sauberste vollständig serverless Option: Der API key liegt in einem Worker Secret und erreicht niemals den Browser.
Helius RPC Proxy
Open-Source-RPC-proxy, den du mit einem Klick auf Cloudflare bereitstellst.
4. Füge eine nicht fälschbare IP/CIDR-Grenze hinzu
Für eine Grenze, die ein Angreifer nicht fälschen kann, beschränkst du einen serverseitigen API key auf die IP-Adressen oder CIDR-Bereiche deines Backends. Anders als einOrigin-Header lässt sich die Quell-IP eines request über eine normale Verbindung nicht fälschen. Daher wird ein Aufruf per curl von jedem anderen System als deinen Servern sofort abgelehnt.
Das gilt nur für einen serverseitigen API key. Du kannst den API key im Browser nicht auf IPs beschränken, weil sich deine Benutzer über unvorhersehbare IPs verbinden. Das saubere Muster verwendet zwei API keys:
Serverless Funktionen verwenden dynamische ausgehende IPs. Um einen CIDR-Bereich festzulegen, brauchst du daher einen
stabilen ausgehenden Netzwerkpfad, etwa einen Cloudflare Worker mit dedizierter ausgehender IP, Vercel Secure
Compute oder ein NAT mit fester IP. Auch ohne eine solche Lösung erhältst du den wichtigsten Vorteil:
Der API key liegt serverseitig und niemals im Browser. Du ergänzt lediglich keine zusätzliche IP-Grenze.
Vergleich der Schutzebenen
Unabhängig davon, welche Schutzebenen du verwendest: Nichts davon betrifft die Wallet-Schlüssel deiner Benutzer. Sie spielen hierbei keine Rolle.
Der Wallet-Bootstrap
Bei der Produktionskonfiguration mit route handler läuft auch der Wallet-Bootstrap
(
/waas/config) mit dem serverseitigen API key über deinen route handler.
Daher wird auch dafür kein Helius API key an den Browser ausgeliefert. Bei der
Prototyp-Konfiguration sendet der Browser den API key für den Bootstrap.
Beschränke ihn auf deine Domains (Schritt 1). In beiden Fällen ist es der auf RPC beschränkte API key. Er kann
weder auf Wallets noch auf Guthaben zugreifen.Checkliste
Vor der Veröffentlichung:- Der clientseitige API key ist auf deine exakten Origins beschränkt
- Separate API keys für lokale Entwicklung, Staging und Produktion
- Der API key wird aus einer Umgebungsvariable gelesen und niemals hardcodiert
- (Optional) RPC-, Sende- und Verlaufsaufrufe laufen über den serverless route handler oder einen Cloudflare Worker
- (Optional) Der serverseitige API key ist auf deine IPs/CIDRs beschränkt und bildet so eine nicht fälschbare Grenze
Nächste Schritte
Protect your keys
Vollständige Referenz zur Zugriffskontrolle: Domains, IPs, CIDRs und Proxys.
Configuration
Provider-Konfiguration und Anmeldemethoden im Dashboard.