apiKey clientseitig vorhanden: Der Anbieter sendet ihn beim Laden Ihrer App an den Wallet-Bootstrap (/waas/config). Dies wird für ein clientseitiges SDK erwartet. Diese Seite erklärt genau, was dieser Schlüssel kann und nicht kann, und wie Sie ihn absichern.
Was der Schlüssel kann — und nicht kann
Fangen Sie hier an, denn das ist der Teil, der leicht falsch gemacht werden kann: Der Helius-API-Schlüssel ist ein RPC/credits-Anmeldedaten, kein Wallet-Schlüssel. Ein geleakter Schlüssel kann nicht:- Transaktionen oder Nachrichten signieren,
- Geldmittel bewegen oder darauf zugreifen oder
- auf das eingebettete Wallet eines Benutzers zugreifen.
Auch die Offenlegung ist kein Abrechnungs-Bypass. WaaS-Signaturen werden
in dem Moment gemessen, in dem das eingebettete Wallet signiert, nicht auf der API-Schlüsselschicht — ein geleakter Schlüssel kann keine kostenfreien Signaturen
erstellen oder Signaturen von einer anderen Website abrechnen. Die Messung
hängt nicht von der Geheimhaltung des Schlüssels ab.
Absichern
Diese Ebenen reichen vom geringsten Aufwand bis zur härtesten Grenze. Die erste ist die erforderliche Basislinie; stapeln Sie den Rest nach Bedarf und Risikobereitschaft.1. Beschränken Sie Ihren Schlüssel auf Domains (erforderlich)
Sichern Sie den Schlüssel auf die Ursprünge, auf denen Ihre App läuft, sodass ein aus Ihrem Bundle geschrappter Schlüssel von anderswo nutzlos ist.1
Öffnen Sie die RPC-Zugriffskontrolle
Gehen Sie im Dashboard unter
RPCs zu Ihrem Schlüssel und öffnen Sie Zugriffskontrolle.
2
Fügen Sie Ihre Domains zu den erlaubten Domains hinzu
Fügen Sie jeden Ursprung hinzu, von dem Ihre App bedient wird — Produktion, Staging und Vorschau:
3
Verwenden Sie einen separaten Schlüssel für jede Umgebung
Behalten Sie einen eigenen Schlüssel für lokal, Staging und Produktion, damit Sie einen
rotieren können, ohne die anderen herunterzufahren.
Domain-Whitelist stoppt browserbasierte Missbräuche, nicht ein entschlossenes Skript. Die
Überprüfung liest den Header
Origin/Referer der Anfrage — ein Browser setzt ihn
ehrlich, aber ein Nicht-Browser-Client (z. B. curl -H "Origin: yourdapp.com") kann
ihn fälschen. Dies gilt für jeden clientseitigen API-Schlüssel, nicht nur Helius.
Die Domain-Beschränkung stoppt zuverlässig den häufigen Fall — dass Ihr Schlüssel auf
einer anderen Website erscheint — aber für eine Grenze, die nicht gefälscht werden kann, verwenden Sie einen
serverseitigen Schlüssel, der auf Ihre IPs/CIDRs beschränkt ist (Schritt 4).2. Sichere RPC-URLs ohne Schlüssel (automatisch)
Der RPC-Verkehr überträgt Ihren Schlüssel überhaupt nicht. Das SDK löst die schlüssellose sichere RPC-URL Ihres Projekts beim Bootstrap automatisch auf und verwendet sie fürconnection-Anrufe — es muss nichts konfiguriert werden.
Da diese URLs keinen Schlüssel enthalten, gibt es nichts in einer RPC-Anfrage zu extrahieren, und sie sind auf 5 RPS pro IP begrenzt — ihre Schutz hängt also nicht von Origin-Überprüfungen ab. (Verfügbar in kostenpflichtigen Plänen; wenn ein Projekt keine sichere RPC-URL hat, fällt RPC auf den gleichnamigen Routen-Handler in Schritt 3 zurück.)
3. Verschieben Sie den Schlüssel serverseitig — serverlos
Um den Schlüssel aus dem Browser für RPC-, Sende- und Transaktionshistorie-Anrufe fernzuhalten, leiten Sie sie durch Ihren eigenen Endpunkt, der den Schlüssel aus einem serverseitigen Geheimnis einfügt. Dies ist auch der Weg, wie Sie sich für Sender-optimierten Empfang und Transaktionshistorie entscheiden. Beide Optionen sind 100 % serverlos — kein Server zu betreiben:-
Next.js-Routen-Handler — wird als serverlose Funktion (Vercel, Netlify, Cloudflare) bereitgestellt. Liest
HELIUS_API_KEYaus der Serverumgebung.app/api/helius/[...path]/route.ts -
Cloudflare Worker-Proxy — die sauberste vollständig serverlose Option: Der Schlüssel lebt in einem Worker-Geheimnis und erreicht nie den Browser.
Helius RPC Proxy
Open-Source-RPC-Proxy, den Sie mit einem Klick auf Cloudflare bereitstellen können.
4. Fügen Sie eine nicht fälschbare IP/CIDR-Grenze hinzu
Für eine Grenze, die ein Angreifer nicht fälschen kann, sichern Sie einen serverseitigen Schlüssel auf die IP-Adressen oder CIDR-Bereiche Ihres Backends. Im Gegensatz zu einemOrigin-Header kann eine Anforderungs-Quell-IP in einer normalen Verbindung nicht gefälscht werden — daher wird ein curl von überall außer Ihren Servern sofort abgelehnt.
Dies gilt nur für einen serverseitigen Schlüssel — Sie können den Browser-Schlüssel nicht auf IPs beschränken, da Ihre Benutzer sich von unvorhersehbaren IPs verbinden. Die saubere Vorgehensweise sind zwei Schlüssel:
Serverlose Funktionen haben dynamische Ausgangs-IPs, daher erfordert das Fixieren einer CIDR einen
stabilen Ausgang — einen Cloudflare-Worker mit einer dedizierten Ausgangs-IP, Vercel Secure
Compute oder ein festes-IP-NAT vorne. Ohne diese erhalten Sie immer noch den Hauptvorteil
(der Schlüssel ist serverseitig, nie im Browser); Sie fügen einfach die IP-Grenze
nicht zusätzlich hinzu.
Vergleich der Ebenen
Unabhängig von den gewählten Ebenen: Keine dieser Dinge betrifft die Schlüssel der Wallets Ihrer Benutzer — diese sind niemals betroffen.
Der Wallet-Bootstrap
Im Routen-Handler (Produktions-)Setup geht der Wallet-Bootstrap
(
/waas/config) ebenfalls durch Ihren Routen-Handler mit dem serverseitigen
Schlüssel — sodass kein Helius-Schlüssel für ihn an den Browser übertragen wird. Im
Prototyping-Setup sendet der Browser den Schlüssel für den Bootstrap;
beschränken Sie ihn auf Domains (Schritt 1). So oder so ist es der RPC-beschränkte Schlüssel — er kann
keine Wallets oder Gelder berühren.Checkliste
Bevor Sie versenden:- Client-Schlüssel ist auf Ihre genauen Ursprünge beschränkt
- Separate Schlüssel für lokal / Staging / Produktion
- Schlüssel wird aus einer Env-Variable gelesen, niemals hartcodiert
- (Optional) RPC, Senden und Historie über den serverlosen Routen-Handler oder Cloudflare Worker geleitet
- (Optional) Serverseitiger Schlüssel, der auf Ihre IPs/CIDRs festgelegt ist, für eine nicht fälschbare Grenze
Nächste Schritte
Schützen Sie Ihre Schlüssel
Vollständige Zugriffskontrollreferenz: Domains, IPs, CIDRs und Proxys.
Konfiguration
Anbieter-Konfiguration und Dashboard-Anmeldemethoden.